Skip to content

Version and Release

Version and Release #4

name: Version and Release
on:
push:
branches: [main]
paths:
- '.changeset/**'
workflow_dispatch:
permissions:
contents: write
packages: write
issues: write
pull-requests: write
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
version-and-release:
name: Version and Release
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Build
run: npm run build
- name: Test
run: npm run test
- name: Create Version PR
id: changesets
uses: changesets/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Print Version Status
run: |
if [[ "${{ steps.changesets.outputs.hasChangesets }}" == "true" ]]; then
echo "✨ Version updates created"
for changeset in .changeset/*.md; do
if [ -f "$changeset" ]; then
pkg_info=$(grep -A 1 -e "---" "$changeset")
echo "$pkg_info"
fi
done
else
echo "No changes detected - skipping version updates"
fi
- name: Create Releases for Updated Packages
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: steps.changesets.outputs.hasChangesets == 'true'
run: |
for changeset in .changeset/*.md; do
if [ -f "$changeset" ]; then
name=$(grep -A 1 -e "---" "$changeset" | grep "@api-client-sdk-streamline-sample" | tr -d '"' | awk '{print $1}')
version=$(grep -A 1 -e "---" "$changeset" | grep "@api-client-sdk-streamline-sample" | awk '{print $2}')
if [ ! -z "$name" ]; then
echo "Creating release for $name v$version"
gh workflow run release-base.yml \
-f package-name="$name" \
-f version="$version" \
-f type="api"
fi
fi
done