51 lines
1.6 KiB
YAML
51 lines
1.6 KiB
YAML
name: Docker
|
|
|
|
on:
|
|
push:
|
|
branches: [main, master]
|
|
pull_request:
|
|
branches: [main, master]
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
|
|
- name: Select Docker platforms
|
|
id: docker-platforms
|
|
shell: bash
|
|
run: |
|
|
if [ "${ACT:-}" = "true" ] || [ "${GITEA_ACTIONS:-}" = "true" ]; then
|
|
echo "platforms=linux/amd64" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "platforms=linux/amd64,linux/arm64" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
- name: Set up QEMU
|
|
if: ${{ steps.docker-platforms.outputs.platforms != 'linux/amd64' }}
|
|
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4
|
|
|
|
# Production hardening: add dependency and image scanning before publishing,
|
|
# for example cargo-audit plus a container scanner such as Sysdig or Trivy.
|
|
- name: Build multi-arch image
|
|
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7
|
|
with:
|
|
context: .
|
|
platforms: ${{ steps.docker-platforms.outputs.platforms }}
|
|
push: false
|
|
build-args: |
|
|
GIT_SHA=${{ github.sha }}
|
|
cache-from: type=gha,scope=docker-multiarch
|
|
cache-to: type=gha,mode=max,scope=docker-multiarch
|