Skip to content

Commit c7d8b04

Browse files
committed
add github action
1 parent 386209a commit c7d8b04

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

.github/workflows/build.yml

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
name: build
2+
on:
3+
push:
4+
branches:
5+
- main
6+
pull_request:
7+
branches:
8+
- main
9+
release:
10+
types:
11+
- created
12+
13+
env:
14+
IMAGE_OWNER: zyclonite
15+
IMAGE_NAME: sysbench
16+
17+
jobs:
18+
build:
19+
name: Build images
20+
runs-on: ubuntu-latest
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
arch: [ amd64, arm64 ]
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@v2
28+
29+
- name: Install qemu dependency
30+
run: |
31+
sudo apt-get update
32+
sudo apt-get install -y qemu-user-static
33+
34+
- name: Build Image
35+
id: build_image
36+
uses: redhat-actions/buildah-build@v2
37+
with:
38+
image: ${{ env.IMAGE_NAME }}
39+
tags: ${{ matrix.arch }}
40+
arch: ${{ matrix.arch }}
41+
dockerfiles: |
42+
./Dockerfile
43+
44+
- name: Check images created
45+
run: buildah images | grep '${{ env.IMAGE_NAME }}'
46+
47+
- name: Check image metadata
48+
run: |
49+
set -x
50+
buildah inspect ${{ steps.build_image.outputs.image }}:${{ matrix.arch }} | jq ".OCIv1.architecture"
51+
buildah inspect ${{ steps.build_image.outputs.image }}:${{ matrix.arch }} | jq ".Docker.architecture"
52+
53+
- name: Export image
54+
run: podman save -o /tmp/image.tar ${{ steps.build_image.outputs.image }}:${{ matrix.arch }}
55+
56+
- name: Upload artifact
57+
uses: actions/upload-artifact@v2
58+
with:
59+
name: image-${{ matrix.arch }}
60+
path: /tmp/image.tar
61+
62+
push:
63+
name: Publish images
64+
runs-on: ubuntu-latest
65+
needs: build
66+
environment: production
67+
steps:
68+
- name: Download artifacts
69+
uses: actions/download-artifact@v2
70+
71+
- name: Import images
72+
run: |
73+
podman load -i ./image-amd64/image.tar
74+
podman load -i ./image-arm64/image.tar
75+
76+
- name: Create multi-arch manifest
77+
run: |
78+
buildah manifest create ${{ env.IMAGE_NAME }}:latest
79+
buildah manifest add --arch amd64 ${{ env.IMAGE_NAME }}:latest ${{ env.IMAGE_NAME }}:amd64
80+
buildah manifest add --arch arm64 --variant v8 ${{ env.IMAGE_NAME }}:latest ${{ env.IMAGE_NAME }}:arm64
81+
82+
- name: Push unstable images
83+
if: ${{ github.event_name == 'push' }}
84+
run: |
85+
buildah manifest push --all --format v2s2 --creds zyclonite:${{ secrets.DOCKERHUB_PASSWORD }} ${{ env.IMAGE_NAME }}:latest docker://docker.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:main
86+
buildah manifest push --all --creds zyclonite:${{ secrets.QUAY_PASSWORD }} ${{ env.IMAGE_NAME }}:latest docker://quay.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:main
87+
88+
- name: Push stable images
89+
if: ${{ github.event_name == 'release' }}
90+
run: |
91+
buildah manifest push --all --format v2s2 --creds zyclonite:${{ secrets.DOCKERHUB_PASSWORD }} ${{ env.IMAGE_NAME }}:latest docker://docker.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:latest
92+
buildah manifest push --all --format v2s2 --creds zyclonite:${{ secrets.DOCKERHUB_PASSWORD }} ${{ env.IMAGE_NAME }}:latest docker://docker.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }}
93+
buildah manifest push --all --creds zyclonite:${{ secrets.QUAY_PASSWORD }} ${{ env.IMAGE_NAME }}:latest docker://quay.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:latest
94+
buildah manifest push --all --creds zyclonite:${{ secrets.QUAY_PASSWORD }} ${{ env.IMAGE_NAME }}:latest docker://quay.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }}

0 commit comments

Comments
 (0)