11name : 🦋 Changesets Release
22
3- permissions :
4- contents : write
5-
63on :
74 push :
85 branches :
2522 contents : write
2623 packages : write
2724 pull-requests : write
25+ id-token : write
2826 if : github.repository == 'triggerdotdev/trigger.dev'
2927 outputs :
3028 published : ${{ steps.changesets.outputs.published }}
5957 - name : 🔎 Type check
6058 run : pnpm run typecheck --filter "@trigger.dev/*" --filter "trigger.dev"
6159
62- - name : 🔐 Setup npm auth
63- run : |
64- echo "registry=https://registry.npmjs.org" >> ~/.npmrc
65- echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> ~/.npmrc
66-
6760 # This action has two responsibilities. The first time the workflow runs
6861 # (initial push to the `main` branch) it will create a new branch and
6962 # then open a PR with the related changes for the new version. After the
@@ -75,24 +68,76 @@ jobs:
7568 uses : changesets/action@v1
7669 with :
7770 version : pnpm run changeset:version
78- commit : " chore: Update version for release"
79- title : " chore: Update version for release"
71+ commit : " chore: release packages "
72+ title : " chore: release packages "
8073 publish : pnpm run changeset:release
8174 createGithubReleases : true
8275 env :
8376 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
84- NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
85-
86- # - name: 🚀 PR / Publish (mock)
87- # if: ${{ env.ACT }}
88- # id: changesets
89- # run: |
90- # echo "published=true" >> "$GITHUB_OUTPUT"
91- # echo "publishedPackages=[{\"name\": \"@xx/xx\", \"version\": \"1.2.0\"}, {\"name\": \"@xx/xy\", \"version\": \"0.8.9\"}]" >> "$GITHUB_OUTPUT"
9277
9378 - name : 📦 Get package version
9479 if : steps.changesets.outputs.published == 'true'
9580 id : get_version
9681 run : |
9782 package_version=$(echo '${{ steps.changesets.outputs.publishedPackages }}' | jq -r '.[0].version')
9883 echo "package_version=${package_version}" >> "$GITHUB_OUTPUT"
84+
85+ # this triggers the publish workflow for the docker images
86+ - name : 🏷️ Create and push docker tag
87+ if : steps.changesets.outputs.published == 'true'
88+ run : |
89+ set -e
90+ git tag "v.docker.${{ steps.get_version.outputs.package_version }}"
91+ git push origin "v.docker.${{ steps.get_version.outputs.package_version }}"
92+
93+ - name : Update PR title with version
94+ if : steps.changesets.outputs.published != 'true'
95+ env :
96+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
97+ run : |
98+ PR_NUMBER=$(gh pr list --head changeset-release/main --json number --jq '.[0].number')
99+ if [ -n "$PR_NUMBER" ]; then
100+ git fetch origin changeset-release/main
101+ # we arbitrarily reference the version of the cli package here; it is the same for all package releases
102+ VERSION=$(git show origin/changeset-release/main:packages/cli-v3/package.json | jq -r '.version')
103+ gh pr edit "$PR_NUMBER" --title "chore: release v$VERSION"
104+ fi
105+
106+ update-lockfile :
107+ name : Update lockfile on release PR
108+ runs-on : ubuntu-latest
109+ needs : release
110+ if : needs.release.outputs.published != 'true'
111+ permissions :
112+ contents : write
113+ steps :
114+ - name : Checkout release branch
115+ uses : actions/checkout@v4
116+ with :
117+ ref : changeset-release/main
118+
119+ - name : Setup pnpm
120+ uses : pnpm/action-setup@v4
121+ with :
122+ version : 10.23.0
123+
124+ - name : Setup node
125+ uses : buildjet/setup-node@v4
126+ with :
127+ node-version : 20.19.0
128+
129+ - name : Install and update lockfile
130+ run : pnpm install
131+
132+ - name : Commit and push lockfile
133+ run : |
134+ set -e
135+ if git diff --quiet pnpm-lock.yaml; then
136+ echo "No lockfile changes"
137+ else
138+ git config user.name "github-actions[bot]"
139+ git config user.email "github-actions[bot]@users.noreply.github.com"
140+ git add pnpm-lock.yaml
141+ git commit -m "chore: update lockfile for release"
142+ git push origin changeset-release/main
143+ fi
0 commit comments