Merge pull request #26 from Concordium/release/4.0.0 #14
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish release for SwiftPM package tag | |
on: | |
push: | |
tags: '*.*.*' | |
workflow_dispatch: # trigger manually (for debugging) | |
jobs: | |
publish-release: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Parse ref | |
uses: bisgardo/github-action-parse-ref@v1 | |
id: ref | |
with: | |
ref: '${{github.ref}}' | |
- name: Fail if ref is not a tag | |
if: "steps.ref.outputs.ref-type != 'tags'" | |
run: exit 1 | |
- name: Checkout project | |
uses: actions/checkout@v4 | |
with: | |
ref: '${{steps.ref.outputs.ref}}' | |
submodules: recursive # necessary to call 'cargo metadata' | |
- name: Extract version of the crate | |
uses: bisgardo/github-action-echo@v1 | |
id: crate-version | |
with: | |
version: |- | |
$(cargo metadata --format-version=1 2>/dev/null | jq -r '.packages[] | select(.name == "concordium-wallet-crypto-uniffi") | .version') | |
- name: 'Print outputs (for debugging)' | |
run: | | |
echo "github.ref='${{github.ref}}'" | |
echo "steps.ref.outputs.ref='${{steps.ref.outputs.ref}}'" | |
echo "steps.ref.outputs.ref-name='${{steps.ref.outputs.ref-name}}'" | |
echo "steps.crate-version.outputs.version='${{steps.crate-version.outputs.version}}'" | |
- name: Fail if tag doesn't match crate version | |
if: "steps.crate-version.outputs.version != steps.ref.outputs.ref-name" | |
run: exit 1 | |
- name: Extract tag message | |
uses: bisgardo/github-action-echo@v1 | |
id: tag-msg | |
with: | |
msg: '$(git for-each-ref "${{steps.ref.outputs.ref}}" --format="%(contents)")' | |
- name: Fail if tag is not "annotated" or its message is empty | |
if: "steps.tag-msg.outputs.msg == ''" | |
run: exit 1 | |
- name: Upload package as GitHub release | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: '${{steps.ref.outputs.ref-name}}' | |
name: '${{steps.ref.outputs.ref-name}}' | |
# Release body is the message of the annotated tag. | |
body: | | |
${{steps.tag-msg.outputs.msg}} | |
generate_release_notes: false |