Skip to content

Commit b82ccee

Browse files
authored
Merge pull request #244 from Desiki-high/bump-action-build
feat: build arm64 image
2 parents b3b5624 + 450e4d0 commit b82ccee

File tree

4 files changed

+121
-42
lines changed

4 files changed

+121
-42
lines changed

.github/workflows/dco-check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
steps:
1212
- name: Get PR Commits
1313
id: 'get-pr-commits'
14-
uses: tim-actions/get-pr-commits@c64db31d359214d244884dd68f971a110b29ab83
14+
uses: tim-actions/get-pr-commits@master
1515
with:
1616
token: ${{ secrets.GITHUB_TOKEN }}
1717

.github/workflows/release.yml

Lines changed: 102 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,52 +5,123 @@ on:
55
tags:
66
- 'v*'
77

8+
env:
9+
REGISTRY_IMAGE: goharbor/harbor-acceld
10+
811
jobs:
9-
release_image:
12+
build_image:
1013
runs-on: ubuntu-20.04
14+
strategy:
15+
matrix:
16+
platform:
17+
- linux/amd64
18+
- linux/arm64
1119
steps:
1220
- name: Checkout Code
1321
uses: actions/checkout@v4
14-
15-
- name: Export Image Tag
22+
- name: Prepare
1623
run: |
17-
echo "IMAGE_TAG=${GITHUB_REF_NAME}" >> $GITHUB_ENV
18-
24+
platform=${{ matrix.platform }}
25+
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
26+
- name: Docker meta
27+
id: meta
28+
uses: docker/metadata-action@v5
29+
with:
30+
images: ${{ env.REGISTRY_IMAGE }}
31+
tags: |
32+
type=semver,pattern={{version}}
1933
- name: Set up QEMU
20-
uses: docker/setup-qemu-action@v2
21-
34+
uses: docker/setup-qemu-action@v3
2235
- name: Set up Docker Buildx
23-
uses: docker/setup-buildx-action@v2
24-
25-
- name: Build and Export to Docker
26-
uses: docker/build-push-action@v4
27-
with:
28-
context: .
29-
file: script/release/Dockerfile
30-
load: true
31-
tags: goharbor/harbor-acceld:${{ env.IMAGE_TAG }}
32-
33-
- name: Test Image
34-
# Enable tty for docker
35-
shell: 'script -q -e -c "bash {0}"'
36-
run: |
37-
docker run -v $PWD/misc/config/config.nydus.yaml:/etc/acceld-config.yaml -d --rm -p 2077:2077 goharbor/harbor-acceld:${{ env.IMAGE_TAG }} /etc/acceld-config.yaml
38-
sleep 5
39-
curl -f http://127.0.0.1:2077/api/v1/health
40-
36+
uses: docker/setup-buildx-action@v3
4137
- name: Login to DockerHub
42-
uses: docker/login-action@v2
38+
uses: docker/login-action@v3
4339
with:
4440
username: ${{ secrets.DOCKER_HUB_USERNAME }}
4541
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
46-
47-
- name: Build and Push
48-
uses: docker/build-push-action@v4
42+
- name: Build and push by digest
43+
id: build
44+
uses: docker/build-push-action@v5
4945
with:
5046
context: .
47+
platforms: ${{ matrix.platform }}
5148
file: script/release/Dockerfile
52-
push: ${{ github.event_name != 'pull_request' }}
53-
tags: goharbor/harbor-acceld:${{ env.IMAGE_TAG }}
49+
labels: ${{ steps.meta.outputs.labels }}
50+
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
51+
- name: Export digest
52+
run: |
53+
mkdir -p /tmp/digests
54+
digest="${{ steps.build.outputs.digest }}"
55+
touch "/tmp/digests/${digest#sha256:}"
56+
- name: Upload digest
57+
uses: actions/upload-artifact@v4
58+
with:
59+
name: digests-${{ env.PLATFORM_PAIR }}
60+
path: /tmp/digests/*
61+
if-no-files-found: error
62+
retention-days: 1
63+
64+
release_image:
65+
runs-on: ubuntu-latest
66+
needs:
67+
- build_image
68+
steps:
69+
- name: Checkout Code
70+
uses: actions/checkout@v4
71+
- name: Download digests
72+
uses: actions/download-artifact@v4
73+
with:
74+
path: /tmp/digests
75+
pattern: digests-*
76+
merge-multiple: true
77+
- name: Set up Docker Buildx
78+
uses: docker/setup-buildx-action@v3
79+
- name: Docker meta
80+
id: meta
81+
uses: docker/metadata-action@v5
82+
with:
83+
images: ${{ env.REGISTRY_IMAGE }}
84+
tags: |
85+
type=semver,pattern={{version}}
86+
- name: Login to DockerHub
87+
uses: docker/login-action@v3
88+
with:
89+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
90+
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
91+
- name: Create manifest list and push
92+
working-directory: /tmp/digests
93+
run: |
94+
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
95+
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
96+
- name: Inspect image
97+
run: |
98+
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
99+
- name: Update repo description
100+
uses: peter-evans/dockerhub-description@v3
101+
with:
102+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
103+
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
104+
repository: ${{ env.REGISTRY_IMAGE }}
105+
short-description: "A general service to support image acceleration based on kinds of accelerator like Nydus"
106+
readme-filepath: ./README.md
107+
108+
test_image:
109+
runs-on: ubuntu-latest
110+
strategy:
111+
matrix:
112+
arch: [amd64, arm64]
113+
needs:
114+
- release_image
115+
steps:
116+
- name: Checkout Code
117+
uses: actions/checkout@v4
118+
- name: Test Image
119+
# Enable tty for docker
120+
shell: 'script -q -e -c "bash {0}"'
121+
run: |
122+
docker run -v $PWD/misc/config/config.nydus.yaml:/etc/acceld-config.yaml -d --rm -p 2077:2077 ${{ env.REGISTRY_IMAGE }} /etc/acceld-config.yaml
123+
sleep 5
124+
curl -f http://127.0.0.1:2077/api/v1/health
54125
55126
release_binary:
56127
runs-on: ubuntu-20.04

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Acceleration Service provides a general service to Harbor with the ability to au
44
[eStargz](https://github.com/containerd/stargz-snapshotter), etc. drivers.
55

66
[![Release Version](https://img.shields.io/github/v/release/goharbor/acceleration-service?style=flat)](https://github.com/goharbor/acceleration-service/releases)
7+
[![Docker Pulls](https://img.shields.io/docker/pulls/goharbor/harbor-acceld.svg)](https://hub.docker.com/r/goharbor/harbor-acceld/)
78
[![Integration Test](https://github.com/goharbor/acceleration-service/actions/workflows/integration-test.yml/badge.svg?branch=main)](https://github.com/goharbor/acceleration-service/actions/workflows/integration-test.yml)
89
[![Concurrent Test](https://github.com/goharbor/acceleration-service/actions/workflows/concurrent-test.yml/badge.svg?branch=main)](https://github.com/goharbor/acceleration-service/actions/workflows/concurrent-test.yml)
910
[![Webhook Test](https://github.com/goharbor/acceleration-service/actions/workflows/webhook-test.yml/badge.svg?branch=main)](https://github.com/goharbor/acceleration-service/actions/workflows/webhook-test.yml)

script/release/Dockerfile

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,30 @@
11
FROM golang:1.21.5 AS build
22

3-
ARG NYDUS_VERSION=v2.2.3
3+
ARG NYDUS_VERSION=v2.2.4
44

5-
ARG NYDUS_LINUX_AMD64_SHA256SUM="80b6e86f30a6f61958a878b705c5e36c7312cf0816e51c1e5e5f309931e28813"
5+
ARG NYDUS_LINUX_AMD64_SHA256SUM="2fbebb016d6fbbc52fd575be1753d063ca9ada19ff2db02d405955a53a077b51"
6+
7+
ARG NYDUS_LINUX_ARM64_SHA256SUM="812398992eb8bb7993eb38a2bc6b222439037cfda9e7b6070937a7d55a2b189a"
68

79
# Install acceld
810
COPY ./ /accel
9-
RUN make -C /accel install-check-tools
10-
RUN make -C /accel check
11-
RUN make -C /accel
11+
RUN make -C /accel build
1212

1313
# Install nydus component
14-
RUN wget https://github.com/dragonflyoss/image-service/releases/download/$NYDUS_VERSION/nydus-static-$NYDUS_VERSION-linux-amd64.tgz
15-
RUN echo "$NYDUS_LINUX_AMD64_SHA256SUM nydus-static-$NYDUS_VERSION-linux-amd64.tgz" | tee nydus-static-$NYDUS_VERSION-linux-amd64.tgz.sha256sum
16-
RUN sha256sum -c nydus-static-$NYDUS_VERSION-linux-amd64.tgz.sha256sum
17-
RUN tar xzvf nydus-static-$NYDUS_VERSION-linux-amd64.tgz && mv nydus-static/nydus-image /usr/local/bin/.
14+
RUN if [ "$(uname -m)" = "aarch64" ]; then \
15+
wget https://github.com/dragonflyoss/nydus/releases/download/$NYDUS_VERSION/nydus-static-$NYDUS_VERSION-linux-arm64.tgz \
16+
echo "$NYDUS_LINUX_ARM64_SHA256SUM nydus-static-$NYDUS_VERSION-linux-arm64.tgz" | tee nydus-static-$NYDUS_VERSION-linux-arm64.tgz.sha256sum; \
17+
sha256sum -c nydus-static-$NYDUS_VERSION-linux-arm64.tgz.sha256sum; \
18+
tar xzvf nydus-static-$NYDUS_VERSION-linux-arm64.tgz && mv nydus-static/nydus-image /usr/local/bin; \
19+
else \
20+
wget https://github.com/dragonflyoss/nydus/releases/download/$NYDUS_VERSION/nydus-static-$NYDUS_VERSION-linux-amd64.tgz \
21+
echo "$NYDUS_LINUX_AMD64_SHA256SUM nydus-static-$NYDUS_VERSION-linux-amd64.tgz" | tee nydus-static-$NYDUS_VERSION-linux-amd64.tgz.sha256sum; \
22+
sha256sum -c nydus-static-$NYDUS_VERSION-linux-amd64.tgz.sha256sum; \
23+
tar xzvf nydus-static-$NYDUS_VERSION-linux-amd64.tgz && mv nydus-static/nydus-image /usr/local/bin; \
24+
fi
1825

1926
# Build acceld image
20-
FROM photon:4.0
27+
FROM photon:5.0
2128
COPY --from=build /accel/acceld /accel/accelctl /usr/local/bin/nydus-image /usr/local/bin/
2229
COPY ./script/release/entrypoint.sh /entrypoint.sh
2330

0 commit comments

Comments
 (0)