Skip to content
This repository was archived by the owner on Aug 19, 2026. It is now read-only.

Merge pull request #40 from mi-examples/fix-remove-issue-numbers #9

Merge pull request #40 from mi-examples/fix-remove-issue-numbers

Merge pull request #40 from mi-examples/fix-remove-issue-numbers #9

Workflow file for this run

name: Beta Release
on:
push:
branches:
- develop
jobs:
detect-packages:
runs-on: ubuntu-latest
outputs:
packages: ${{ steps.set-packages.outputs.packages }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get changed packages
id: set-packages
run: |
# Set error handling to continue on errors
set +e
echo "Starting package detection..."
# Initialize with empty array
packages="[]"
# Simple approach: check if packages directory has any changes
if git rev-parse HEAD~1 >/dev/null 2>&1; then
# Check if any files in packages directory changed
package_changes=$(git diff --name-only HEAD~1 HEAD | grep "^packages/" || echo "")
if [[ -n "$package_changes" ]]; then
# Extract package names from changed files
package_names=$(echo "$package_changes" | cut -d'/' -f2 | sort -u | grep -v '^$' || echo "")
if [[ -n "$package_names" ]]; then
# Convert to JSON array
packages=$(echo "$package_names" | tr '\n' ',' | sed 's/,$//' | sed 's/^/\["/; s/,/","/g; s/$/"/')
packages="[$packages]"
# Validate JSON
if ! echo "$packages" | jq . >/dev/null 2>&1; then
echo "Warning: Invalid JSON generated, using empty array"
packages="[]"
fi
fi
fi
fi
# Always ensure we have valid output
echo "packages=$packages" >> $GITHUB_OUTPUT
echo "Final packages output: $packages"
echo "✅ Package detection completed successfully"
# Reset error handling
set -e
# Release pp-dev first (core package)
beta-release-pp-dev:
needs: detect-packages
if: ${{ contains(fromJSON(needs.detect-packages.outputs.packages), 'pp-dev') }}
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
pull-requests: write
defaults:
run:
working-directory: packages/pp-dev
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org/
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build package
run: npm run build
- name: Verify build output
run: |
if [[ ! -d "dist" ]]; then
echo "Error: Build output directory 'dist' not found"
exit 1
fi
echo "Build verification passed"
- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Beta Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.npm_token }}
NPM_TOKEN: ${{ secrets.npm_token }}
run: |
echo "Running beta release for package: pp-dev"
npm run release
- name: Comment on commit
if: success()
uses: actions/github-script@v7
with:
script: |
const { data: releases } = await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo,
per_page: 1
});
if (releases.length > 0) {
const latestRelease = releases[0];
if (latestRelease.tag_name.includes('beta')) {
await github.rest.repos.createCommitComment({
owner: context.repo.owner,
repo: context.repo.repo,
commit_sha: context.sha,
body: `🚀 **Beta Release Created!**\n\nPackage \`pp-dev\` has been released as beta version \`${latestRelease.tag_name}\`\n\n**Release Notes:**\n${latestRelease.body || 'No release notes available'}\n\n**Download:** [${latestRelease.tag_name}](${latestRelease.html_url})`
});
}
}
# Release create-pp-dev second (depends on pp-dev)
beta-release-create-pp-dev:
needs: [detect-packages, beta-release-pp-dev]
if: ${{ contains(fromJSON(needs.detect-packages.outputs.packages), 'create-pp-dev') }}
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
pull-requests: write
defaults:
run:
working-directory: packages/create-pp-dev
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org/
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build package
run: npm run build
- name: Verify build output
run: |
if [[ ! -d "dist" ]]; then
echo "Error: Build output directory 'dist' not found"
exit 1
fi
echo "Build verification passed"
- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Verify pp-dev dependency
run: |
echo "Verifying pp-dev release exists..."
git fetch --tags origin
if ! git tag --list | grep -q "^v[0-9]"; then
echo "Error: pp-dev tag not found. Cannot proceed with create-pp-dev release."
exit 1
fi
echo "pp-dev dependency verified successfully"
- name: Update pp-dev dependency to latest version
run: |
echo "Updating pp-dev dependency to latest stable version..."
# Get the latest stable pp-dev version from git tags (excluding beta versions)
latest_pp_dev_version=$(git tag --list "v*" | grep -v "beta\|alpha\|rc\|pre" | sort -V | tail -n1 | sed 's/^v//')
echo "Latest stable pp-dev version: $latest_pp_dev_version"
if [[ -z "$latest_pp_dev_version" ]]; then
echo "Error: Could not determine latest stable pp-dev version"
exit 1
fi
# Update package.json dependency
npm pkg set "dependencies.@metricinsights/pp-dev" "^$latest_pp_dev_version"
# Update template package.json files
find . -name "package.json" -path "*/template-*/*" -exec sed -i "s/\"@metricinsights\/pp-dev\": \"[^\"]*\"/\"@metricinsights\/pp-dev\": \"^$latest_pp_dev_version\"/g" {} \;
# Update any other version references in template files
find . -path "*/template-*/*" -type f -name "*.json" -exec sed -i "s/\"@metricinsights\/pp-dev\": \"[^\"]*\"/\"@metricinsights\/pp-dev\": \"^$latest_pp_dev_version\"/g" {} \;
echo "Updated pp-dev dependency to stable version ^$latest_pp_dev_version"
# Show the changes
echo "Updated package.json:"
grep "@metricinsights/pp-dev" package.json
echo "Updated template files:"
find . -path "*/template-*/*" -name "package.json" -exec grep -l "@metricinsights/pp-dev" {} \;
- name: Commit dependency updates
run: |
if [[ -n "$(git status --porcelain)" ]]; then
echo "Committing dependency updates..."
git add .
git commit -m "chore(deps): update pp-dev dependency to latest version"
git push origin HEAD:develop
else
echo "No dependency updates to commit"
fi
- name: Beta Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.npm_token }}
NPM_TOKEN: ${{ secrets.npm_token }}
run: |
echo "Running beta release for package: create-pp-dev"
npm run release
- name: Comment on commit
if: success()
uses: actions/github-script@v7
with:
script: |
const { data: releases } = await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo,
per_page: 1
});
if (releases.length > 0) {
const latestRelease = releases[0];
if (latestRelease.tag_name.includes('beta')) {
await github.rest.repos.createCommitComment({
owner: context.repo.owner,
repo: context.repo.repo,
commit_sha: context.sha,
body: `🚀 **Beta Release Created!**\n\nPackage \`create-pp-dev\` has been released as beta version \`${latestRelease.tag_name}\`\n\n**Release Notes:**\n${latestRelease.body || 'No release notes available'}\n\n**Download:** [${latestRelease.tag_name}](${latestRelease.html_url})`
});
}
}