From 9047e1e7aa6375a53d8fa2cbf21d28d3a4a6ae5d Mon Sep 17 00:00:00 2001 From: dawkaka Date: Mon, 7 Aug 2023 11:38:12 +0000 Subject: [PATCH] github actions --- .github/workflows/release.yaml | 124 +++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..4c6cfc2 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,124 @@ +name: release +on: + push: + branches: + - main +jobs: + create-release: + name: create-release + runs-on: ubuntu-latest + # env: + # Set to force version number, e.g., when no tag exists. + # RG_VERSION: TEST-0.0.0 + outputs: + rg_version: ${{ env.RG_VERSION }} + steps: + - uses: actions/checkout@v3 + - name: Get the release version from the tag + shell: bash + if: env.RG_VERSION == '' + run: | + echo "RG_VERSION=$GITHUB_REF_NAME" >> $GITHUB_ENV + echo "version is: ${{ env.RG_VERSION }}" + - name: Create GitHub release + env: + GH_TOKEN: ${{ github.token }} + run: gh release create ${{ env.RG_VERSION }} + build-release: + name: build-release + needs: ['create-release'] + runs-on: '${{ matrix.os }}' + env: + CARGO: cargo + TARGET_FLAGS: '' + TARGET_DIR: ./target + RUST_BACKTRACE: 1 + PCRE2_SYS_STATIC: 1 + strategy: + matrix: + build: [linux, linux-arm, macos, win-msvc, win-gnu, win32-msvc] + include: + - build: linux + os: ubuntu-latest + rust: nightly + target: x86_64-unknown-linux-musl + - build: linux-arm + os: ubuntu-latest + rust: nightly + target: arm-unknown-linux-gnueabihf + - build: macos + os: macos-latest + rust: nightly + target: x86_64-apple-darwin + - build: win-msvc + os: windows-latest + rust: nightly + target: x86_64-pc-windows-msvc + - build: win-gnu + os: windows-latest + rust: nightly-x86_64-gnu + target: x86_64-pc-windows-gnu + - build: win32-msvc + os: windows-latest + rust: nightly + target: i686-pc-windows-msvc + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.rust }} + target: ${{ matrix.target }} + + - name: Use cross + run: | + cargo install cross + echo "CARGO=cross" >> $GITHUB_ENV + echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV + echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV + + - name: Show commands use for cargo + run: | + echo "cargo command is: ${{ env.CARGO }}" + echo "target flag is: ${{ env.TARGET_FLAGS }}" + echo "target dir is: ${{ env.TARGET_DIR }}" + + - name: Build release binary + run: ${{ env.CARGO }} build --verbose --release --features pcre2 ${{ env.TARGET_FLAGS }} + + - name: Strip release binary (linux, macos and macos-arm) + if: matrix.build == 'linux' || matrix.os == 'macos' + run: strip "target/${{ matrix.target }}/release/rg" + + - name: Strip release binary (arm) + if: matrix.build == 'linux-arm' + run: | + docker run --rm -v \ + "$PWD/target:/target:Z" \ + rustembedded/cross:arm-unknown-linux-gnueabihf \ + arm-linux-gnueabihf-strip \ + /target/arm-unknown-linux-gnueabihf/release/rg + - name: Build archive + shell: bash + run: | + staging="ripgrep-${{ needs.create-release.outputs.rg_version }}-${{ matrix.target }}" + mkdir -p "$staging" + if [ "${{ matrix.os }}" = "windows-latest" ]; then + cp "target/${{ matrix.target }}/release/rg.exe" "$staging/" + 7z a "$staging.zip" "$staging" + certutil -hashfile "$staging.zip" SHA256 > "$staging.zip.sha256" + echo "ASSET=$staging.zip" >> $GITHUB_ENV + echo "ASSET_SUM=$staging.zip.sha256" >> $GITHUB_ENV + else + cp "target/${{ matrix.target }}/release/rg" "$staging/" + tar czf "$staging.tar.gz" "$staging" + shasum -a 256 "$staging.tar.gz" > "$staging.tar.gz.sha256" + echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV + echo "ASSET_SUM=$staging.tar.gz.sha256" >> $GITHUB_ENV + fi + - name: Upload release archive + env: + GH_TOKEN: ${{ github.token }} + run: gh release upload ${{ needs.create-release.outputs.rg_version }} ${{ env.ASSET }} ${{ env.ASSET_SUM }}