forked from TrueCloudLab/restic
bd3816fa14
The binaries accidentally included VCS information whereas binaries built from the release tarball do not. For consistency remove the .git directory before building the container on Github.
66 lines
1.9 KiB
YAML
66 lines
1.9 KiB
YAML
|
|
name: Create and publish a Docker image
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
branches:
|
|
- 'master'
|
|
|
|
env:
|
|
REGISTRY: ghcr.io
|
|
IMAGE_NAME: ${{ github.repository }}
|
|
|
|
jobs:
|
|
build-and-push-image:
|
|
if: github.repository == 'restic/restic'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Log in to the Container registry
|
|
uses: docker/login-action@b4bedf8053341df3b5a9f9e0f2cf4e79e27360c6
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Extract metadata (tags, labels) for Docker
|
|
id: meta
|
|
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
|
|
with:
|
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
tags: |
|
|
type=ref,event=branch
|
|
type=semver,pattern={{version}}
|
|
type=semver,pattern={{major}}.{{minor}}
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226
|
|
|
|
- name: Ensure consistent binaries
|
|
run: |
|
|
echo "removing git directory for consistency with release binaries"
|
|
rm -rf .git
|
|
# remove VCS information from release builds, keep VCS for nightly builds on master
|
|
if: github.ref != 'refs/heads/master'
|
|
|
|
- name: Build and push Docker image
|
|
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
|
with:
|
|
push: true
|
|
context: .
|
|
file: docker/Dockerfile.release
|
|
platforms: linux/386,linux/amd64,linux/arm,linux/arm64
|
|
pull: true
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|