From aa7114a0967e7dd2a252aa6196839abcbd55b939 Mon Sep 17 00:00:00 2001 From: radek Date: Sun, 21 Jul 2024 11:42:09 +0000 Subject: [PATCH] add release action --- .github/binary-release.yml | 99 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 .github/binary-release.yml diff --git a/.github/binary-release.yml b/.github/binary-release.yml new file mode 100644 index 0000000..27ba088 --- /dev/null +++ b/.github/binary-release.yml @@ -0,0 +1,99 @@ +name: Release + +on: + push: + tags: + - "[0-9]+.[0-9]+.[0-9]+" + +jobs: + release: + name: Release - ${{ matrix.platform.release_for }} + strategy: + matrix: + platform: + - release_for: FreeBSD-x86_64 + os: ubuntu-20.04 + target: x86_64-unknown-freebsd + bin: dockerbackup + name: dockerbackup-FreeBSD-x86_64.tar.gz + command: build + + - release_for: Windows-x86_64 + os: windows-latest + target: x86_64-pc-windows-msvc + bin: dockerbackup.exe + name: dockerbackup-Windows-x86_64.zip + command: both + + - release_for: macOS-x86_64 + os: macOS-latest + target: x86_64-apple-darwin + bin: dockerbackup + name: dockerbackup-Darwin-x86_64.tar.gz + command: both + + - release_for: linux-x86_64 + os: ubuntu-latest + target: x86_64-unknown-linux-gnu + bin: dockerbackup + name: dockerbackup-Darwin-x86_64.tar.gz + command: both + - release_for: Linux-aarch64 + os: ubuntu-latest + target: aarch64-unknown-linux-gnu + bin: dockerbackup + name: dockerbackup-Linux-aarch64.tar.gz + command: both + + runs-on: ${{ matrix.platform.os }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Get the release version from the tag + shell: bash + run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + - name: Build binary + uses: houseabsolute/actions-rust-cross@v0 + with: + command: ${{ matrix.platform.command }} + target: ${{ matrix.platform.target }} + args: "--locked --release" + strip: true + + - name: Build archive + shell: bash + run: | + binary_name=dockerbackup + + dirname="$binary_name-${{ env.VERSION }}-${{ matrix.platform.target }}" + mkdir "$dirname" + if [ "${{ matrix.platform.os }}" = "windows-latest" ]; then + mv "target/${{ matrix.platform.target }}/release/$binary_name.exe" "$dirname" + else + mv "target/${{ matrix.platform.target }}/release/$binary_name" "$dirname" + fi + + if [ "${{ matrix.platform.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: Release + uses: softprops/action-gh-release@v2 + with: + files: | + ${{ env.ASSET }} + publish: + name: Publish + runs-on: ubuntu-latest + needs: release + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Publish to crates.io + run: cargo publish --token ${{ secrets.CARGO_TOKEN }} + env: + CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }} \ No newline at end of file