From a5ea194931117e1bf18a48118a5e930f58b7ada6 Mon Sep 17 00:00:00 2001 From: Li Zhineng Date: Sat, 6 Jul 2024 15:29:39 +0800 Subject: Continuous Integration (#3) * ci * remove branch limits * publish workflow * specify working directory * install libssl-dev on ubuntu-latest * drop x86_64-unknown-linux-musl * fix tar * list files * prefix working directory * install openssl * use cross * fix section * remove openssl * use edge images * quoted * edge image for aarch64-unknown-linux-gnu * custom dockerfile * build-essential && remove CAMKE* * combine pre-build with target * fix package not found * install pkg-config * remove build-essential * install build-essential * $CROSS_DEB_ARCH * fix arch * remove openssl * remove file listing * remove prefixed path * use actions/upload-artifact@v4 * fix upload step * Revert "fix upload step" This reverts commit da9814e42ce568a1b0707f23df02696ad373dc22. * Revert "use actions/upload-artifact@v4" This reverts commit 0bcc2486c6a4bd4fc865eedb458098724ae6b88d. * Revert "remove prefixed path" This reverts commit 620b985b18e84cf97e40695c9852762c853434b6. * Revert "fix tar" This reverts commit a013b23161e0b9193161e57f9a878b04b2eba874. * remove -p for mkdir * add target: x86_64-apple-darwin --- .github/workflows/publish.yml | 92 +++++++++++++++++++++++++++++++++++++++++++ .github/workflows/rust.yml | 24 +++++++++++ 2 files changed, 116 insertions(+) create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/rust.yml (limited to '.github/workflows') diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..be57329 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,92 @@ +name: Publish + +on: + push: + tags: + - 'v*' + +defaults: + run: + working-directory: ./decryptor + +jobs: + publish: + name: ${{ matrix.target }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + use-cross: false + + - os: ubuntu-latest + target: aarch64-unknown-linux-gnu + use-cross: true + + - os: macos-latest + target: aarch64-apple-darwin + use-cross: false + + - os: macos-12 + target: x86_64-apple-darwin + use-cross: false + + steps: + - uses: actions/checkout@v4 + + - name: Set the version + shell: bash + run: | + echo "DECRYPTOR_VERSION=$GITHUB_REF_NAME" >> $GITHUB_ENV + echo "version is: ${{ env.DECRYPTOR_VERSION }}" + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Setup native compilation + if: ${{ matrix.use-cross == false }} + shell: bash + run: | + if [[ "${{ matrix.os }}" == "ubuntu-latest" ]]; then + sudo apt-get update && sudo apt-get install -y libssl-dev + fi + echo "CARGO=cargo" >> $GITHUB_ENV + + - name: Setup cross compilation + if: ${{ matrix.use-cross == true }} + shell: bash + run: | + dir="$RUNNER_TEMP/cross-download" + mkdir "$dir" + echo "$dir" >> $GITHUB_PATH + cd "$dir" + curl -LO "https://github.com/cross-rs/cross/releases/download/v0.2.5/cross-x86_64-unknown-linux-musl.tar.gz" + tar xf cross-x86_64-unknown-linux-musl.tar.gz + echo "CARGO=cross" >> $GITHUB_ENV + + - name: Build + shell: bash + run: | + $CARGO --version + $CARGO build --release --locked --target ${{ matrix.target }} + + - name: Setup archive + shell: bash + run: | + staging="decryptor-${{ env.DECRYPTOR_VERSION }}-${{ matrix.target }}" + mkdir "$staging" + + cp "target/${{ matrix.target }}/release/decryptor" "$staging/" + tar czf "$staging.tar.gz" "$staging" + echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV + + - name: Upload the binaries + uses: svenstaro/upload-release-action@2.9.0 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ./decryptor/${{ env.ASSET }} + asset_name: ${{ env.ASSET }} + tag: ${{ github.ref }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..29fd6f7 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,24 @@ +name: Rust + +on: + push: + pull_request: + +env: + CARGO_TERM_COLOR: always + +defaults: + run: + working-directory: ./decryptor + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build + run: cargo build --verbose + - name: Run tests + run: cargo test --verbose -- cgit v1.2.3