Bump Released Spec in SDKs Repos #8
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: Bump Released Spec in SDKs Repos | |
# Parse the CI output status and make a markdown summary | |
# TODO: | |
# - make the pipeline ignore failures so devs dont ignore the CI checks | |
# - add a step to add a comment summary with the failures in the PR, so PRs can act accordingly | |
# - add a step to automate issue creation for each failure (or update existing one) | |
on: | |
push: | |
tags: | |
- "v*.*.*" | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: "Tag (must follow pattern vN.N.N)" | |
required: true | |
type: string | |
jobs: | |
test: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- repo: tbdex-js | |
ci_file: integrity-check.yml | |
spec_path: tbdex | |
job_step: test-with-node;Run tests | |
# - repo: tbdex-swift | |
# ci_file: ci.yml | |
# spec_path: Tests/tbDEXTestVectors/tbdex-spec | |
# job_step: build-and-test;Run tests | |
# - repo: tbdex-kt | |
# ci_file: ci.yml | |
# spec_path: tbdex | |
# job_step: build-test-deploy-snapshot-ubuntu;Build, Test | |
# - repo: tbdex-rs | |
# ci_file: ci.yml | |
# spec_path: tbdex | |
# job_step: build-test-deploy-snapshot-ubuntu;Build, Test | |
outputs: | |
tbdex-js: ${{ steps.output.outputs.tbdex-js }} | |
tbdex-swift: ${{ steps.output.outputs.tbdex-swift }} | |
tbdex-kt: ${{ steps.output.outputs.tbdex-kt }} | |
tbdex-rs: ${{ steps.output.outputs.tbdex-rs }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get workflow tag | |
id: get-tag | |
run: | | |
TAG=${{ github.event.inputs.tag || github.ref_name }} | |
echo "Processing tag: $TAG" | |
# Validate tag format | |
if ! [[ $TAG =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | |
echo "Error: Tag '$TAG' is not in the required format vN.N.N" | |
exit 1 | |
fi | |
echo "TAG=${TAG}" >> $GITHUB_OUTPUT | |
- name: Generate an access token to write to downstream repo | |
uses: actions/create-github-app-token@2986852ad836768dfea7781f31828eb3e17990fa # v1.6.2 | |
id: app-token | |
with: | |
app-id: ${{ secrets.CICD_ROBOT_GITHUB_APP_ID }} | |
private-key: ${{ secrets.CICD_ROBOT_GITHUB_APP_PRIVATE_KEY }} | |
owner: TBD54566975 | |
repositories: ${{ matrix.repo }} | |
- name: Checkout spec repository | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ steps.app-token.outputs.token }} | |
repository: TBD54566975/${{ matrix.repo }} | |
ref: main | |
submodules: true | |
# persist-credentials: false | |
- name: Setup Spec values | |
id: spec-vals | |
run: | | |
echo "SPEC_REF=tbd-ci-cd-robot/spec-bump" >> $GITHUB_OUTPUT | |
- name: Update spec submodule in ${{ matrix.repo }} | |
run: | | |
# initialize configs and vars | |
SPEC_REF=tbd-ci-cd-robot/spec-bump | |
TAG=${{ steps.get-tag.outputs.TAG }} | |
REPO_ROOT=$(pwd) | |
git config user.name "tbd-ci-cd-robot[bot]" | |
git config user.email "${{ secrets.CICD_ROBOT_GITHUB_APP_ID }}+tbd-ci-cd-robot[bot]@users.noreply.github.com" | |
echo "Current directory: $(pwd)" | |
# check if $SPEC_REF exists | |
echo "Checking if $SPEC_REF exists..." | |
if git ls-remote --exit-code origin $SPEC_REF; then | |
echo "$SPEC_REF exists, checking out..." | |
git checkout $SPEC_REF || { echo "Failed to checkout $SPEC_REF"; exit 1; } | |
else | |
echo "$SPEC_REF doesn't exist, creating new branch..." | |
git checkout -b $SPEC_REF || { echo "Failed to create new branch $SPEC_REF"; exit 1; } | |
fi | |
# bumps the spec submodule | |
echo "Bumping spec submodule to $TAG..." | |
cd ${{ matrix.spec_path }} | |
echo "Updating submodule..." | |
git submodule update --init --recursive | |
echo "Fetching tags..." | |
git fetch --all --tags | |
echo "Checking out $TAG..." | |
git checkout $TAG | |
# commit changes and push | |
echo "Committing changes..." | |
cd $REPO_ROOT | |
git add . | |
git commit -m "Bump tbdex spec to $TAG" | |
git push origin $SPEC_REF |