Release #18
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: Release | |
on: | |
workflow_dispatch: | |
inputs: | |
bump_type: | |
description: "Version bump type" | |
required: true | |
type: choice | |
options: | |
- patch | |
- minor | |
- major | |
jobs: | |
update-cargo-version: | |
runs-on: ubuntu-latest | |
outputs: | |
new_version: ${{ steps.version.outputs.new_version }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: main | |
token: ${{ secrets.GIT_HUB_TOKEN }} | |
- name: Calculate new version | |
id: version | |
env: | |
BUMP_TYPE: ${{ github.event.inputs.bump_type }} | |
run: | | |
# Get current version from Cargo.toml | |
CURRENT_VERSION=$(grep -m 1 'version = ' Cargo.toml | cut -d '"' -f 2) | |
# Ensure CURRENT_VERSION is in semantic versioning format | |
if [[ ! "$CURRENT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | |
echo "CRITICAL ERROR: CURRENT_VERSION '$CURRENT_VERSION' is not in semantic versioning format (MAJOR.MINOR.PATCH)." | |
exit 1 | |
fi | |
# Split version into components | |
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION" | |
# Calculate new version based on bump type | |
case "$BUMP_TYPE" in | |
"major") | |
NEW_VERSION="$((MAJOR + 1)).0.0" | |
;; | |
"minor") | |
NEW_VERSION="${MAJOR}.$((MINOR + 1)).0" | |
;; | |
"patch") | |
NEW_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))" | |
;; | |
esac | |
echo "New version will be: $NEW_VERSION" | |
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT | |
- name: Set up Rust | |
run: | | |
rustup update stable && rustup default stable | |
- name: Cache Cargo registry | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-registry- | |
- name: Cache Cargo index | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-index- | |
- name: Cache Cargo build | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-build- | |
- name: Install cargo-edit | |
run: cargo install cargo-edit | |
- name: Update version | |
run: cargo set-version ${{ steps.version.outputs.new_version }} | |
# Commit uses GIT_HUB_TOKEN which has permissions to push (set on actions/checkout) | |
- name: Commit and Push Changes | |
run: | | |
git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
git config --global user.name "github-actions[bot]" | |
# built binary files are too large for the default buffer | |
git config --global http.postBuffer 157286400 | |
git config --global http.version HTTP/1.1 | |
git add Cargo.toml | |
git add Cargo.lock | |
git commit -m "Bump crate version to ${{ steps.version.outputs.new_version }}" | |
git push | |
build-swift: | |
runs-on: macos-latest | |
needs: update-cargo-version | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Rust | |
run: | | |
rustup update stable && rustup default stable | |
- name: Cache Cargo registry | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-registry- | |
- name: Cache Cargo index | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-index- | |
- name: Cache Cargo build | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-build- | |
- name: Install dependencies | |
run: | | |
cargo fetch | |
- name: Build the project (iOS) | |
run: ./build_swift.sh | |
- name: Checkout swift repo | |
uses: actions/checkout@v4 | |
with: | |
repository: worldcoin/walletkit-swift | |
token: ${{ secrets.GIT_HUB_TOKEN }} | |
path: target-repo | |
- name: Commit swift build | |
env: | |
GITHUB_TOKEN: ${{ secrets.GIT_HUB_TOKEN }} | |
run: | | |
cp -r WalletKitCore.xcframework target-repo/ | |
cp -r Sources/ target-repo/Sources | |
cp Package.swift target-repo/ | |
cd target-repo | |
git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
git config --global user.name "github-actions[bot]" | |
git add . | |
git commit -m "Release ${{ needs.update-cargo-version.outputs.new_version }}" | |
# Tag the release | |
git tag ${{ needs.update-cargo-version.outputs.new_version }} | |
git push | |
git push origin ${{ needs.update-cargo-version.outputs.new_version }} | |
create-github-release: | |
needs: [update-cargo-version, build-swift] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Create Release in main repo | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: ${{ needs.update-cargo-version.outputs.new_version }} | |
tag_name: ${{ needs.update-cargo-version.outputs.new_version }} | |
generate_release_notes: true | |
make_latest: true | |
- name: Create Release in swift repo | |
uses: softprops/action-gh-release@v2 | |
with: | |
repository: worldcoin/walletkit-swift | |
token: ${{ secrets.GIT_HUB_TOKEN }} | |
name: ${{ needs.update-cargo-version.outputs.new_version }} | |
tag_name: ${{ needs.update-cargo-version.outputs.new_version }} | |
body: | | |
## Version ${{ needs.update-cargo-version.outputs.new_version }} | |
For full release notes, see the [main repo release](https://github.com/worldcoin/walletkit/releases/tag/${{ needs.update-cargo-version.outputs.new_version }}). | |
make_latest: true |