feat: add more flags and refine #5
This file contains hidden or 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: Release all CLIs & Deploy CF Workers | ||
on: | ||
pull_request: | ||
branches: [ main ] | ||
types: [ opened, synchronize ] | ||
push: | ||
branches: [ main ] | ||
env: | ||
WORKSPACES: create-db create-pg create-postgres | ||
jobs: | ||
# This job runs only on pull_request → bumps versions & changelogs via Changesets | ||
version: | ||
if: github.event_name == 'pull_request' | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: 🛎️ Checkout full & tags | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
persist-credentials: true | ||
- name: 🤐 Disable Husky | ||
run: echo "HUSKY=0" >> $GITHUB_ENV | ||
- name: 📦 Setup pnpm | ||
uses: pnpm/action-setup@v2 | ||
with: | ||
version: 8 | ||
- name: 🔧 Install dependencies | ||
run: pnpm install | ||
- name: 🔄 Version & changelogs via Changesets | ||
uses: changesets/action@v1 | ||
with: | ||
version: pnpm changeset version --yes | ||
commitMessage: chore(release): bump [skip ci] | ||
commitMode: git-cli | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
# This job runs only on push → aggregates logs, creates a release & publishes | ||
publish: | ||
if: github.event_name == 'push' | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: 🛎️ Checkout full & tags | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
persist-credentials: true | ||
- name: 🤐 Disable Husky | ||
run: echo "HUSKY=0" >> $GITHUB_ENV | ||
- name: 📦 Setup pnpm | ||
uses: pnpm/action-setup@v2 | ||
with: | ||
version: 8 | ||
- name: 🔧 Install dependencies | ||
run: pnpm install | ||
- name: 🔧 Install jq | ||
run: sudo apt-get update && sudo apt-get install -y jq | ||
- name: 📄 Copy README to child CLIs | ||
run: | | ||
for pkg in $WORKSPACES; do | ||
cp create-db/README.md "$pkg/README.md" | ||
done | ||
- name: 📑 Aggregate changelogs | ||
id: aggregate | ||
run: | | ||
# grab the new version from one of your packages | ||
NEW_VERSION=$(jq -r '.version' create-db/package.json) | ||
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV | ||
# build the aggregated changelog | ||
echo "# Release v$NEW_VERSION" > AGGREGATED_CHANGELOG.md | ||
for pkg in $WORKSPACES; do | ||
echo "## $pkg" >> AGGREGATED_CHANGELOG.md | ||
# extract the section for this version | ||
sed -n "/^## v$NEW_VERSION/,/^## /p" $pkg/CHANGELOG.md \ | ||
| sed '1d;$d' \ | ||
>> AGGREGATED_CHANGELOG.md | ||
echo "" >> AGGREGATED_CHANGELOG.md | ||
done | ||
- name: 🚩 Create GitHub Release | ||
uses: actions/create-release@v1 | ||
with: | ||
tag_name: v${{ env.NEW_VERSION }} | ||
release_name: Release v${{ env.NEW_VERSION }} | ||
body_path: AGGREGATED_CHANGELOG.md | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
- name: 🔑 Configure npm auth | ||
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.CREATE_DB_TOKEN_NPM }}" > ~/.npmrc | ||
- name: 🚀 Publish CLIs | ||
run: pnpm -r --filter "{create-db,create-pg,create-postgres}" publish --access public | ||
# — CF production deploys commented out | ||
# - name: ☁️ Deploy create-db-worker (production) | ||
# uses: cloudflare/wrangler-action@v3 | ||
# ... | ||
- name: 🧹 Cleanup npm auth | ||
run: rm -f ~/.npmrc |