From 52352051676901f1541595fd2ad12fd8b4beaf3d Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sat, 1 Feb 2025 06:06:24 +0000 Subject: [PATCH] Add Debian and Alpine Linux package build support to GitHub Actions - Introduce Debian and Alpine Linux package build stages in CI/CD pipeline - Configure CMake for static compilation on both platforms - Add artifact upload for Debian (.deb) and Alpine (.apk) packages - Include static Abseil library build process for both distributions --- .github/workflows/build-alpine.yml | 61 +++++++++++++++++++ .../workflows/{build.yml => build-debian.yml} | 28 +-------- 2 files changed, 64 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/build-alpine.yml rename .github/workflows/{build.yml => build-debian.yml} (78%) diff --git a/.github/workflows/build-alpine.yml b/.github/workflows/build-alpine.yml new file mode 100644 index 0000000..fa59e2f --- /dev/null +++ b/.github/workflows/build-alpine.yml @@ -0,0 +1,61 @@ +name: Build Alpine Package + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +env: + PKG_VERSION: "2.2.0" + PKG_RELEASE: "1" + ABSEIL_VERSION: "20230125.3" + +jobs: + build-alpine: + runs-on: ubuntu-latest + container: alpine:latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Install Alpine Packaging Dependencies + run: | + apk update + apk add alpine-sdk cmake clang llvm + + - name: Build Static Abseil + run: | + git clone https://github.com/abseil/abseil-cpp.git + cd abseil-cpp + mkdir build && cd build + cmake -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DABSL_BUILD_TESTING=OFF \ + -DABSL_USE_GOOGLETEST_HEAD=OFF \ + -DCMAKE_CXX_STANDARD=17 \ + -DBUILD_SHARED_LIBS=OFF \ + .. + make -j$(nproc) + make install + ldconfig + + - name: Build Alpine Package + run: | + mkdir -p alpine_build && cd alpine_build + cmake -DCMAKE_BUILD_TYPE=Release \ + -DUSE_CLANG=ON \ + -DBUILD_STATIC=ON \ + .. + make + # Example packaging command; adjust according to your packaging scripts + make apk + + - name: Upload Alpine Package + uses: actions/upload-artifact@v3 + with: + name: cpu-check-alpine + path: alpine_build/*.apk \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build-debian.yml similarity index 78% rename from .github/workflows/build.yml rename to .github/workflows/build-debian.yml index c879fb9..05a44aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build-debian.yml @@ -1,4 +1,4 @@ -name: Build +name: Build Debian Package on: push: @@ -12,7 +12,7 @@ env: ABSEIL_VERSION: "20230125.3" jobs: - build: + build-debian: runs-on: ubuntu-latest steps: @@ -77,31 +77,9 @@ jobs: name: cpu-check-deb path: build/*.deb - - name: Install Alpine Packaging Dependencies - run: | - sudo apk update - sudo apk add alpine-sdk cmake clang llvm - - - name: Build Alpine Package - run: | - mkdir -p alpine_build && cd alpine_build - cmake -DCMAKE_BUILD_TYPE=Release \ - -DUSE_CLANG=ON \ - -DBUILD_STATIC=ON \ - .. - make - # Example packaging command; adjust according to your packaging scripts - make apk - - - name: Upload Alpine Package - uses: actions/upload-artifact@v3 - with: - name: cpu-check-alpine - path: alpine_build/*.apk - - name: Upload to Gitea Package Registry if: github.event_name == 'push' && github.ref == 'refs/heads/master' run: | curl --user "eric:df299a6e592a8bd829d018b7816e76d03756408d" \ --upload-file build/cpu-check_${{ env.PKG_VERSION }}-${{ env.PKG_RELEASE }}_amd64.deb \ - "https://git.ericxliu.me/api/packages/eric/debian/pool/bionic/main/upload" \ No newline at end of file + "https://git.ericxliu.me/api/packages/eric/debian/pool/bionic/main/upload" \ No newline at end of file