diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1f2d2c0 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,64 @@ +name: Publish Release + +on: + push: + tags: + - 'v*' + +jobs: + build: + name: Publish Release + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set version string + id: version + run: | + echo "GITHUB_REPOSITORY = $GITHUB_REPOSITORY" + echo "GITHUB_REF = $GITHUB_REF" + echo "::set-output name=v::${GITHUB_REPOSITORY##*/}-${GITHUB_REF##*/}" + echo "::set-output name=b::${GITHUB_REF##*/}" + sed -i "/^version =/s/\".*\"/\"${GITHUB_REF##*/v}\"/" Cargo.toml + + - name: Create archive + run: tar cvf release.tar --owner=root --group=root --exclude '.git*' --transform 's^.^${{ steps.version.outputs.v }}^' --show-stored-names . + + - name: Compress + run: | + gzip -9vc release.tar > release.tar.gz + sha256sum release.tar.gz > release.tar.gz.sha256 + + - name: Create release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.version.outputs.b }} + release_name: Release ${{ steps.version.outputs.b }} + draft: false + prerelease: false + + - name: Upload gz + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: release.tar.gz + asset_name: ${{ steps.version.outputs.v }}.tar.gz + asset_content_type: application/gzip + + - name: Upload gz checksum + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: release.tar.gz.sha256 + asset_name: ${{ steps.version.outputs.v }}.tar.gz.sha256 + asset_content_type: text/plain +