|
1 | 1 | name: Publish to npm |
2 | 2 |
|
3 | 3 | on: |
4 | | - push: |
5 | | - branches: |
6 | | - - main # Run when a push is made to the main branch |
| 4 | + workflow_dispatch: |
| 5 | + inputs: |
| 6 | + version: |
| 7 | + description: "Version to publish (e.g., 0.1.0, 0.2.0-beta)" |
| 8 | + required: false |
| 9 | + default: "" |
| 10 | + tag: |
| 11 | + description: "NPM tag (e.g., latest, dev)" |
| 12 | + required: false |
| 13 | + default: "dev" |
7 | 14 |
|
8 | 15 | jobs: |
9 | 16 | build-and-publish: |
@@ -34,15 +41,16 @@ jobs: |
34 | 41 | run: | |
35 | 42 | # Get the current version from package.json |
36 | 43 | CURRENT_VERSION=$(jq -r '.version' package.json) |
37 | | - |
38 | | - # Generate a version with just the date suffix |
39 | | - DATE_VERSION=$(date +'%Y%m%d') |
40 | | - VERSION="${CURRENT_VERSION}-${DATE_VERSION}" |
41 | | - |
42 | | - # Store the version and package name in environment variables for later steps |
43 | | - echo "PACKAGE_VERSION=${VERSION}" >> $GITHUB_ENV |
44 | | - echo "PACKAGE_NAME=@bytebase/dbhub" >> $GITHUB_ENV |
45 | | - |
| 44 | +
|
| 45 | + # Use input version if provided, otherwise use current version |
| 46 | + if [ -n "${{ inputs.version }}" ]; then |
| 47 | + VERSION="${{ inputs.version }}" |
| 48 | + else |
| 49 | + VERSION="${CURRENT_VERSION}" |
| 50 | + fi |
| 51 | +
|
| 52 | + echo "Publishing version: ${VERSION} with tag: ${{ inputs.tag }}" |
| 53 | +
|
46 | 54 | # Update package.json to use @bytebase scope and set version |
47 | 55 | jq --arg version "$VERSION" '.name = "@bytebase/dbhub" | .version = $version' package.json > package.json.tmp |
48 | 56 | mv package.json.tmp package.json |
|
55 | 63 | jq '.bin = {"dbhub": "dist/index.js"}' package.json > package.json.tmp |
56 | 64 | mv package.json.tmp package.json |
57 | 65 |
|
58 | | - - name: Try to unpublish existing daily version |
59 | | - run: | |
60 | | - # Try to unpublish any existing package with the same version from today |
61 | | - # The || true ensures the workflow continues even if the package doesn't exist |
62 | | - npm unpublish ${{ env.PACKAGE_NAME }}@${{ env.PACKAGE_VERSION }} || true |
63 | | - env: |
64 | | - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |
65 | | - |
66 | 66 | - name: Publish to npm |
67 | | - run: pnpm publish --no-git-checks --access public --tag dev |
| 67 | + run: pnpm publish --no-git-checks --access public --tag ${{ inputs.tag }} |
68 | 68 | env: |
69 | 69 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |
0 commit comments