diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 80464f4032..30b749faa0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,22 +14,10 @@ jobs: strategy: matrix: include: - - arch: x86_64-unknown-linux-gnu - os: ubuntu-latest - file_name: ${{ github.event.repository.name }}-${{ github.ref_name }}-linux-amd64 - file_ext: .tar.gz - - arch: aarch64-unknown-linux-gnu - os: ubuntu-latest - file_name: ${{ github.event.repository.name }}-${{ github.ref_name }}-linux-arm64 - file_ext: .tar.gz - - arch: x86_64-apple-darwin - os: macos-latest - file_name: ${{ github.event.repository.name }}-${{ github.ref_name }}-darwin-amd64 - file_ext: .tar.gz - - arch: aarch64-apple-darwin - os: macos-latest - file_name: ${{ github.event.repository.name }}-${{ github.ref_name }}-darwin-arm64 - file_ext: .tar.gz + - os: ubuntu-latest + name: ${{ github.event.repository.name }}-${{ github.ref_name }}-ubuntu-amd64.tar.gz + - os: macos-latest + name: ${{ github.event.repository.name }}-${{ github.ref_name }}-macos-amd64.tar.gz runs-on: ${{ matrix.os }} @@ -37,65 +25,75 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Install Deps - linux - if: contains(matrix.arch, 'linux') + - name: Release build os - ${{ matrix.os }} run: | - sudo apt-get install -y autoconf libprotobuf-dev protobuf-compiler - sudo apt-get install -y clang-tidy-12 + chmod +x ci/release-build.sh + ./ci/release-build.sh install ${{ matrix.os }} ${{ env.BUILD_TYPE }} - - name: Install Deps - darwin - if: contains(matrix.os, 'macos') + - name: Calculate checksum and rename binary run: | - brew update - brew install --overwrite python@3.12 autoconf protobuf llvm wget git - brew install gcc@10 automake cmake make binutils + chmod +x ci/release-build.sh + ./ci/release-build.sh checksum ${{ github.event.repository.name }} ${{ matrix.name }} + + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.name }} + path: build/${{ matrix.name }} - - name: Configure CMake - linux - if: contains(matrix.arch, 'linux') - run: cmake -B build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DUSE_PIKA_TOOLS=ON -DCMAKE_CXX_FLAGS="-s" -DCMAKE_EXE_LINKER_FLAGS="-s" + - name: Upload checksum of artifacts + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.name }}.sha256sum + path: build/${{ matrix.name }}.sha256sum - - name: Configure CMake - darwin - if: contains(matrix.os, 'macos') + centos: + runs-on: ubuntu-latest + container: + image: centos:7 + env: + name: ${{ github.event.repository.name }}-${{ github.ref_name }}-centos-amd64.tar.gz + steps: + - name: Install deps + run: | + yum install -y wget git autoconf centos-release-scl gcc perl-Digest-SHA + yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-make devtoolset-10-bin-util + yum install -y llvm-toolset-7 llvm-toolset-7-clang tcl which + + - name: Install cmake run: | - export CC=/usr/local/opt/gcc@10/bin/gcc-10 - cmake -B build -DCMAKE_C_COMPILER=/usr/local/opt/gcc@10/bin/gcc-10 -DUSE_PIKA_TOOLS=ON -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} + wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.sh + bash ./cmake-3.26.4-linux-x86_64.sh --skip-license --prefix=/usr - - name: Cache Build - linux - if: contains(matrix.arch, 'linux') - uses: actions/cache@v3 - id: cache-ubuntu + - name: Checkout sources + uses: actions/checkout@v3 with: - key: ${{ runner.os }}-build-ubuntu-${{ hashFiles('**/CMakeLists.txt') }} - path: | - ${{ github.workspace }}/buildtrees - ${{ github.workspace }}/deps + fetch-depth: 0 - - name: Build - run: cmake --build build --config ${{ env.BUILD_TYPE }} + - name: Release build os - centos + run: | + chmod +x ci/release-build.sh + ./ci/release-build.sh install centos ${{ env.BUILD_TYPE }} -xe - name: Calculate checksum and rename binary shell: bash - run: | - cd build/ - chmod +x ${{ github.event.repository.name }} - tar -zcvf ${{ matrix.file_name }}${{ matrix.file_ext }} ${{ github.event.repository.name }} - echo $(shasum -a 256 ${{ matrix.file_name }}${{ matrix.file_ext }} | cut -f1 -d' ') > ${{ matrix.file_name }}${{ matrix.file_ext }}.sha256sum + run: ./ci/release-build.sh checksum ${{ github.event.repository.name }} ${{ env.name }} - name: Upload artifacts uses: actions/upload-artifact@v3 with: - name: ${{ matrix.file_name }}${{ matrix.file_ext }} - path: build/${{ matrix.file_name }}${{ matrix.file_ext }} + name: ${{ env.name }} + path: build/${{ env.name }} - name: Upload checksum of artifacts uses: actions/upload-artifact@v3 with: - name: ${{ matrix.file_name }}${{ matrix.file_ext }}.sha256sum - path: build/${{ matrix.file_name }}${{ matrix.file_ext }}.sha256sum + name: ${{ env.name }}.sha256sum + path: build/${{ env.name }}.sha256sum release: name: Release artifacts - needs: [ build ] + needs: [ build,centos ] runs-on: ubuntu-latest steps: - name: Download artifacts diff --git a/ci/release-build.sh b/ci/release-build.sh new file mode 100644 index 0000000000..a707fbc775 --- /dev/null +++ b/ci/release-build.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +function install_deps() { + echo "install deps before ..." + if [[ $OS == *"macos"* ]]; then + brew update + brew install --overwrite python@3.12 autoconf protobuf llvm wget git + brew install gcc@10 automake cmake make binutils + elif [[ $OS == *"ubuntu"* ]]; then + sudo apt-get install -y autoconf libprotobuf-dev protobuf-compiler + sudo apt-get install -y clang-tidy-12 + else + echo "not support $OS" + fi + echo "install deps after success ..." +} + +function configure_cmake() { + echo "configure cmake before ..." + if [[ $OS == *"macos"* ]]; then + export CC=/usr/local/opt/gcc@10/bin/gcc-10 + cmake -B build -DCMAKE_C_COMPILER=/usr/local/opt/gcc@10/bin/gcc-10 -DUSE_PIKA_TOOLS=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE + elif [[ $OS == *"ubuntu"* ]]; then + cmake -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_PIKA_TOOLS=ON -DCMAKE_CXX_FLAGS="-s" -DCMAKE_EXE_LINKER_FLAGS="-s" + elif [[ $OS == *"centos"* ]]; then + source /opt/rh/devtoolset-10/enable + cmake -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_PIKA_TOOLS=ON -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address + fi + echo "configure cmake after ..." +} + +function build() { + echo "build before ..." + cmake --build build --config $BUILD_TYPE + echo "build after success ..." +} + +function install() { + install_deps + configure_cmake + build +} + +function checksum() { + cd build/ && chmod +x $REPO_NAME + + mkdir bin && cp $REPO_NAME bin + mkdir conf && cp ../conf/pika.conf conf + + tar -zcvf $PACKAGE_NAME bin/$REPO_NAME conf/pika.conf + + echo $(shasum -a 256 $PACKAGE_NAME | cut -f1 -d' ') >${PACKAGE_NAME}.sha256sum +} + +case $1 in +"install") + OS=$2 + BUILD_TYPE=$3 + install + ;; +"checksum") + REPO_NAME=$2 + PACKAGE_NAME=$3 + checksum + ;; +*) + echo "Invalid option" + echo "option $1" + ;; +esac