fixing create pr #16
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: Publish Package to npmjs | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- 'prompt-shared-state/**' | |
permissions: | |
contents: write # Required for creating branches/PRs | |
pull-requests: write # Required for opening pull requests | |
env: | |
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} | |
jobs: | |
publish: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Set up Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '23.x' | |
registry-url: 'https://registry.npmjs.org' | |
- name: Enable Corepack | |
run: corepack enable | |
- name: Determine version bump from commit message | |
id: version_bump | |
run: | | |
# Grab the latest commit message | |
COMMIT_MESSAGE=$(git log -1 --pretty=%B) | |
# Default to patch. | |
VERSION_TYPE="patch" | |
# If the commit message contains '[major]' or '[minor]', set accordingly | |
if [[ "$COMMIT_MESSAGE" == *"[major]"* ]]; then | |
VERSION_TYPE="major" | |
elif [[ "$COMMIT_MESSAGE" == *"[minor]"* ]]; then | |
VERSION_TYPE="minor" | |
fi | |
echo "VERSION_TYPE=$VERSION_TYPE" >> "$GITHUB_OUTPUT" | |
- name: Install dependencies | |
run: | | |
cd prompt-shared-state | |
yarn install | |
- name: Bump version | |
run: | | |
cd prompt-shared-state | |
VERSION_TYPE="${{ steps.version_bump.outputs.VERSION_TYPE }}" | |
echo "Bumping version type: $VERSION_TYPE" | |
case "$VERSION_TYPE" in | |
major) | |
yarn version major | |
;; | |
minor) | |
yarn version minor | |
;; | |
*) | |
yarn version patch | |
;; | |
esac | |
- name: Commit version bump and push to new branch | |
id: commit_bump | |
run: | | |
# Configure git | |
git config user.name "github-actions" | |
git config user.email "[email protected]" | |
# Stage and commit changes if package.json or yarn.lock changed | |
git add prompt-shared-state/package.json prompt-shared-state/yarn.lock | |
if ! git diff --cached --exit-code; then | |
# Pull out the newly bumped version | |
NEW_VERSION=$(node -p "require('./prompt-shared-state/package.json').version") | |
COMMIT_MSG="chore: bump prompt-shared-state version to $NEW_VERSION [skip ci]" | |
# Commit | |
git commit -m "$COMMIT_MSG" | |
# Create and push version-bump branch | |
BRANCH_NAME="chore/bump-prompt-shared-state-$NEW_VERSION" | |
git checkout -b "$BRANCH_NAME" | |
git push origin "$BRANCH_NAME" | |
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT | |
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT | |
else | |
echo "No version bump commit required." | |
fi | |
- name: Create pull request | |
if: ${{ steps.commit_bump.outputs.branch_name != '' }} | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const branchName = "${{ steps.commit_bump.outputs.branch_name }}""; | |
const newVersion = "${{ steps.commit_bump.outputs.new_version }}"; | |
const { data: pullRequest } = await github.pulls.create({ | |
owner: github.context.repo.owner, | |
repo: github.context.repo.repo, | |
title: `chore: bump prompt-shared-state version to ${newVersion}`, | |
head: branchName, | |
base: 'main', | |
body: 'This pull request was automatically opened by the version bump workflow.', | |
draft: false | |
}); | |
core.setOutput('pull_request_number', pullRequest.number); | |
- name: Build the package | |
if: ${{ steps.commit_bump.outputs.branch_name != '' }} | |
run: | | |
cd prompt-shared-state | |
yarn build | |
- name: Publish to npm | |
if: ${{ steps.commit_bump.outputs.branch_name != '' }} | |
env: | |
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} | |
run: | | |
echo "Publishing package to npm..." | |
cd prompt-shared-state | |
yarn npm publish |