summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authororhun <orhun@archlinux.org>2021-05-24 02:24:11 +0300
committerorhun <orhun@archlinux.org>2021-05-24 02:24:11 +0300
commit245992c9cb2df72b51ed8891711622625eaee1d8 (patch)
treed1ebf3d9b7423bb94bb7ffa345ac74bcbaa1f16c
parent24e6d2871ce5006fc009574074bf9886f54229ed (diff)
chore: Add CD workflow
-rw-r--r--.github/workflows/cd.yml91
1 files changed, 91 insertions, 0 deletions
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
new file mode 100644
index 0000000..06db24a
--- /dev/null
+++ b/.github/workflows/cd.yml
@@ -0,0 +1,91 @@
+name: Continuous Deployment
+
+on:
+ push:
+ tags:
+ - "v*.*.*"
+
+jobs:
+ publish-github:
+ name: Publish on GitHub
+ runs-on: ubuntu-18.04
+ strategy:
+ matrix:
+ TARGET: [x86_64-unknown-linux-gnu]
+ steps:
+ - name: Checkout the repository
+ uses: actions/checkout@master
+ - name: Set the release version
+ run: echo "RELEASE_VERSION=${GITHUB_REF:11}" >> $GITHUB_ENV
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y \
+ --no-install-recommends \
+ --allow-unauthenticated libgpgme-dev \
+ libxcb-shape0-dev libxcb-xfixes0-dev
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{matrix.TARGET}}
+ override: true
+ - name: Build
+ run: cargo build --release --locked --target ${{matrix.TARGET}}
+ - name: Prepare release assets
+ run: |
+ mkdir -p release/{man,completions}
+ cp {LICENSE,README.md,CHANGELOG.md} release/
+ cp man/gpg-tui.1 release/man/
+ cp target/${{matrix.TARGET}}/release/gpg-tui release/ && strip -s release/gpg-tui
+ OUT_DIR=release/completions/ cargo run --bin completions
+ mv release/ gpg-tui-${{env.RELEASE_VERSION}}/
+ - name: Create release artifacts
+ run: |
+ tar -czvf gpg-tui-${{env.RELEASE_VERSION}}-${{matrix.TARGET}}.tar.gz \
+ gpg-tui-${{env.RELEASE_VERSION}}/
+ sha512sum gpg-tui-${{env.RELEASE_VERSION}}-${{matrix.TARGET}}.tar.gz \
+ > gpg-tui-${{env.RELEASE_VERSION}}-${{matrix.TARGET}}.tar.gz.sha512
+ - name: Sign the release
+ run: |
+ echo "${{secrets.GPG_RELEASE_KEY}}" | base64 --decode > private.key
+ echo "${{secrets.GPG_PASSPHRASE}}" | gpg --pinentry-mode=loopback \
+ --passphrase-fd 0 --import private.key
+ echo "${{secrets.GPG_PASSPHRASE}}" | gpg --pinentry-mode=loopback \
+ --passphrase-fd 0 --detach-sign \
+ gpg-tui-${{env.RELEASE_VERSION}}-${{matrix.TARGET}}.tar.gz
+ - name: Prepare the release note
+ run: echo -e "$image\n$text" > RELEASE.txt
+ env:
+ image: "[![Logo](assets/logo.jpg)](https://github.com/orhun/gpg-tui)"
+ text: "See [**CHANGELOG.md**](./CHANGELOG.md) for release notes."
+ - name: Upload the release
+ uses: softprops/action-gh-release@v1
+ with:
+ body_path: RELEASE.txt
+ files: |
+ gpg-tui-${{env.RELEASE_VERSION}}-${{matrix.TARGET}}.tar.gz
+ gpg-tui-${{env.RELEASE_VERSION}}-${{matrix.TARGET}}.tar.gz.sig
+ gpg-tui-${{env.RELEASE_VERSION}}-${{matrix.TARGET}}.tar.gz.sha512
+ env:
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+
+ publish-crates-io:
+ name: Publish on crates.io
+ needs: publish-github
+ runs-on: ubuntu-18.04
+ steps:
+ - name: Checkout the repository
+ uses: actions/checkout@master
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y \
+ --no-install-recommends \
+ --allow-unauthenticated libgpgme-dev \
+ libxcb-shape0-dev libxcb-xfixes0-dev
+ - name: Publish
+ uses: actions-rs/cargo@v1
+ with:
+ command: publish
+ args: --locked --token ${{secrets.CARGO_TOKEN}}