Skip to content

Bump Released Spec in SDKs Repos #7

Bump Released Spec in SDKs Repos

Bump Released Spec in SDKs Repos #7

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 $TAG..."
git fetch origin $TAG
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