name: dropshell-build multiarch
run-name: Build test and publish dropshell-build

on: [push]

defaults:
  run:
    shell: bash

jobs:
  build:
    strategy:
      matrix:
        platform:
          - linux/amd64
          - linux/arm64
    runs-on: ${{ matrix.platform }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Login to Gitea
        uses: docker/login-action@v3
        with:
          registry: gitea.jde.nz
          username: DoesntMatter
          password: ${{ secrets.DOCKER_PUSH_TOKEN }}
      - name: Build Base
        run: |
          cd build-base && ./build.sh
      - name: Build Test Applications
        run: |
          cd tests && ./build.sh
      - name: Run Tests
        run: |
          cd tests && ./test.sh
      - name: Publish as Latest
        run: |
          cd build-base && \
          SOS_WRITE_TOKEN=${{ secrets.SOS_WRITE_TOKEN }} \
          DOCKER_PUSH_TOKEN=${{ secrets.DOCKER_PUSH_TOKEN }} \
          ./publish.sh
  create-manifest:
    needs: [build]
    runs-on: ubuntu-latest
    steps:
      - name: Create manifest list
        run: |
          docker manifest create gitea.jde.nz/public/dropshell-build-base:${GITHUB_SHA} \
            gitea.jde.nz/public/dropshell-build-base:${GITHUB_SHA}-x86_64 \
            gitea.jde.nz/public/dropshell-build-base:${GITHUB_SHA}-aarch64
          docker manifest push gitea.jde.nz/public/dropshell-build-base:${GITHUB_SHA}
          
          # Also tag as latest if on main branch
          if [ "$GITHUB_REF" = "refs/heads/main" ]; then
            docker manifest create gitea.jde.nz/public/dropshell-build-base:latest \
              gitea.jde.nz/public/dropshell-build-base:${GITHUB_SHA}-x86_64 \
              gitea.jde.nz/public/dropshell-build-base:${GITHUB_SHA}-aarch64
            docker manifest push gitea.jde.nz/public/dropshell-build-base:latest
          fi