123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- on:
- workflow_call:
- inputs:
- platforms:
- required: true
- type: string
- cache:
- type: boolean
- default: true
- use_native_arm64_builder:
- type: boolean
- push_to_images:
- type: string
- version_prerelease:
- type: string
- version_metadata:
- type: string
- flavor:
- type: string
- tags:
- type: string
- labels:
- type: string
- file_to_build:
- type: string
- jobs:
- build-image:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: docker/setup-qemu-action@v3
- if: contains(inputs.platforms, 'linux/arm64') && !inputs.use_native_arm64_builder
- - uses: docker/setup-buildx-action@v3
- id: buildx
- if: ${{ !(inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')) }}
- - name: Start a local Docker Builder
- if: inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')
- run: |
- docker run --rm -d --name buildkitd -p 1234:1234 --privileged moby/buildkit:latest --addr tcp://0.0.0.0:1234
- - uses: docker/setup-buildx-action@v3
- id: buildx-native
- if: inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')
- with:
- driver: remote
- endpoint: tcp://localhost:1234
- platforms: linux/amd64
- append: |
- - endpoint: tcp://${{ vars.DOCKER_BUILDER_HETZNER_ARM64_01_HOST }}:13865
- platforms: linux/arm64
- name: mastodon-docker-builder-arm64-01
- driver-opts:
- - servername=mastodon-docker-builder-arm64-01
- env:
- BUILDER_NODE_1_AUTH_TLS_CACERT: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_CACERT }}
- BUILDER_NODE_1_AUTH_TLS_CERT: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_CERT }}
- BUILDER_NODE_1_AUTH_TLS_KEY: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_KEY }}
- - name: Log in to Docker Hub
- if: contains(inputs.push_to_images, 'tootsuite')
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
- - name: Log in to the GitHub Container registry
- if: contains(inputs.push_to_images, 'ghcr.io')
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- - uses: docker/metadata-action@v5
- id: meta
- if: ${{ inputs.push_to_images != '' }}
- with:
- images: ${{ inputs.push_to_images }}
- flavor: ${{ inputs.flavor }}
- tags: ${{ inputs.tags }}
- labels: ${{ inputs.labels }}
- - uses: docker/build-push-action@v6
- with:
- context: .
- file: ${{ inputs.file_to_build }}
- build-args: |
- MASTODON_VERSION_PRERELEASE=${{ inputs.version_prerelease }}
- MASTODON_VERSION_METADATA=${{ inputs.version_metadata }}
- SOURCE_COMMIT=${{ github.sha }}
- platforms: ${{ inputs.platforms }}
- provenance: false
- builder: ${{ steps.buildx.outputs.name || steps.buildx-native.outputs.name }}
- push: ${{ inputs.push_to_images != '' }}
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- cache-from: ${{ inputs.cache && 'type=gha' || '' }}
- cache-to: ${{ inputs.cache && 'type=gha,mode=max' || '' }}
|