QPP Measures Data Publish #97
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: QPP Measures Data Publish | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: 'Version number to use' | |
required: true | |
release: | |
types: [published] | |
jobs: | |
update-version-and-publish: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Codebase | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Ensures fetching of history for all branches and tags | |
- name: Configure Node version and registry | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
registry-url: "https://registry.npmjs.org" | |
- name: Install Dependencies | |
run: npm ci | |
- name: Update version in package.json and package-lock.json | |
run: | | |
VERSION=${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version || github.event.release.tag_name }} | |
echo "Updating version to $VERSION" | |
# Fail the action if VERSION isn't set | |
if [ -z "$VERSION" ]; then | |
echo "VERSION is not set. Failing the action." | |
exit 1 | |
fi | |
# Update version in package.json | |
jq --arg version "$VERSION" '.version = $version' package.json > temp.json && mv temp.json package.json | |
# Update version in package-lock.json | |
jq --arg version "$VERSION" '.version = $version' package-lock.json > temp-lock.json && mv temp-lock.json package-lock.json | |
# Check if there are changes (version was actually updated) | |
git diff --exit-code || HAS_CHANGES=1 | |
if [ "$HAS_CHANGES" ]; then | |
git config user.name "GitHub actions" | |
git config user.email [email protected] | |
git add package.json package-lock.json | |
git commit -m "Update version to $VERSION" | |
git push | |
else | |
echo "Version is already up to date." | |
fi | |
- name: Publish to NPM | |
run: npm publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Merge develop into main | |
run: | | |
git fetch origin develop:develop | |
git fetch origin main:main | |
git checkout main | |
git reset --hard origin/main # Resets the local main branch to match origin/main | |
git merge --no-ff develop -m "Merging develop into main via GitHub Action" | |
git push origin main | |
notify-others: | |
runs-on: ubuntu-latest | |
needs: update-version-and-publish | |
strategy: | |
matrix: | |
repo: | |
- CMSgov/qpp-submissions-api | |
steps: | |
- name: Repository Dispatch | |
uses: peter-evans/repository-dispatch@v3 | |
with: | |
token: ${{ secrets.GH_USER_TOKEN }} | |
repository: ${{ matrix.repo }} | |
event-type: lib-update-event | |
client-payload: '{"ref": "${{ github.ref }}", "private_package": "@CMSGov/qpp-measures-data", "public_package":"qpp-measures-data" ,"tag_name": "${{ github.event.release.tag_name }}", "html_url": "${{github.event.release.html_url}}"}' | |
- name: Notify APP Submissions API Channel | |
uses: rtCamp/action-slack-notify@96d5e2a64fc78a6b7ac13265f55bee296869967a | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SUBMISSIONS_API_SLACK_WEBHOOK }} | |
SLACK_CHANNEL: "p-qppsf-api" | |
SLACK_MESSAGE: "`qpp-measures-data` has been updated to version <${{github.event.release.html_url}}|${{ github.event.release.tag_name }}>" | |
SLACK_TITLE: New qpp-measures-data release | |
SLACK_USERNAME: releaseNotify |