diff options
author | orhun <orhun@archlinux.org> | 2021-05-24 02:24:11 +0300 |
---|---|---|
committer | orhun <orhun@archlinux.org> | 2021-05-24 02:24:11 +0300 |
commit | 245992c9cb2df72b51ed8891711622625eaee1d8 (patch) | |
tree | d1ebf3d9b7423bb94bb7ffa345ac74bcbaa1f16c | |
parent | 24e6d2871ce5006fc009574074bf9886f54229ed (diff) |
chore: Add CD workflow
-rw-r--r-- | .github/workflows/cd.yml | 91 |
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}} |