From 8995fad03b0c8cd6b5256aa14fe3f9673ed4c0d0 Mon Sep 17 00:00:00 2001 From: Chuanhong Guo Date: Wed, 28 Feb 2024 16:31:48 +0800 Subject: [PATCH] add github action Based on: https://dzfrias.dev/blog/deploy-rust-cross-platform-github-actions Signed-off-by: Chuanhong Guo --- .github/workflows/release.yml | 70 +++++++++++++++++++++++++++++++++++ .github/workflows/rust.yml | 20 ++++++++++ 2 files changed, 90 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..13c8028 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,70 @@ +on: + release: + types: [created] + +env: + PROJECT_NAME: mtk_uartboot + +jobs: + build-and-upload: + runs-on: ${{ matrix.runner }} + + strategy: + matrix: + include: + - name: linux-amd64 + runner: ubuntu-latest + target: x86_64-unknown-linux-gnu + - name: win-amd64 + runner: windows-latest + target: x86_64-pc-windows-msvc + - name: macos-amd64 + runner: macos-latest + target: x86_64-apple-darwin + - name: macos-arm64 + runner: macos-latest + target: aarch64-apple-darwin + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: "${{ matrix.target }}" + + - name: Setup Cache + uses: Swatinem/rust-cache@v2 + + - name: Get the release version from the tag + shell: bash + run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + + - name: Build Binary + run: cargo build --verbose --locked --release --target ${{ matrix.target }} + + - name: Build archive + shell: bash + run: | + dirname="${PROJECT_NAME}-${{ env.VERSION }}-${{ matrix.target }}" + mkdir "$dirname" + if [ "${{ matrix.os }}" = "windows-latest" ]; then + mv "target/${{ matrix.target }}/release/${PROJECT_NAME}.exe" "$dirname" + else + mv "target/${{ matrix.target }}/release/${PROJECT_NAME}" "$dirname" + fi + + if [ "${{ matrix.os }}" = "windows-latest" ]; then + 7z a "$dirname.zip" "$dirname" + echo "ASSET=$dirname.zip" >> $GITHUB_ENV + else + tar -czf "$dirname.tar.gz" "$dirname" + echo "ASSET=$dirname.tar.gz" >> $GITHUB_ENV + fi + + - name: Upload the binaries + uses: softprops/action-gh-release@v1 + with: + files: | + ${{ env.ASSET }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..7f05c5f --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,20 @@ +name: Rust + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build + run: cargo build --verbose