@@ -59,17 +59,41 @@ jobs:
5959 private-key : ${{ secrets.WARP_ISSUES_APP_PRIVATE_KEY }}
6060 owner : ${{ secrets.WARP_ISSUES_REPO_ORG }}
6161 repositories : ${{ secrets.WARP_ISSUES_REPO_NAME }}
62+ - name : Load source issue
63+ if : ${{ github.event_name == 'workflow_dispatch' }}
64+ id : source-issue
65+ uses : actions/github-script@v7
66+ with :
67+ script : |
68+ const issueNumberInput = context.payload.inputs?.issue_number;
69+ const issueNumber = Number(issueNumberInput);
70+
71+ if (!Number.isInteger(issueNumber) || issueNumber <= 0) {
72+ core.setFailed(`Invalid issue_number input: "${issueNumberInput}".`);
73+ return;
74+ }
75+
76+ const response = await github.rest.issues.get({
77+ owner: context.repo.owner,
78+ repo: context.repo.repo,
79+ issue_number: issueNumber,
80+ });
81+
82+ core.setOutput("title", response.data.title);
83+ core.setOutput("body", response.data.body ?? "");
84+ core.setOutput("html_url", response.data.html_url);
6285
6386 - name : Mirror issue
6487 uses : actions/github-script@v7
6588 env :
66- TARGET_APP_TOKEN : ${{ steps.app-token.outputs.token }}
89+ SOURCE_ISSUE_TITLE : ${{ steps.source-issue.outputs.title }}
90+ SOURCE_ISSUE_BODY : ${{ steps.source-issue.outputs.body }}
91+ SOURCE_ISSUE_HTML_URL : ${{ steps.source-issue.outputs.html_url }}
6792 with :
93+ github-token : ${{ steps.app-token.outputs.token }}
6894 script : |
69- const { getOctokit } = require("@actions/github");
7095 const targetOwner = process.env.TARGET_REPO_ORG;
7196 const targetName = process.env.TARGET_REPO_NAME;
72- const targetToken = process.env.TARGET_APP_TOKEN;
7397
7498 if (!targetOwner || !targetName) {
7599 core.setFailed(
@@ -78,29 +102,18 @@ jobs:
78102 return;
79103 }
80104
81- if (!targetToken) {
82- core.setFailed("Failed to mint a GitHub App installation token.");
83- return;
84- }
85-
86105 let issue;
87106
88107 if (context.eventName === "workflow_dispatch") {
89- const issueNumberInput = context.payload.inputs?.issue_number;
90- const issueNumber = Number(issueNumberInput);
91-
92- if (!Number.isInteger(issueNumber) || issueNumber <= 0) {
93- core.setFailed(`Invalid issue_number input: "${issueNumberInput}".`);
108+ if (!process.env.SOURCE_ISSUE_TITLE || !process.env.SOURCE_ISSUE_HTML_URL) {
109+ core.setFailed("Failed to load the source issue.");
94110 return;
95111 }
96-
97- const response = await github.rest.issues.get({
98- owner: context.repo.owner,
99- repo: context.repo.repo,
100- issue_number: issueNumber,
101- });
102-
103- issue = response.data;
112+ issue = {
113+ title: process.env.SOURCE_ISSUE_TITLE,
114+ body: process.env.SOURCE_ISSUE_BODY,
115+ html_url: process.env.SOURCE_ISSUE_HTML_URL,
116+ };
104117 } else {
105118 issue = context.payload.issue;
106119 }
@@ -109,8 +122,7 @@ jobs:
109122 ? `[Original issue](${issue.html_url})\n\n${issue.body}`
110123 : `[Original issue](${issue.html_url})`;
111124
112- const targetGitHub = getOctokit(targetToken);
113- await targetGitHub.rest.issues.create({
125+ await github.rest.issues.create({
114126 owner: targetOwner,
115127 repo: targetName,
116128 title: issue.title,
0 commit comments