code2docs-ai agent job #263
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: code2docs-ai agent job | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| repoUrl: | |
| description: 'The GitHub repository URL in HTTPS format' | |
| required: true | |
| branchName: | |
| description: 'The branch name to use' | |
| default: 'main' | |
| repoVersionId: | |
| description: 'The version id of the table' | |
| serverEndPoint: | |
| description: 'The server end point of the code2docs-api' | |
| jobs: | |
| create-repo: | |
| runs-on: self-hosted | |
| steps: | |
| - name: Clean up working directory | |
| run: | | |
| rm -rf * | |
| - name: Print input parameters | |
| run: | | |
| echo "repoUrl: ${{ github.event.inputs.repoUrl }}" | |
| echo "branchName: ${{ github.event.inputs.branchName }}" | |
| echo "REPO_VERSION_ID=${{ github.event.inputs.repoVersionId }}" >> $GITHUB_ENV | |
| echo "SERVER_ENDPOINT=${{ github.event.inputs.serverEndPoint }}" >> $GITHUB_ENV | |
| - name: Validate repoUrl | |
| run: | | |
| if [[ "${{ github.event.inputs.repoUrl }}" != https://github.com/* ]]; then | |
| echo "Error: repoUrl must be a GitHub.com address and a HTTPS address." | |
| exit 1 | |
| fi | |
| repo_status=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token ${{ secrets.MY_PAT }}" \ | |
| "${{ github.event.inputs.repoUrl }}") | |
| if [[ "$repo_status" != "200" ]]; then | |
| echo "Error: repoUrl does not exist on GitHub or is not publicly accessible." | |
| exit 1 | |
| fi | |
| - name: Extract orgName and repoName | |
| id: extract | |
| run: | | |
| orgName=$(echo "${{ github.event.inputs.repoUrl }}" | cut -d'/' -f4) | |
| repoName=$(echo "${{ github.event.inputs.repoUrl }}" | cut -d'/' -f5 | cut -d'.' -f1) | |
| echo "orgName=$orgName" >> $GITHUB_ENV | |
| echo "repoName=$repoName" >> $GITHUB_ENV | |
| docs_repo_name="${orgName}_${repoName}" | |
| echo "docs_repo_name=$docs_repo_name" >> $GITHUB_ENV | |
| - name: Print extracted variables | |
| run: | | |
| echo "orgName is: ${{ env.orgName }}" | |
| echo "repoName is: ${{ env.repoName }}" | |
| echo "docs_repo_name is: ${{ env.docs_repo_name }}" | |
| - name: Install jq | |
| run: sudo apt-get install -y jq | |
| - name: Check if source_repo exists and delete it | |
| run: | | |
| if [ -d "${{ env.repoName }}" ]; then | |
| rm -rf ${{ env.repoName }} | |
| fi | |
| - name: Clone the source and update repo versions | |
| env: | |
| SERVER_ENDPOINT: ${{ env.SERVER_ENDPOINT }} | |
| REPO_VERSION_ID: ${{ env.REPO_VERSION_ID }} | |
| WORKFLOW_ID: ${{ github.run_id }} | |
| run: | | |
| git clone ${{ github.event.inputs.repoUrl }} ${{ env.repoName }} | |
| cd ${{ env.repoName }} | |
| file_count=$(find . -type f | wc -l) | |
| latest_commit_id=$(git rev-parse HEAD) | |
| DATA=$(jq -n \ | |
| --arg id "$REPO_VERSION_ID" \ | |
| --arg workflow_id "$WORKFLOW_ID" \ | |
| --arg status "in_progress(parse-repo)" \ | |
| --argjson file_count "$(echo $file_count | sed 's/[^0-9]*//g')" \ | |
| --arg commit_id "$latest_commit_id" \ | |
| '{ | |
| id: $id, | |
| workflow_id: $workflow_id, | |
| status: $status, | |
| file_count: $file_count, | |
| current_commit_id: $commit_id | |
| }') || { echo "Failed to generate JSON"; exit 1; } | |
| echo "Generated JSON: $DATA" | |
| curl_response=$(curl --fail -k -v -X POST -L "$SERVER_ENDPOINT/github/update/repo-versions" \ | |
| -H "Content-Type: application/json" \ | |
| -d "$DATA" 2>&1) || { echo "API call failed. Log: $curl_response"; exit 1; } | |
| - name: Check if docs-repo exists | |
| id: check-repo | |
| run: | | |
| repo_exists=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token ${{ secrets.MY_PAT }}" \ | |
| https://api.github.com/repos/code2docs-ai/${{ env.docs_repo_name }}) | |
| echo "repo_exists=$repo_exists" >> $GITHUB_ENV | |
| - name: Delete existing docs-repo | |
| if: env.repo_exists == '200' | |
| run: | | |
| curl -X DELETE -H "Authorization: token ${{ secrets.MY_PAT }}" \ | |
| https://api.github.com/repos/code2docs-ai/${{ env.docs_repo_name }} | |
| - name: Create new docs-repo | |
| run: | | |
| curl --fail -X POST -H "Authorization: token ${{ secrets.MY_PAT }}" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| https://api.github.com/orgs/code2docs-ai/repos \ | |
| -d '{"name":"${{ env.docs_repo_name }}","private":false}' || exit 1 | |
| - name: Clone the newly created repo | |
| run: | | |
| if [ -d "${{ env.docs_repo_name }}" ]; then | |
| rm -rf ${{ env.docs_repo_name }} | |
| fi | |
| git clone https://github.com/code2docs-ai/${{ env.docs_repo_name }}.git | |
| cd ${{ env.docs_repo_name }} | |
| echo "# Docs written by code2docs-ai agent" > README.md | |
| git config --global user.email "[email protected]" | |
| git config --global user.name "code2docs-ai agent" | |
| git add README.md | |
| git commit -m "Add README.md" | |
| git push https://code2docs-ai:${{ secrets.MY_PAT }}@github.com/code2docs-ai/${{ env.docs_repo_name }}.git main | |
| - name: Send llm-explain-code status | |
| env: | |
| SERVER_ENDPOINT: ${{ env.SERVER_ENDPOINT }} | |
| REPO_VERSION_ID: ${{ env.REPO_VERSION_ID }} | |
| run: | | |
| DATA=$(jq -n \ | |
| --arg id "$REPO_VERSION_ID" \ | |
| --arg status "in_progress(llm-explain-code)" \ | |
| '{ | |
| id: $id, | |
| status: $status, | |
| }') | |
| echo "Sending: $DATA" | |
| curl -v --fail -k -X POST "$SERVER_ENDPOINT/github/update/repo-versions" \ | |
| -H "Content-Type: application/json" \ | |
| -d "$DATA" \ | |
| && echo "Update succeeded" \ | |
| || { echo "Update failed"; exit 1; } | |
| - name: Run aise-cli parse-repo | |
| run: | | |
| source /data/source/aise-cli/.venv/bin/activate | |
| aise-cli version | |
| aise-cli repo delete-repo ${{ env.repoName }} | |
| aise-cli repo parse-repo --repo_path ./${{ env.repoName }} | |
| - name: Send export-docs status | |
| env: | |
| SERVER_ENDPOINT: ${{ env.SERVER_ENDPOINT }} | |
| REPO_VERSION_ID: ${{ env.REPO_VERSION_ID }} | |
| run: | | |
| DATA=$(jq -n \ | |
| --arg id "$REPO_VERSION_ID" \ | |
| --arg status "in_progress(export-docs)" \ | |
| '{ | |
| id: $id, | |
| status: $status, | |
| }') | |
| echo "Sending: $DATA" | |
| curl -v --fail -k -X POST "$SERVER_ENDPOINT/github/update/repo-versions" \ | |
| -H "Content-Type: application/json" \ | |
| -d "$DATA" \ | |
| && echo "Update succeeded" \ | |
| || { echo "Update failed"; exit 1; } | |
| - name: Run aise-cli export-docs | |
| run: | | |
| source /data/source/aise-cli/.venv/bin/activate | |
| cd ${{ env.docs_repo_name }} | |
| mkdir docs | |
| cd docs | |
| mkdir ${{ env.repoName }} | |
| aise-cli repo export-docs --repo_name ${{ env.repoName }} --output_path ./docs/${{ env.repoName }} | |
| git add . | |
| git commit -m "Generate document for ${{ env.repoName }}" | |
| git push https://code2docs-ai:${{ secrets.MY_PAT }}@github.com/code2docs-ai/${{ env.docs_repo_name }}.git main | |
| - name: Send completion status | |
| env: | |
| SERVER_ENDPOINT: ${{ env.SERVER_ENDPOINT }} | |
| REPO_VERSION_ID: ${{ env.REPO_VERSION_ID }} | |
| DOCS_URL: https://github.com/code2docs-ai/${{ env.docs_repo_name }} | |
| run: | | |
| DATA=$(jq -n \ | |
| --arg id "$REPO_VERSION_ID" \ | |
| --arg status "completed" \ | |
| --arg docs_url "$DOCS_URL" \ | |
| --arg completed_at "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ | |
| '{ | |
| id: $id, | |
| status: $status, | |
| docs_url: $docs_url, | |
| completed_at: $completed_at | |
| }') | |
| echo "Sending: $DATA" | |
| curl -v --fail -k -X POST "$SERVER_ENDPOINT/github/update/repo-versions" \ | |
| -H "Content-Type: application/json" \ | |
| -d "$DATA" \ | |
| && echo "Update succeeded" \ | |
| || { echo "Update failed"; exit 1; } |