refactor(project): 重构项目结构并优化样式 #45
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: 发布发行版 | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| permissions: | |
| contents: write | |
| id-token: write | |
| packages: write | |
| jobs: | |
| release: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| releases_created: ${{ steps.release-please.outputs.releases_created }} | |
| steps: | |
| - name: 获取token | |
| uses: actions/create-github-app-token@v2 | |
| id: app-token | |
| with: | |
| app-id: ${{ secrets.APP_ID }} | |
| private-key: ${{ secrets.APP_PRIVATE_KEY }} | |
| - name: 获取用户ID | |
| id: get-user-id | |
| run: echo "user-id=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT" | |
| env: | |
| GH_TOKEN: ${{ steps.app-token.outputs.token }} | |
| - name: 运行 release-please-action | |
| id: release-please | |
| uses: googleapis/release-please-action@v4 | |
| with: | |
| token: ${{ steps.app-token.outputs.token }} | |
| config-file: .release-please-config.json | |
| manifest-file: .release-please-manifest.json | |
| create-release: | |
| needs: [release] | |
| if: needs.release.outputs.releases_created == 'true' | |
| runs-on: ubuntu-latest | |
| outputs: | |
| package_name: ${{ steps.get-package-name.outputs.name }} | |
| package_short_name: ${{ steps.get-package-name.outputs.PACKAGE_SHORT_NAME }} | |
| steps: | |
| - name: 检出主分支代码 | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: main | |
| fetch-tags: true | |
| - name: 获取token | |
| uses: actions/create-github-app-token@v2 | |
| id: app-token | |
| with: | |
| app-id: ${{ secrets.APP_ID }} | |
| private-key: ${{ secrets.APP_PRIVATE_KEY }} | |
| owner: ${{ github.repository_owner }} | |
| - name: 获取用户ID | |
| id: get-user-id | |
| run: echo "user-id=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT" | |
| env: | |
| GH_TOKEN: ${{ steps.app-token.outputs.token }} | |
| - name: 设置 pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9.13.2 | |
| run_install: | | |
| - args: [--no-frozen-lockfile] | |
| - name: 获取包名 | |
| id: get-package-name | |
| run: | | |
| PACKAGE_NAME=$(pnpm pkg get name | tr -d '"') | |
| PACKAGE_SHORT_NAME=$(pnpm pkg get name | tr -d '"' | awk -F'/' '{print $2}') | |
| echo "PACKAGE_SHORT_NAME=$PACKAGE_SHORT_NAME" >> $GITHUB_OUTPUT | |
| echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_OUTPUT | |
| - name: 构建 | |
| run: | | |
| pnpm build | |
| pnpm pkg delete devDependencies | |
| mkdir -p ${{ runner.temp }}/temp/ | |
| cp -r package.json CHANGELOG.md README.md LICENSE resources config lib ${{ runner.temp }}/temp/ | |
| - name: 上传构建产物 | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ steps.get-package-name.outputs.PACKAGE_SHORT_NAME }} | |
| path: ${{ runner.temp }}/temp/ | |
| publish-to-github: | |
| runs-on: ubuntu-latest | |
| needs: [release, create-release] | |
| if: needs.release.outputs.releases_created == 'true' | |
| steps: | |
| - name: 导入构建产物 | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ needs.create-release.outputs.package_short_name }} | |
| path: ./ | |
| - name: 发布到 GitHub Packages | |
| id: publish-to-github | |
| uses: JS-DevTools/npm-publish@v3 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| registry: https://npm.pkg.github.com | |
| access: public | |
| provenance: true | |
| publish-to-npm: | |
| runs-on: ubuntu-latest | |
| needs: [release, create-release] | |
| if: needs.release.outputs.releases_created == 'true' | |
| steps: | |
| - name: 导入构建产物 | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ needs.create-release.outputs.package_short_name }} | |
| path: ./ | |
| - name: 发布到 NPM | |
| id: publish-to-npm | |
| uses: JS-DevTools/npm-publish@v3 | |
| with: | |
| token: ${{ secrets.NPM_TOKEN }} | |
| registry: https://registry.npmjs.org/ | |
| access: public | |
| provenance: true |