1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-12-23 22:11:10 +02:00
Files
imgproxy/.github/workflows/build.yml
2025-03-31 20:23:35 +03:00

117 lines
3.2 KiB
YAML

name: Build
on:
workflow_call:
env:
DOCKER_META_IMAGES: |
darthsim/imgproxy
ghcr.io/imgproxy/imgproxy
DOCKER_META_TAGS: |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/master' }}
type=ref,event=branch,enable=${{ startsWith(github.ref, 'refs/heads/test/') }}
type=ref,event=tag
type=semver,pattern=v{{major}}.{{minor}}
type=semver,pattern=v{{major}}
jobs:
build:
if: github.repository_owner == 'imgproxy'
strategy:
matrix:
build:
- arch: amd64
dockerPlatform: linux/amd64
image: linux-5.0
- arch: arm64
dockerPlatform: linux/arm64/v8
image: arm-3.0
runs-on:
- codebuild-imgproxy-${{ github.run_id }}-${{ github.run_attempt }}
- image:${{ matrix.build.image }}
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKER_META_IMAGES }}
tags: ${{ env.DOCKER_META_TAGS }}
flavor: |
latest=false
suffix=-${{ matrix.build.arch }}
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ./docker/Dockerfile
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.build.dockerPlatform }}
provenance: false
push: true
push_manifests:
needs: build
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKER_META_IMAGES }}
tags: ${{ env.DOCKER_META_TAGS }}
flavor: |
latest=false
env:
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push manifests
run: |
ANNOTATIONS=""
for annotation in "${{ join(fromJSON(steps.meta.outputs.json).annotations, '" "') }}"
do
ANNOTATIONS="$ANNOTATIONS --annotation '$annotation'";
done
for tag in ${{ join(fromJSON(steps.meta.outputs.json).tags, ' ') }}
do
sh -c "docker buildx imagetools create ${ANNOTATIONS} -t $tag ${tag}-amd64 ${tag}-arm64"
done