name: build-container on: push: branches: [main] tags: ['v*'] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # Start the real server and call every endpoint; a missing function or a crash stops the build here. - uses: actions/setup-node@v4 with: node-version: 22 - run: npm ci - run: npm audit --omit=dev --audit-level=high - run: node tools/smoke-test.js - run: node tools/tasks-test.js # repeating tasks and subtasks - run: node tools/push-test.js # reminders: when they are sent, never twice - run: node tools/users-test.js # accounts: private data, tab limits, invites, migration - run: node tools/plex-test.js # Plex sign-in stays signed in and repairs itself - run: node tools/player-test.js # music player: queue, shuffle/repeat, stall recovery - run: node tools/lyrics-test.js # lyrics: formats, wrong matches refused, remembered - run: node tools/signal-test.js # Signal: linking, messages, sending, live updates - run: node tools/webmail-test.js # the /webmail/ pass-through to the bundled webmail (Cypht) - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 # Repo secrets needed (Settings -> Actions -> Secrets): # REGISTRY_TOKEN a Gitea access token with write:package scope # REGISTRY_USER optional; defaults to the user who pushed - uses: docker/login-action@v3 with: registry: git.necloud.us username: ${{ secrets.REGISTRY_USER || gitea.actor }} password: ${{ secrets.REGISTRY_TOKEN }} - id: meta uses: docker/metadata-action@v5 with: images: git.necloud.us/nate/hub tags: | type=raw,value=latest,enable={{is_default_branch}} type=sha,format=short type=ref,event=tag - uses: docker/build-push-action@v6 with: context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=git.necloud.us/nate/hub:buildcache cache-to: type=registry,ref=git.necloud.us/nate/hub:buildcache,mode=max # The webmail container (official Cypht + the hub's settings) - id: meta_rc uses: docker/metadata-action@v5 with: images: git.necloud.us/nate/hub-cypht tags: | type=raw,value=latest,enable={{is_default_branch}} type=sha,format=short type=ref,event=tag - uses: docker/build-push-action@v6 with: context: ./cypht platforms: linux/amd64 push: true tags: ${{ steps.meta_rc.outputs.tags }} labels: ${{ steps.meta_rc.outputs.labels }} # The lyrics container (Lyrica, pinned) - id: meta_ly uses: docker/metadata-action@v5 with: images: git.necloud.us/nate/hub-lyrica tags: | type=raw,value=latest,enable={{is_default_branch}} type=sha,format=short type=ref,event=tag - uses: docker/build-push-action@v6 with: context: ./lyrica platforms: linux/amd64 push: true tags: ${{ steps.meta_ly.outputs.tags }} labels: ${{ steps.meta_ly.outputs.labels }}