-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: implement release workflows (#113)
- Loading branch information
Showing
6 changed files
with
226 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// ORIGINALLY FROM CLOUDFLARE WRANGLER: | ||
// https://github.com/cloudflare/wrangler2/blob/main/.github/changeset-version.js | ||
|
||
import { exec } from "child_process" | ||
|
||
// This script is used by the `release.yml` workflow to update the version of the packages being released. | ||
// The standard step is only to run `changeset version` but this does not update the package-lock.json file. | ||
// So we also run `npm install`, which does this update. | ||
// This is a workaround until this is handled automatically by `changeset version`. | ||
// See https://github.com/changesets/changesets/issues/421. | ||
exec("npx changeset version") | ||
exec("npm install") |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// ORIGINALLY FROM CLOUDFLARE WRANGLER: | ||
// https://github.com/cloudflare/wrangler2/blob/main/.github/version-script.js | ||
|
||
import { exec } from "child_process" | ||
import fs from "fs" | ||
|
||
const pkgJsonPath = "cli/package.json" | ||
try { | ||
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath)) | ||
exec("git rev-parse --short HEAD", (err, stdout) => { | ||
if (err) { | ||
console.log(err) | ||
process.exit(1) | ||
} | ||
pkg.version = "0.0.0-beta." + stdout.trim() | ||
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, "\t") + "\n") | ||
}) | ||
} catch (error) { | ||
console.error(error) | ||
process.exit(1) | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// ORIGINALLY FROM CLOUDFLARE WRANGLER: | ||
// https://github.com/cloudflare/wrangler2/blob/main/.github/version-script.js | ||
|
||
import { exec } from "child_process" | ||
import fs from "fs" | ||
|
||
const pkgJsonPath = "cli/package.json" | ||
try { | ||
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath)) | ||
exec("git rev-parse --short HEAD", (err, stdout) => { | ||
if (err) { | ||
console.log(err) | ||
process.exit(1) | ||
} | ||
pkg.version = "0.0.0-next." + stdout.trim() | ||
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, "\t") + "\n") | ||
}) | ||
} catch (error) { | ||
console.error(error) | ||
process.exit(1) | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
# Adapted from create-t3-app. | ||
name: Write Beta Release comment | ||
|
||
on: | ||
workflow_run: | ||
workflows: ["Release - Beta"] | ||
types: | ||
- completed | ||
|
||
jobs: | ||
comment: | ||
if: | | ||
github.repository_owner == 'shadcn' && | ||
${{ github.event.workflow_run.conclusion == 'success' }} | ||
runs-on: ubuntu-latest | ||
name: Write comment to the PR | ||
steps: | ||
- name: "Comment on PR" | ||
uses: actions/github-script@v6 | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
script: | | ||
const allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
run_id: context.payload.workflow_run.id, | ||
}); | ||
for (const artifact of allArtifacts.data.artifacts) { | ||
// Extract the PR number and package version from the artifact name | ||
const match = /^npm-package-\@shadcn\/ui@(.*?)-pr-(\d+)/.exec(artifact.name); | ||
if (match) { | ||
require("fs").appendFileSync( | ||
process.env.GITHUB_ENV, | ||
`\nBETA_PACKAGE_VERSION=${match[1]}` + | ||
`\nWORKFLOW_RUN_PR=${match[2]}` + | ||
`\nWORKFLOW_RUN_ID=${context.payload.workflow_run.id}` | ||
); | ||
break; | ||
} | ||
} | ||
- name: "Comment on PR with Link" | ||
uses: marocchino/sticky-pull-request-comment@v2 | ||
with: | ||
number: ${{ env.WORKFLOW_RUN_PR }} | ||
message: | | ||
A new @shadcn/ui prerelease is available for testing. You can install this latest build in your project with: | ||
```sh | ||
pnpm @shadcn/ui@${{ env.BETA_PACKAGE_VERSION }} | ||
``` | ||
- name: "Remove the autorelease label once published" | ||
uses: actions/github-script@v6 | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
script: | | ||
github.rest.issues.removeLabel({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
issue_number: ${{ env.WORKFLOW_RUN_PR }}, | ||
name: '🚀 autorelease', | ||
}); |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
# Adapted from create-t3-app. | ||
|
||
name: Release - Beta | ||
|
||
on: | ||
pull_request: | ||
types: [labeled] | ||
branches: | ||
- main | ||
jobs: | ||
prerelease: | ||
if: | | ||
github.repository_owner == 'shadcn' && | ||
contains(github.event.pull_request.labels.*.name, '🚀 autorelease') | ||
name: Build & Publish a beta release to NPM | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout Repo | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Use PNPM | ||
uses: pnpm/[email protected] | ||
|
||
- name: Use Node.js 18 | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: 18 | ||
cache: "pnpm" | ||
|
||
- name: Install NPM Dependencies | ||
run: pnpm install | ||
|
||
- name: Modify package.json version | ||
run: node .github/version-script-beta.js | ||
|
||
- name: Authenticate to NPM | ||
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_ACCESS_TOKEN }}" > packages/cli/.npmrc | ||
|
||
- name: Publish Beta to NPM | ||
run: pnpm pub:beta | ||
env: | ||
NPM_PUBLISH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }} | ||
|
||
- name: get-npm-version | ||
id: package-version | ||
uses: martinbeentjes/npm-get-version-action@main | ||
with: | ||
path: packages/cli | ||
|
||
- name: Upload packaged artifact | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: npm-package-@shadcn\/ui@${{ steps.package-version.outputs.current-version }}-pr-${{ github.event.number }} # encode the PR number into the artifact name | ||
path: packages/cli/dist/index.js |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
# Adapted from create-t3-app. | ||
|
||
name: Release | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
|
||
jobs: | ||
release: | ||
if: ${{ github.repository_owner == 'shadcn' }} | ||
name: Create a PR for release workflow | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout Repo | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Use PNPM | ||
uses: pnpm/[email protected] | ||
|
||
- name: Use Node.js 18 | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: 18 | ||
cache: "pnpm" | ||
|
||
- name: Install NPM Dependencies | ||
run: pnpm install | ||
|
||
- name: Check for errors | ||
run: pnpm check | ||
|
||
- name: Build the package | ||
run: pnpm build:cli | ||
|
||
- name: Create Version PR or Publish to NPM | ||
id: changesets | ||
uses: changesets/[email protected] | ||
with: | ||
commit: "chore(release): version packages" | ||
title: "chore(release): version packages" | ||
version: node .github/changeset-version.js | ||
publish: npx changeset publish | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
NPM_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }} | ||
NODE_ENV: "production" |
2478e66
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Successfully deployed to the following URLs:
next-template – ./templates/next-template
next-template-git-main-shadcn.vercel.app
template.shadcn.com
next-template-shadcn.vercel.app
2478e66
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Successfully deployed to the following URLs:
example-playground – ./examples/playground
example-playground.vercel.app
example-playground-git-main-shadcn-pro.vercel.app
example-playground-shadcn-pro.vercel.app
2478e66
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Successfully deployed to the following URLs:
ui – ./apps/www
ui-shadcn-pro.vercel.app
ui-git-main-shadcn-pro.vercel.app
ui.shadcn.com