diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 40b36f64c..07a4550bd 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -4,25 +4,47 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.inputs.repository }} cancel-in-progress: true +run-name: Auto merge ${{ github.ref }}-${{ inputs.repository }} + on: workflow_dispatch: inputs: repository: description: 'Please enter a repository name' + branch: + type: choice + description: 'Base branch' + options: + - main + - next + default: main push: branches: - 'main' + - 'next' jobs: push-commit: runs-on: ubuntu-latest steps: + - name: Get branch + id: get-branch + run: | + if [[ "${{ inputs.branch || github.head_ref || github.ref_name }}" == "main" ]]; then + echo "baseBranch=$(echo 'main')" >> $GITHUB_OUTPUT + echo "targetBranch=$(echo 'next')" >> $GITHUB_OUTPUT + elif [[ "${{ inputs.branch || github.head_ref || github.ref_name }}" == "next" ]]; then + echo "baseBranch=$(echo 'next')" >> $GITHUB_OUTPUT + echo "target=$(echo 'develop')" >> $GITHUB_OUTPUT + else + exit 1 + 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,plugin-pro-tpl,${{ join(fromJSON(vars.NEXT_PRO_PLUGIN_REPOS), ',') }},${{ join(fromJSON(vars.CUSTOM_PRO_PLUGIN_REPOS), ',') }} + repositories: nocobase,${{ inputs.repository }} skip-token-revoke: true - name: Get GitHub App User ID id: get-user-id @@ -32,23 +54,24 @@ jobs: - name: Checkout uses: actions/checkout@v4 with: + ref: ${{ steps.get-branch.outputs.baseBranch }} repository: nocobase/${{ inputs.repository || 'nocobase' }} token: ${{ steps.app-token.outputs.token }} persist-credentials: true fetch-depth: 0 - - name: main -> next(${{ inputs.repository || 'nocobase' }}) + - name: ${{ steps.get-branch.outputs.baseBranch }} -> ${{ steps.get-branch.outputs.targetBranch }} (${{ inputs.repository || 'nocobase' }}) run: | git config --global user.name '${{ steps.app-token.outputs.app-slug }}[bot]' git config --global user.email '${{ steps.get-user-id.outputs.user-id }}+${{ steps.app-token.outputs.app-slug }}[bot]@users.noreply.github.com>' - git checkout main - git pull origin main - git checkout next - git merge main - git push origin next - - name: push ${{ inputs.repository || 'nocobase' }}(next) + git checkout ${{ steps.get-branch.outputs.baseBranch }} + git pull origin ${{ steps.get-branch.outputs.baseBranch }} + git checkout ${{ steps.get-branch.outputs.targetBranch }} + git merge ${{ steps.get-branch.outputs.baseBranch }} + git push origin ${{ steps.get-branch.outputs.targetBranch }} + - name: push ${{ inputs.repository || 'nocobase' }}(${{ steps.get-branch.outputs.targetBranch }}) uses: ad-m/github-push-action@master with: - branch: next + branch: ${{ steps.get-branch.outputs.targetBranch }} github_token: ${{ steps.app-token.outputs.token }} repository: nocobase/${{ inputs.repository || 'nocobase' }} tags: true diff --git a/.github/workflows/create-branch.yml b/.github/workflows/create-branch.yml index dd6e951ec..8862ffdb1 100644 --- a/.github/workflows/create-branch.yml +++ b/.github/workflows/create-branch.yml @@ -20,11 +20,7 @@ jobs: repo: - 'nocobase' - 'pro-plugins' - - ${{ fromJSON(needs.get-plugins.outputs.custom-plugins) }} - - ${{ fromJSON(needs.get-plugins.outputs.rc-plugins) }} - - ${{ fromJSON(needs.get-plugins.outputs.beta-plugins) }} - - ${{ fromJSON(needs.get-plugins.outputs.alpha-plugins) }} - - ${{ fromJSON(needs.get-plugins.outputs.unreleased-plugins) }} + - ${{ fromJSON(needs.get-plugins.outputs.all-plugins) }} runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v1 diff --git a/.github/workflows/get-plugins.yml b/.github/workflows/get-plugins.yml index c91974084..f40763bcf 100644 --- a/.github/workflows/get-plugins.yml +++ b/.github/workflows/get-plugins.yml @@ -3,6 +3,8 @@ name: Get plugins on: workflow_call: outputs: + all-plugins: + value: ${{ jobs.get-plugins.outputs.all-plugins }} custom-plugins: value: ${{ jobs.get-plugins.outputs.custom-plugins }} rc-plugins: @@ -18,6 +20,7 @@ jobs: get-plugins: runs-on: ubuntu-latest outputs: + all-plugins: ${{ steps.get-plugins.outputs.all-plugins }} custom-plugins: ${{ steps.get-plugins.outputs.custom-plugins }} rc-plugins: ${{ steps.get-plugins.outputs.rc-plugins }} beta-plugins: ${{ steps.get-plugins.outputs.beta-plugins }} @@ -34,10 +37,11 @@ jobs: - id: get-plugins shell: bash run: | + echo "all-plugins=$(gh search repos "props.plugin-type:custom,rc,beta,alpha,unreleased" --owner=nocobase --json name | jq -r 'map(.name) | tostring')" >> "$GITHUB_OUTPUT" echo "custom-plugins=$(gh search repos "props.plugin-type:custom" --owner=nocobase --json name | jq -r 'map(.name) | tostring')" >> "$GITHUB_OUTPUT" echo "rc-plugins=$(gh search repos "props.plugin-type:rc" --owner=nocobase --json name | jq -r 'map(.name) | tostring')" >> "$GITHUB_OUTPUT" - echo "beta-plugins=$(gh search repos "props.plugin-type:beta" --owner=nocobase --json name | jq -r 'map(.name) | tostring')" >> "$GITHUB_OUTPUT" - echo "alpha-plugins=$(gh search repos "props.plugin-type:alpha" --owner=nocobase --json name | jq -r 'map(.name) | tostring')" >> "$GITHUB_OUTPUT" + echo "beta-plugins=$(gh search repos "props.plugin-type:beta,rc" --owner=nocobase --json name | jq -r 'map(.name) | tostring')" >> "$GITHUB_OUTPUT" + echo "alpha-plugins=$(gh search repos "props.plugin-type:alpha,beta,rc" --owner=nocobase --json name | jq -r 'map(.name) | tostring')" >> "$GITHUB_OUTPUT" echo "unreleased-plugins=$(gh search repos "props.plugin-type:unreleased" --owner=nocobase --json name | jq -r 'map(.name) | tostring')" >> "$GITHUB_OUTPUT" env: GH_TOKEN: ${{ steps.app-token.outputs.token }}