# Continuous integration on git.menzel.center (Gitea Actions). # # Builds and pushes the three images to this instance's container registry # on every push to main: backend, frontend, and agent (which is built FROM # the backend image - see agent/Dockerfile - so it has to come after). # # Runs on ubuntu-latest, not the docker label: that label's image is a bare # docker:24-dind with no Node/bash, which breaks actions/checkout (a JS # action). ubuntu-latest has both a shell and the Docker CLI, talking to the # host daemon through the socket the runner passes in. name: CI on: push: branches: [main] env: REGISTRY: git.menzel.center/menzeljonas jobs: build-and-push: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: token: ${{ secrets.CI_TOKEN }} - name: Log in to the registry run: | echo "${{ secrets.CI_TOKEN }}" | docker login git.menzel.center -u menzeljonas --password-stdin - name: Build and push backend run: | docker build -t "$REGISTRY/stackpilot-backend:latest" ./backend docker push "$REGISTRY/stackpilot-backend:latest" - name: Build and push frontend run: | docker build -t "$REGISTRY/stackpilot-frontend:latest" ./frontend docker push "$REGISTRY/stackpilot-frontend:latest" # Uses the backend image just pushed above as its base (already in the # local Docker cache from that step, so this doesn't need to pull it). - name: Build and push agent run: | docker build \ --build-arg "BACKEND_IMAGE=$REGISTRY/stackpilot-backend:latest" \ -t "$REGISTRY/stackpilot-agent:latest" \ ./agent docker push "$REGISTRY/stackpilot-agent:latest"