Next triage re-baseline (r47): WOTEF/Aliens were folder-staging artif… #285
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build & publish container images | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "0 0 * * SAT" # every saturday at midnight | |
| push: | |
| branches: | |
| - "main" | |
| env: | |
| REGISTRY: ghcr.io | |
| jobs: | |
| build-image: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - context: ./ | |
| dockerfile: ./apps/web/Dockerfile | |
| image: ghcr.io/stever/zxcode | |
| - context: ./apps/proxy/ | |
| dockerfile: ./apps/proxy/Dockerfile | |
| image: ghcr.io/stever/zxcode-proxy | |
| - context: ./apps/auth/ | |
| dockerfile: ./apps/auth/Dockerfile | |
| image: ghcr.io/stever/zxcode-auth | |
| # GraphQL backend (Node + Prisma, replaced Hasura). The same image | |
| # runs the api and the one-shot api-migrate service in the deploy | |
| # compose. New package; GHCR links it to this repo on first push. | |
| - context: ./ | |
| dockerfile: ./apps/api/Dockerfile | |
| image: ghcr.io/stever/zxcode-api | |
| # Boriel ZX Basic compile API (migrated from the standalone | |
| # zxcode-api-zxbasic repo). Keeps the original image name so the | |
| # deploy is unchanged; needs this repo's Actions write access to the | |
| # stever/zxcode-api-zxbasic GHCR package. | |
| - context: ./apps/zxbasic/ | |
| dockerfile: ./apps/zxbasic/Dockerfile | |
| image: ghcr.io/stever/zxcode-api-zxbasic | |
| # z88dk C compile API (migrated from the standalone zxcode-api-z88dk | |
| # repo). Keeps the original image name so the deploy is unchanged; | |
| # needs this repo's Actions write access to the | |
| # stever/zxcode-api-z88dk GHCR package. | |
| - context: ./apps/z88dk/ | |
| dockerfile: ./apps/z88dk/Dockerfile | |
| image: ghcr.io/stever/zxcode-api-z88dk | |
| # sjasmplus Z80 assembler compile API. New package; GHCR links it to | |
| # this repo automatically on first push. | |
| - context: ./apps/sjasmplus/ | |
| dockerfile: ./apps/sjasmplus/Dockerfile | |
| image: ghcr.io/stever/zxcode-api-sjasmplus | |
| # Pasta80 Turbo Pascal compile API. New package; GHCR links it to | |
| # this repo automatically on first push. | |
| - context: ./apps/pasta80/ | |
| dockerfile: ./apps/pasta80/Dockerfile | |
| image: ghcr.io/stever/zxcode-api-pasta80 | |
| - context: ./ | |
| dockerfile: ./apps/gif-service/Dockerfile | |
| image: ghcr.io/stever/zxcode-gif-service | |
| - context: ./ | |
| dockerfile: ./apps/mastodon-bot/Dockerfile | |
| image: ghcr.io/stever/zxcode-mastodon-bot | |
| # zxplay.org. Keeps the original ghcr.io/stever/zxplay image name so the | |
| # existing deploy is unchanged; requires granting this repo Actions | |
| # write access to the stever/zxplay package in GHCR. | |
| - context: ./ | |
| dockerfile: ./apps/play/Dockerfile | |
| image: ghcr.io/stever/zxplay | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v5 | |
| - name: Extract metadata (tags, labels) for Docker | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ matrix.image }} | |
| tags: | | |
| # Apply 'latest' tag on main branch. | |
| # NOTE: This behaviour is used by default only on the 'master' branch. Otherwise branch name is used! | |
| type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} | |
| - name: Log in to the Container registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: ${{ matrix.context }} | |
| file: ${{ matrix.dockerfile }} | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} |