Skip to content

DSE-339 :: Error Summary update (#176) #40

DSE-339 :: Error Summary update (#176)

DSE-339 :: Error Summary update (#176) #40

Workflow file for this run

name: Create release
on:
push:
tags:
- 'v*' # Toolkit releases (backward compatible)
- 'toolkit-v*' # Toolkit releases (new pattern)
- 'react-v*' # React components releases
jobs:
build:
name: Create release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-node@v4
with:
node-version: '22.x'
- name: Enable Corepack and pnpm
run: |
corepack enable
corepack prepare [email protected] --activate
- name: Install dependencies
run: pnpm install
- name: Run linting
run: pnpm run lint
- name: Install Playwright browser for tests
run: pnpm --filter=@ourfuturehealth/react-components exec playwright install --with-deps chromium
- name: Run tests
run: pnpm test
- name: Determine package and version
id: package_info
run: |
TAG=${GITHUB_REF#refs/tags/}
if [[ $TAG == react-v* ]]; then
echo "PACKAGE=react-components" >> $GITHUB_OUTPUT
echo "VERSION=${TAG#react-v}" >> $GITHUB_OUTPUT
echo "BUILD_CMD=build" >> $GITHUB_OUTPUT
elif [[ $TAG == toolkit-v* ]]; then
echo "PACKAGE=toolkit" >> $GITHUB_OUTPUT
echo "VERSION=${TAG#toolkit-v}" >> $GITHUB_OUTPUT
echo "BUILD_CMD=zip" >> $GITHUB_OUTPUT
else
# Assume v* tags are toolkit (backward compatibility)
echo "PACKAGE=toolkit" >> $GITHUB_OUTPUT
echo "VERSION=${TAG#v}" >> $GITHUB_OUTPUT
echo "BUILD_CMD=zip" >> $GITHUB_OUTPUT
fi
- name: Build release artifact
run: |
if [ "${{ steps.package_info.outputs.PACKAGE }}" == "toolkit" ]; then
pnpm --filter=@ourfuturehealth/toolkit run zip
else
pnpm --filter=@ourfuturehealth/react-components run build
fi
- name: Resolve toolkit asset details
if: steps.package_info.outputs.PACKAGE == 'toolkit'
id: toolkit_asset
run: |
ASSET_PATH=$(ls -1 ./packages/toolkit/dist/ofh-design-system-toolkit-*.zip | head -n 1)
ASSET_NAME=$(basename "$ASSET_PATH")
echo "ASSET_PATH=$ASSET_PATH" >> $GITHUB_OUTPUT
echo "ASSET_NAME=$ASSET_NAME" >> $GITHUB_OUTPUT
- name: Create or update release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
TAG="${GITHUB_REF_NAME}"
RELEASE_BODY=$(cat <<EOF
Release of **${{ steps.package_info.outputs.PACKAGE }}** version ${{ steps.package_info.outputs.VERSION }}
## Installation
\`\`\`json
{
"dependencies": {
"@ourfuturehealth/${{ steps.package_info.outputs.PACKAGE }}": "github:ourfuturehealth/design-system-toolkit#${{ github.ref_name }}:packages/${{ steps.package_info.outputs.PACKAGE }}"
}
}
\`\`\`
EOF
)
if gh release view "$TAG" >/dev/null 2>&1; then
gh release edit "$TAG" --title "$TAG" --notes "$RELEASE_BODY"
else
gh release create "$TAG" --title "$TAG" --notes "$RELEASE_BODY"
fi
- name: Upload toolkit zip asset
if: steps.package_info.outputs.PACKAGE == 'toolkit'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${GITHUB_REF_NAME}" "${{ steps.toolkit_asset.outputs.ASSET_PATH }}" \
--clobber \
--repo "${GITHUB_REPOSITORY}"