diff --git a/.github/workflows/changelog-and-release.yml b/.github/workflows/changelog-and-release.yml index 4567e26fb1..da1e7fe5da 100644 --- a/.github/workflows/changelog-and-release.yml +++ b/.github/workflows/changelog-and-release.yml @@ -22,31 +22,33 @@ jobs: write-changelog-and-release: runs-on: ubuntu-latest steps: + - name: Get info + id: get-info + run: | + if [[ "${{ inputs.version }}" == "alpha" ]]; then + echo "branch=$(echo 'next')" >> $GITHUB_OUTPUT + echo "proRepos=$(echo '${{ vars.NEXT_PRO_PLUGIN_REPOS }}')" >> $GITHUB_OUTPUT + else + echo "branch=$(echo 'main')" >> $GITHUB_OUTPUT + echo "proRepos=$(echo '${{ vars.PRO_PLUGIN_REPOS }}')" >> $GITHUB_OUTPUT + fi - uses: actions/create-github-app-token@v1 id: app-token with: app-id: ${{ vars.NOCOBASE_APP_ID }} private-key: ${{ secrets.NOCOBASE_APP_PRIVATE_KEY }} - repositories: nocobase,pro-plugins,${{ join(fromJSON(vars.PRO_PLUGIN_REPOS), ',') }} + repositories: nocobase,pro-plugins,${{ join(fromJSON(steps.get-info.outputs.proRepos), ',') }} skip-token-revoke: true - name: Get GitHub App User 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: Get branch - id: get-branch - run: | - if [[ "${{ inputs.version }}" == "alpha" ]]; then - echo "branch=$(echo 'next')" >> $GITHUB_OUTPUT - else - echo "branch=$(echo 'main')" >> $GITHUB_OUTPUT - fi - name: Checkout uses: actions/checkout@v4 with: repository: nocobase/nocobase - ref: ${{ steps.get-branch.outputs.branch }} + ref: ${{ steps.get-info.outputs.branch }} token: ${{ steps.app-token.outputs.token }} persist-credentials: true fetch-depth: 0 @@ -55,16 +57,16 @@ jobs: with: repository: nocobase/pro-plugins path: packages/pro-plugins - ref: ${{ steps.get-branch.outputs.branch }} + ref: ${{ steps.get-info.outputs.branch }} fetch-depth: 0 token: ${{ steps.app-token.outputs.token }} persist-credentials: true - name: Clone pro repos shell: bash run: | - for repo in ${{ join(fromJSON(vars.PRO_PLUGIN_REPOS), ' ') }} + for repo in ${{ join(fromJSON(steps.get-info.outputs.proRepos), ' ') }} do - git clone -b ${{ steps.get-branch.outputs.branch }} https://x-access-token:${{ steps.app-token.outputs.token }}@github.com/nocobase/$repo.git packages/pro-plugins/@nocobase/$repo + git clone -b ${{ steps.get-info.outputs.branch }} https://x-access-token:${{ steps.app-token.outputs.token }}@github.com/nocobase/$repo.git packages/pro-plugins/@nocobase/$repo done - name: Set user run: | @@ -81,7 +83,7 @@ jobs: run: | node scripts/release/changelogAndRelease.js --ver ${{ inputs.version }} --cmsURL ${{ secrets.CMS_URL }} --cmsToken ${{ secrets.CMS_TOKEN }} env: - PRO_PLUGIN_REPOS: ${{ vars.PRO_PLUGIN_REPOS }} + PRO_PLUGIN_REPOS: ${{ steps.get-info.outputs.proRepos }} GH_TOKEN: ${{ steps.app-token.outputs.token }} - name: Commit and push run: | diff --git a/.github/workflows/manual-build-pro-image.yml b/.github/workflows/manual-build-pro-image.yml index 17db19f1da..3330327a35 100644 --- a/.github/workflows/manual-build-pro-image.yml +++ b/.github/workflows/manual-build-pro-image.yml @@ -88,23 +88,24 @@ jobs: uses: docker/setup-buildx-action@v2 with: driver-opts: network=host - - name: Docker meta - id: meta - uses: docker/metadata-action@v4 - with: - images: | - nocobase/nocobase - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - name: Login to Aliyun Container Registry uses: docker/login-action@v2 with: registry: ${{ secrets.ALI_DOCKER_REGISTRY }} username: ${{ secrets.ALI_DOCKER_USERNAME }} password: ${{ secrets.ALI_DOCKER_PASSWORD }} + - name: Get tag + id: get-tag + run: | + if [ "${{ inputs.pr_number }}" != "" ]; then + echo "tag=pr-${{ inputs.pr_number }}" >> "$GITHUB_OUTPUT" + else + echo "tag=${{ github.head_ref || github.ref_name }}" >> "$GITHUB_OUTPUT" + fi + - name: Set tags + id: set-tags + run: | + echo "::set-output name=tags::${{ secrets.ALI_DOCKER_REGISTRY }}/nocobase/nocobase:${{ steps.get-tag.outputs.tag }}-pro - name: Set variables run: | target_directory="./packages/pro-plugins/@nocobase" @@ -117,7 +118,7 @@ jobs: echo "var1=$BEFORE_PACK_NOCOBASE" >> $GITHUB_OUTPUT echo "var2=$APPEND_PRESET_LOCAL_PLUGINS" >> $GITHUB_OUTPUT id: vars - - name: Build and push - pr-${{ inputs.pr_number }}-pro + - name: Build and push - ${{ steps.get-tag.outputs.tag }}-pro uses: docker/build-push-action@v3 with: context: . @@ -129,12 +130,12 @@ jobs: BEFORE_PACK_NOCOBASE=${{ steps.vars.outputs.var1 }} APPEND_PRESET_LOCAL_PLUGINS=${{ steps.vars.outputs.var2 }} push: true - tags: ${{ secrets.ALI_DOCKER_REGISTRY }}/nocobase/nocobase:pr-${{ inputs.pr_number }}-pro + tags: ${{ steps.set-tags.outputs.tags }} - name: Deploy NocoBase run: | - curl --retry 2 --location --request POST "${{secrets.NOCOBASE_DEPLOY_HOST}}pr-${{ inputs.pr_number }}-pro" \ + curl --retry 2 --location --request POST "${{secrets.NOCOBASE_DEPLOY_HOST}}${{ steps.get-tag.outputs.tag }}-pro" \ --header 'Content-Type: application/json' \ -d "{ - \"tag\": \"pr-${{ inputs.pr_number }}-pro\", + \"tag\": \"${{ steps.get-tag.outputs.tag }}-pro\", \"dialect\": \"postgres\" }" diff --git a/.github/workflows/release-next.yml b/.github/workflows/release-next.yml index 240075a57f..d22d208ae1 100644 --- a/.github/workflows/release-next.yml +++ b/.github/workflows/release-next.yml @@ -10,8 +10,11 @@ on: jobs: publish-npm: runs-on: ubuntu-latest - container: node:18 steps: + - name: Set Node.js 18 + uses: actions/setup-node@v3 + with: + node-version: 18 - uses: actions/create-github-app-token@v1 id: app-token with: @@ -27,7 +30,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 with: + repository: nocobase/nocobase ref: next + token: ${{ steps.app-token.outputs.token }} + persist-credentials: true fetch-depth: 0 - name: Send curl request and parse response env: diff --git a/scripts/release/changelogAndRelease.js b/scripts/release/changelogAndRelease.js index ad39e59f7c..afd3e84a13 100644 --- a/scripts/release/changelogAndRelease.js +++ b/scripts/release/changelogAndRelease.js @@ -381,7 +381,7 @@ async function getVersion() { return { from, to }; } -async function postCMS(title, content, contentCN) { +async function postCMS(tag, content, contentCN) { const { cmsToken, cmsURL } = program.opts(); if (!cmsToken || !cmsURL) { console.error('No cmsToken or cmsURL provided'); @@ -394,13 +394,16 @@ async function postCMS(title, content, contentCN) { Authorization: `Bearer ${cmsToken}`, }, params: { - filterKeys: ['title'], + filterKeys: ['slug'], }, data: { - title, - title_cn: title, + slug: tag, + title: `Nocobase ${tag}`, + title_cn: `Nocobase ${tag}`, content, content_cn: contentCN, + description: `Release Note of ${tag}`, + description_cn: `${tag} 更新日志`, tags: [4], status: 'drafted', author: 'nocobase [bot]',