| name: Make docker images
|
|
|
| on:
|
| push:
|
| tags:
|
| - "v*"
|
|
|
| jobs:
|
| build:
|
| runs-on: ubuntu-latest
|
| strategy:
|
| fail-fast: false
|
| max-parallel: 5
|
| matrix:
|
| include:
|
|
|
| - image: henrygd/beszel
|
| dockerfile: ./internal/dockerfile_hub
|
| registry: docker.io
|
| username_secret: DOCKERHUB_USERNAME
|
| password_secret: DOCKERHUB_TOKEN
|
| 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' }}
|
|
|
|
|
| - image: henrygd/beszel-agent
|
| dockerfile: ./internal/dockerfile_agent_alpine
|
| registry: docker.io
|
| username_secret: DOCKERHUB_USERNAME
|
| password_secret: DOCKERHUB_TOKEN
|
| tags: |
|
| type=raw,value=alpine
|
| type=semver,pattern={{version}}-alpine
|
| type=semver,pattern={{major}}.{{minor}}-alpine
|
| type=semver,pattern={{major}}-alpine
|
|
|
|
|
| - image: henrygd/beszel-agent-nvidia
|
| dockerfile: ./internal/dockerfile_agent_nvidia
|
| platforms: linux/amd64
|
| registry: docker.io
|
| username_secret: DOCKERHUB_USERNAME
|
| password_secret: DOCKERHUB_TOKEN
|
| 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' }}
|
|
|
|
|
| - image: henrygd/beszel-agent-intel
|
| dockerfile: ./internal/dockerfile_agent_intel
|
| platforms: linux/amd64
|
| registry: docker.io
|
| username_secret: DOCKERHUB_USERNAME
|
| password_secret: DOCKERHUB_TOKEN
|
| 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' }}
|
|
|
|
|
| - image: ghcr.io/${{ github.repository }}/beszel
|
| dockerfile: ./internal/dockerfile_hub
|
| registry: ghcr.io
|
| username: ${{ github.actor }}
|
| password_secret: GITHUB_TOKEN
|
| 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' }}
|
|
|
|
|
| - image: ghcr.io/${{ github.repository }}/beszel-agent
|
| dockerfile: ./internal/dockerfile_agent
|
| registry: ghcr.io
|
| username: ${{ github.actor }}
|
| password_secret: GITHUB_TOKEN
|
| tags: |
|
| type=raw,value=edge
|
| type=raw,value=latest
|
| type=semver,pattern={{version}}
|
| type=semver,pattern={{major}}.{{minor}}
|
| type=semver,pattern={{major}}
|
| type=raw,value={{sha}},enable=${{ github.ref_type != 'tag' }}
|
|
|
|
|
| - image: ghcr.io/${{ github.repository }}/beszel-agent-nvidia
|
| dockerfile: ./internal/dockerfile_agent_nvidia
|
| platforms: linux/amd64
|
| registry: ghcr.io
|
| username: ${{ github.actor }}
|
| password_secret: GITHUB_TOKEN
|
| 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' }}
|
|
|
|
|
| - image: ghcr.io/${{ github.repository }}/beszel-agent-intel
|
| dockerfile: ./internal/dockerfile_agent_intel
|
| platforms: linux/amd64
|
| registry: ghcr.io
|
| username: ${{ github.actor }}
|
| password_secret: GITHUB_TOKEN
|
| 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' }}
|
|
|
|
|
| - image: ghcr.io/${{ github.repository }}/beszel-agent
|
| dockerfile: ./internal/dockerfile_agent_alpine
|
| registry: ghcr.io
|
| username: ${{ github.actor }}
|
| password_secret: GITHUB_TOKEN
|
| tags: |
|
| type=raw,value=alpine
|
| type=semver,pattern={{version}}-alpine
|
| type=semver,pattern={{major}}.{{minor}}-alpine
|
| type=semver,pattern={{major}}-alpine
|
|
|
|
|
| - image: henrygd/beszel-agent
|
| dockerfile: ./internal/dockerfile_agent
|
| registry: docker.io
|
| username_secret: DOCKERHUB_USERNAME
|
| password_secret: DOCKERHUB_TOKEN
|
| 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' }}
|
|
|
| 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 ./internal/site
|
|
|
| - name: Build site
|
| run: bun run --cwd ./internal/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: ${{ matrix.tags }}
|
|
|
|
|
| - name: Login to Docker Hub
|
| env:
|
| password_secret_exists: ${{ secrets[matrix.password_secret] != '' && 'true' || 'false' }}
|
| if: github.event_name != 'pull_request' && env.password_secret_exists == 'true'
|
| uses: docker/login-action@v3
|
| with:
|
| username: ${{ matrix.username || secrets[matrix.username_secret] }}
|
| password: ${{ secrets[matrix.password_secret] }}
|
| registry: ${{ matrix.registry }}
|
|
|
|
|
|
|
| - name: Build and push Docker image
|
| uses: docker/build-push-action@v5
|
| with:
|
| context: ./
|
| file: ${{ matrix.dockerfile }}
|
| platforms: ${{ matrix.platforms || 'linux/amd64,linux/arm64,linux/arm/v7' }}
|
| push: ${{ github.ref_type == 'tag' && secrets[matrix.password_secret] != '' }}
|
| tags: ${{ steps.metadata.outputs.tags }}
|
| labels: ${{ steps.metadata.outputs.labels }}
|
|
|