Dax Raad 3 недель назад
Родитель
Сommit
2d3c7a0f24
2 измененных файлов с 48 добавлено и 6 удалено
  1. 42 0
      .github/actions/setup-git-committer/action.yml
  2. 6 6
      .github/workflows/generate.yml

+ 42 - 0
.github/actions/setup-git-committer/action.yml

@@ -0,0 +1,42 @@
+name: "Setup Git Committer"
+description: "Create app token and configure git user"
+inputs:
+  opencode-app-id:
+    description: "OpenCode GitHub App ID"
+    required: true
+  opencode-app-secret:
+    description: "OpenCode GitHub App private key"
+    required: true
+outputs:
+  token:
+    description: "GitHub App token"
+    value: ${{ steps.app-token.outputs.token }}
+  app-slug:
+    description: "GitHub App slug"
+    value: ${{ steps.app-token.outputs.app-slug }}
+  user-id:
+    description: "GitHub App user id"
+    value: ${{ steps.get-user-id.outputs.user-id }}
+runs:
+  using: "composite"
+  steps:
+    - name: Create app token
+      id: app-token
+      uses: actions/create-github-app-token@v2
+      with:
+        app-id: ${{ inputs.opencode-app-id }}
+        private-key: ${{ inputs.opencode-app-secret }}
+
+    - 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"
+      shell: bash
+      env:
+        GH_TOKEN: ${{ steps.app-token.outputs.token }}
+
+    - name: Configure git user
+      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"
+      shell: bash

+ 6 - 6
.github/workflows/generate.yml

@@ -24,17 +24,17 @@ jobs:
       - name: Setup Bun
         uses: ./.github/actions/setup-bun
 
+      - name: Setup git committer
+        uses: ./.github/actions/setup-git-committer
+        with:
+          opencode-app-id: ${{ vars.OPENCODE_APP_ID }}
+          opencode-app-secret: ${{ secrets.OPENCODE_APP_SECRET }}
+
       - name: Generate
         run: ./script/generate.ts
 
       - name: Commit and push
         run: |
-          if [ -z "$(git status --porcelain)" ]; then
-            echo "No changes to commit"
-            exit 0
-          fi
-          git config --local user.email "[email protected]"
-          git config --local user.name "GitHub Action"
           git add -A
           git commit -m "chore: generate"
           git push origin HEAD:${{ github.ref_name }} --no-verify