name: Make docker images on: push: tags: - "v*" jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - image: henrygd/beszel context: ./beszel dockerfile: ./beszel/dockerfile_Hub registry: docker.io username_secret: DOCKERHUB_USERNAME password_secret: DOCKERHUB_TOKEN - image: henrygd/beszel-agent context: ./beszel dockerfile: ./beszel/dockerfile_Agent target: default-agent registry: docker.io username_secret: DOCKERHUB_USERNAME password_secret: DOCKERHUB_TOKEN - image: henrygd/beszel-agent-nvidia context: ./beszel dockerfile: ./beszel/dockerfile_Agent target: nvidia-agent registry: docker.io username_secret: DOCKERHUB_USERNAME password_secret: DOCKERHUB_TOKEN - image: ghcr.io/${{ github.repository }}/beszel context: ./beszel dockerfile: ./beszel/dockerfile_Hub registry: ghcr.io username: ${{ github.actor }} password_secret: GITHUB_TOKEN - image: ghcr.io/${{ github.repository }}/beszel-agent context: ./beszel dockerfile: ./beszel/dockerfile_Agent target: default-agent registry: ghcr.io username: ${{ github.actor }} password_secret: GITHUB_TOKEN - image: ghcr.io/${{ github.repository }}/beszel-agent-nvidia context: ./beszel dockerfile: ./beszel/dockerfile_Agent target: nvidia-agent registry: ghcr.io username: ${{ github.actor }} password_secret: GITHUB_TOKEN permissions: contents: read packages: write steps: - name: Checkout uses: actions/checkout@v4 - name: Set up bun uses: oven-sh/setup-bun@v2 - name: Install dependencies run: bun install --no-save --cwd ./beszel/site - name: Build site run: bun run --cwd ./beszel/site build - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Docker metadata id: metadata uses: docker/metadata-action@v5 with: images: ${{ matrix.image }} tags: | type=raw,value=edge type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=raw,value={{sha}},enable=${{ github.ref_type != 'tag' }} # https://github.com/docker/login-action - name: Login to Docker Hub if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: username: ${{ matrix.username || secrets[matrix.username_secret] }} password: ${{ secrets[matrix.password_secret] }} registry: ${{ matrix.registry }} # Build and push Docker image with Buildx (don't push on PR) # https://github.com/docker/build-push-action - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: "${{ matrix.context }}" file: ${{ matrix.dockerfile }} platforms: linux/amd64,linux/arm64,linux/arm/v7 push: ${{ github.ref_type == 'tag' }} tags: ${{ steps.metadata.outputs.tags }} labels: ${{ steps.metadata.outputs.labels }} target: ${{ matrix.target }}