mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-27 12:53:55 +01:00 
			
		
		
		
	 139a296bd3
			
		
	
	
		139a296bd3
		
			
		
	
	
	
	
		
			
			* 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
 | |
|             });
 |