mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-11-04 00:33:55 +01:00 
			
		
		
		
	* revert prior attempt Signed-off-by: parneet-guraya <gurayaparneet@gmail.com> * trigger workflows_run event after uploading artifacts Signed-off-by: parneet-guraya <gurayaparneet@gmail.com> --------- Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
		
			
				
	
	
		
			96 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Comment Artifacts on PR
 | 
						|
 | 
						|
on:
 | 
						|
  workflow_run:
 | 
						|
    workflows: [ "Android CI" ]
 | 
						|
    types: [ completed ]
 | 
						|
 | 
						|
permissions:
 | 
						|
  pull-requests: write
 | 
						|
  contents: read
 | 
						|
 | 
						|
concurrency:
 | 
						|
  group: comment-${{ github.event.workflow_run.id }}
 | 
						|
  cancel-in-progress: true
 | 
						|
 | 
						|
jobs:
 | 
						|
  comment:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' }}
 | 
						|
    steps:
 | 
						|
      - name: Download and process artifacts
 | 
						|
        uses: actions/github-script@v7
 | 
						|
        with:
 | 
						|
          github-token: ${{ secrets.GITHUB_TOKEN }}
 | 
						|
          script: |
 | 
						|
            const fs = require('fs');
 | 
						|
            const runId = context.payload.workflow_run.id;
 | 
						|
 | 
						|
            const allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
 | 
						|
              owner: context.repo.owner,
 | 
						|
              repo: context.repo.repo,
 | 
						|
              run_id: runId,
 | 
						|
            });
 | 
						|
 | 
						|
            const prNumberArtifact = allArtifacts.data.artifacts.find(artifact => artifact.name === "pr_number");
 | 
						|
            if (!prNumberArtifact) {
 | 
						|
              console.log("pr_number artifact not found.");
 | 
						|
              return;
 | 
						|
            }
 | 
						|
 | 
						|
            const download = await github.rest.actions.downloadArtifact({
 | 
						|
              owner: context.repo.owner,
 | 
						|
              repo: context.repo.repo,
 | 
						|
              artifact_id: prNumberArtifact.id,
 | 
						|
              archive_format: 'zip',
 | 
						|
            });
 | 
						|
 | 
						|
            fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr_number.zip`, Buffer.from(download.data));
 | 
						|
            const { execSync } = require('child_process');
 | 
						|
            execSync('unzip -q pr_number.zip -d ./pr_number/');
 | 
						|
            fs.unlinkSync('pr_number.zip');
 | 
						|
 | 
						|
            const prData = JSON.parse(fs.readFileSync('./pr_number/pr_number.json', 'utf8'));
 | 
						|
            const prNumber = prData.pr_number;
 | 
						|
 | 
						|
            if (!prNumber || prNumber === 'null') {
 | 
						|
              console.log("No valid PR number found in pr_number.json. Skipping.");
 | 
						|
              return;
 | 
						|
            }
 | 
						|
 | 
						|
            const artifactsToLink = allArtifacts.data.artifacts.filter(artifact => artifact.name !== "pr_number");
 | 
						|
            if (artifactsToLink.length === 0) {
 | 
						|
              console.log("No artifacts to link found.");
 | 
						|
              return;
 | 
						|
            }
 | 
						|
 | 
						|
            const comments = await github.rest.issues.listComments({
 | 
						|
              owner: context.repo.owner,
 | 
						|
              repo: context.repo.repo,
 | 
						|
              issue_number: Number(prNumber),
 | 
						|
            });
 | 
						|
            
 | 
						|
            const oldComments = comments.data.filter(comment => 
 | 
						|
              comment.body.startsWith("✅ Generated APK variants!")
 | 
						|
            );
 | 
						|
            for (const comment of oldComments) {
 | 
						|
              await github.rest.issues.deleteComment({
 | 
						|
                owner: context.repo.owner,
 | 
						|
                repo: context.repo.repo,
 | 
						|
                comment_id: comment.id,
 | 
						|
              });
 | 
						|
              console.log(`Deleted old comment ID: ${comment.id}`);
 | 
						|
            };
 | 
						|
            
 | 
						|
            const commentBody = `✅ Generated APK variants!\n` + 
 | 
						|
            artifactsToLink.map(artifact => {
 | 
						|
                const artifactUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${runId}/artifacts/${artifact.id}`;
 | 
						|
                return `- 🤖 [Download ${artifact.name}](${artifactUrl})`;
 | 
						|
            }).join('\n');
 | 
						|
 | 
						|
            await github.rest.issues.createComment({
 | 
						|
              owner: context.repo.owner,
 | 
						|
              repo: context.repo.repo,
 | 
						|
              issue_number: Number(prNumber),
 | 
						|
              body: commentBody
 | 
						|
            });
 |