From 43580190a0644857275f3df777b732fe0ae411fc Mon Sep 17 00:00:00 2001 From: Evans Date: Tue, 5 Mar 2024 17:09:32 +0800 Subject: [PATCH] :construction_worker: Add release CI --- .github/workflows/release.yml | 104 ++++++++++++++++++++++++++++++++++ package.json | 4 ++ 2 files changed, 108 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..169eafa --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,104 @@ +name: Release package +on: + workflow_dispatch: + inputs: + release-type: + description: "Release type (one of): patch, minor, major, prepatch, preminor, premajor, prerelease" + required: true + +permissions: write-all + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4.1.1 + + - name: Install pnpm + uses: pnpm/action-setup@v3.0.0 + with: + version: 8 + + - name: Setup Node + uses: actions/setup-node@v4.0.2 + with: + node-version: "20.x" + registry-url: "https://registry.npmjs.org" + + # Install dependencies (required by Run tests step) + - name: Install dependencies + run: pnpm install + + - name: Git configuration + run: | + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --global user.name "GitHub Actions" + + # Bump package version + # Use tag latest + - name: Bump release version + if: startsWith(github.event.inputs.release-type, 'pre') != true + run: | + echo "NEW_VERSION=$(npm --no-git-tag-version version $RELEASE_TYPE)" >> $GITHUB_ENV + echo "RELEASE_TAG=latest" >> $GITHUB_ENV + env: + RELEASE_TYPE: ${{ github.event.inputs.release-type }} + + # Bump package pre-release version + # Use tag beta for pre-release versions + - name: Bump pre-release version + if: startsWith(github.event.inputs.release-type, 'pre') + run: | + echo "NEW_VERSION=$(npm --no-git-tag-version --preid=beta version $RELEASE_TYPE + echo "RELEASE_TAG=beta" >> $GITHUB_ENV + env: + RELEASE_TYPE: ${{ github.event.inputs.release-type }} + + # Update changelog unreleased section with new version + - name: Update changelog + uses: superfaceai/release-changelog-action@v1 + with: + path-to-changelog: CHANGELOG.md + version: ${{ env.NEW_VERSION }} + operation: release + + # Commit changes + - name: Commit CHANGELOG.md and package.json changes and create tag + run: | + git add "package.json" + git add "CHANGELOG.md" + git commit -m "chore: release ${{ env.NEW_VERSION }}" + git tag ${{ env.NEW_VERSION }} + + # Publish version to public repository + - name: Publish + run: yarn publish --verbose --access public --tag ${{ env.RELEASE_TAG }} + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + # Push repository changes + - name: Push changes to repository + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git push origin && git push --tags + + # Read version changelog + - id: get-changelog + name: Get version changelog + uses: superfaceai/release-changelog-action@v1 + with: + path-to-changelog: CHANGELOG.md + version: ${{ env.NEW_VERSION }} + operation: read + + # Update GitHub release with changelog + - name: Update GitHub release documentation + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ env.NEW_VERSION }} + body: ${{ steps.get-changelog.outputs.changelog }} + prerelease: ${{ startsWith(github.event.inputs.release-type, 'pre') }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/package.json b/package.json index e644ac5..87b5d9f 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,10 @@ "name": "kimichat.js", "version": "0.1.0", "description": "A Kimi Chat nodejs sdk, unofficial version", + "repository": { + "type": "git", + "url": "https://github.com/noraincode/kimichat-js" + }, "scripts": { "test": "jest --coverage", "build": "tsc"