summaryrefslogtreecommitdiffstats
path: root/.github/workflows/deploy.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/deploy.yml')
-rw-r--r--.github/workflows/deploy.yml56
1 files changed, 56 insertions, 0 deletions
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..b77b173
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,56 @@
+name: deploy
+
+on:
+ push:
+ tags:
+ - 'v*.*.*'
+
+jobs:
+
+ linux-binaries:
+ permissions:
+ # Grant the GITHUB_TOKEN additional permissions necessary for creating a release.
+ # We only run this action for tags, so any code has already been reviewed by
+ # someone with permissions to create a tag.
+ contents: write
+
+ runs-on: ubuntu-20.04
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install stable
+ uses: dtolnay/rust-toolchain@stable
+
+ - name: semver
+ run: |
+ cargo +stable install cargo-semver-checks --locked
+ cargo +stable semver-checks check-release
+
+ - name: Build cbindgen
+ run: |
+ cargo +stable build --release
+
+ - name: Strip cbindgen
+ run: |
+ strip target/release/cbindgen
+
+ - name: Handle release data and files
+ id: tagName
+ run: |
+ VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2)
+ echo "::set-output name=version::$VERSION"
+ # Steps to extract the last release notes from CHANGES:
+ # 1. Remove the first three lines
+ # 2. Stop at the next heading level
+ # 3. Remove the last line
+ # 4. Deindent the bullet points to avoid a markdown code block
+ tail -n +3 CHANGES | sed '/^##/q' |
+ sed '$ d' | awk '{$1=$1};1' > CHANGES.txt
+
+ - name: Create a release
+ run: |
+ TAG=${{ steps.tagName.outputs.version }}
+ gh release create ${TAG} --title "${TAG}" --notes-file "CHANGES.txt" --draft 'target/release/cbindgen#cbindgen-ubuntu20.04'
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}