Skip to content

Commit d55417b

Browse files
committed
Publish ARM v7/v8 multi-arch image to GHCR
1 parent 0d50de8 commit d55417b

File tree

1 file changed

+46
-23
lines changed

1 file changed

+46
-23
lines changed

.github/workflows/release.yml

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,15 @@ jobs:
1111
- uses: actions/checkout@v2
1212
- name: Setup Kustomize
1313
uses: fluxcd/pkg/actions/kustomize@master
14-
- name: Get version
15-
id: get_version
16-
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
17-
- name: Generate release asset
14+
- name: Prepare
15+
id: prep
1816
run: |
19-
mkdir -p config/release
20-
cp config/default/* config/release
21-
cd config/release
22-
kustomize edit set image fluxcd/source-controller=fluxcd/source-controller:${{ steps.get_version.outputs.VERSION }}
23-
kustomize build . > source-controller.yaml
17+
VERSION=sha-${GITHUB_SHA::8}
18+
if [[ $GITHUB_REF == refs/tags/* ]]; then
19+
VERSION=${GITHUB_REF/refs\/tags\//}
20+
fi
21+
echo ::set-output name=BUILD_DATE::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
22+
echo ::set-output name=VERSION::${VERSION}
2423
- name: Setup QEMU
2524
uses: docker/setup-qemu-action@v1
2625
with:
@@ -41,35 +40,58 @@ jobs:
4140
with:
4241
username: fluxcdbot
4342
password: ${{ secrets.DOCKER_FLUXCD_PASSWORD }}
44-
- name: Publish amd64 image
43+
- name: Publish AMD64 image
4544
uses: docker/build-push-action@v2
4645
with:
47-
push: ${{ github.event_name != 'pull_request' }}
46+
push: true
4847
builder: ${{ steps.buildx.outputs.name }}
4948
context: .
5049
file: ./Dockerfile
5150
platforms: linux/amd64
5251
tags: |
53-
ghcr.io/fluxcd/source-controller:${{ steps.get_version.outputs.VERSION }}
54-
docker.io/fluxcd/source-controller:${{ steps.get_version.outputs.VERSION }}
55-
- name: Publish arm64 image
52+
ghcr.io/fluxcd/source-controller:${{ steps.prep.outputs.VERSION }}
53+
docker.io/fluxcd/source-controller:${{ steps.prep.outputs.VERSION }}
54+
labels: |
55+
org.opencontainers.image.title=${{ github.event.repository.name }}
56+
org.opencontainers.image.description=${{ github.event.repository.description }}
57+
org.opencontainers.image.url=${{ github.event.repository.html_url }}
58+
org.opencontainers.image.revision=${{ github.sha }}
59+
org.opencontainers.image.version=${{ steps.prep.outputs.VERSION }}
60+
org.opencontainers.image.created=${{ steps.prep.outputs.BUILD_DATE }}
61+
- name: Publish ARM image
5662
uses: docker/build-push-action@v2
5763
with:
58-
push: ${{ github.event_name != 'pull_request' }}
64+
push: true
5965
builder: ${{ steps.buildx.outputs.name }}
6066
context: .
6167
file: ./Dockerfile
62-
platforms: linux/arm64
63-
tags: ghcr.io/fluxcd/source-controller-arm64:${{ steps.get_version.outputs.VERSION }}
68+
platforms: linux/arm/v7,linux/arm64
69+
tags: |
70+
ghcr.io/fluxcd/source-controller-arm64:${{ steps.prep.outputs.VERSION }}
71+
labels: |
72+
org.opencontainers.image.title=${{ github.event.repository.name }}
73+
org.opencontainers.image.description=${{ github.event.repository.description }}
74+
org.opencontainers.image.url=${{ github.event.repository.html_url }}
75+
org.opencontainers.image.revision=${{ github.sha }}
76+
org.opencontainers.image.version=${{ steps.prep.outputs.VERSION }}
77+
org.opencontainers.image.created=${{ steps.prep.outputs.BUILD_DATE }}
6478
- name: Check images
6579
run: |
66-
docker buildx imagetools inspect docker.io/fluxcd/source-controller:${{ steps.get_version.outputs.VERSION }}
67-
docker buildx imagetools inspect ghcr.io/fluxcd/source-controller:${{ steps.get_version.outputs.VERSION }}
68-
docker buildx imagetools inspect ghcr.io/fluxcd/source-controller-arm64:${{ steps.get_version.outputs.VERSION }}
69-
docker pull docker.io/fluxcd/source-controller:${{ steps.get_version.outputs.VERSION }}
70-
docker pull ghcr.io/fluxcd/source-controller:${{ steps.get_version.outputs.VERSION }}
71-
docker pull ghcr.io/fluxcd/source-controller-arm64:${{ steps.get_version.outputs.VERSION }}
80+
docker buildx imagetools inspect docker.io/fluxcd/source-controller:${{ steps.prep.outputs.VERSION }}
81+
docker buildx imagetools inspect ghcr.io/fluxcd/source-controller:${{ steps.prep.outputs.VERSION }}
82+
docker buildx imagetools inspect ghcr.io/fluxcd/source-controller-arm64:${{ steps.prep.outputs.VERSION }}
83+
docker pull docker.io/fluxcd/source-controller:${{ steps.prep.outputs.VERSION }}
84+
docker pull ghcr.io/fluxcd/source-controller:${{ steps.prep.outputs.VERSION }}
85+
- name: Generate release asset
86+
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
87+
run: |
88+
mkdir -p config/release
89+
cp config/default/* config/release
90+
cd config/release
91+
kustomize edit set image fluxcd/source-controller=fluxcd/source-controller:${{ steps.get_version.outputs.VERSION }}
92+
kustomize build . > source-controller.yaml
7293
- name: Create release
94+
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
7395
id: create_release
7496
uses: actions/create-release@latest
7597
env:
@@ -82,6 +104,7 @@ jobs:
82104
body: |
83105
[CHANGELOG](https://github.com/fluxcd/source-controller/blob/master/CHANGELOG.md)
84106
- name: Upload artifacts
107+
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
85108
id: upload-release-asset
86109
uses: actions/upload-release-asset@v1
87110
env:

0 commit comments

Comments
 (0)