From 0f63a046be7a135fffa78d97911956fd9f15a565 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Mon, 26 Sep 2022 08:33:33 +0000 Subject: [PATCH] =?UTF-8?q?ci:=20=E2=9C=A8=20Add=20CD=20ci?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yaml | 113 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 .github/workflows/cd.yaml diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml new file mode 100644 index 0000000..c3dcc78 --- /dev/null +++ b/.github/workflows/cd.yaml @@ -0,0 +1,113 @@ +name: Continuous Deployment + +on: + push: + tags: + - '[v]?[0-9]+.[0-9]+.[0-9]+' + +env: + CARGO_TERM_COLOR: always + +jobs: + publish-release: + name: Publishing for ${{ matrix.job.os }} + runs-on: ${{ matrix.job.os }} + strategy: + matrix: + job: + - os: macos-latest + os-name: macos + target: x86_64-apple-darwin + architecture: x86_64 + binary-postfix: "" + - os: ubuntu-latest + os-name: linux + target: x86_64-unknown-linux-gnu + architecture: x86_64 + binary-postfix: "" + - os: windows-latest + os-name: windows + target: x86_64-pc-windows-msvc + architecture: x86_64 + binary-postfix: ".exe" + - os: ubuntu-latest + os-name: linux + target: aarch64-unknown-linux-gnu + architecture: arm64 + binary-postfix: "" + - os: macos-latest + os-name: macos + target: aarch64-apple-darwin + architecture: arm64 + binary-postfix: "" + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + override: true + - uses: Swatinem/rust-cache@v1 + - name: Cargo build + uses: actions-rs/cargo@v1 + with: + command: build + toolchain: stable + args: --release --target ${{ matrix.job.target }} + - name: Install strip command + shell: bash + run: | + if [[ ${{ matrix.job.target }} == aarch64-unknown-linux-gnu ]]; then + sudo apt update + sudo apt-get install -y binutils-aarch64-linux-gnu + fi + - name: Packaging final binary + shell: bash + run: | + cd target/${{ matrix.job.target }}/release + + ####### reduce binary size by removing debug symbols ####### + BINARY_NAME=espup${{ matrix.job.binary-postfix }} + if [[ ${{ matrix.job.target }} == aarch64-unknown-linux-gnu ]]; then + GCC_PREFIX="aarch64-linux-gnu-" + else + GCC_PREFIX="" + fi + "$GCC_PREFIX"strip $BINARY_NAME + + ########## create tar.gz ########## + RELEASE_NAME=espup-${GITHUB_REF/refs\/tags\//}-${{ matrix.job.os-name }}-${{ matrix.job.architecture }} + tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME + + ########## create sha256 ########## + if [[ ${{ runner.os }} == 'Windows' ]]; then + certutil -hashfile $RELEASE_NAME.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > $RELEASE_NAME.sha256 + else + shasum -a 256 $RELEASE_NAME.tar.gz > $RELEASE_NAME.sha256 + fi + - name: Releasing assets + uses: softprops/action-gh-release@v1 + with: + files: | + target/${{ matrix.job.target }}/release/espup-*.tar.gz + target/${{ matrix.job.target }}/release/espup-*.sha256 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # publish-cargo: + # name: Publishing to Cargo + # runs-on: ubuntu-latest + # steps: + # - name: Checkout repository + # uses: actions/checkout@v3 + # - uses: actions-rs/toolchain@v1 + # with: + # toolchain: stable + # profile: minimal + # override: true + # - uses: Swatinem/rust-cache@v1 + # - uses: actions-rs/cargo@v1 + # with: + # command: publish + # args: --token ${{ secrets.CARGO_API_KEY }}