Skip to content

Commit 16503cd

Browse files
github-actions-bot: fix reply on commands (#3538)
1 parent 0926554 commit 16503cd

File tree

3 files changed

+51
-52
lines changed

3 files changed

+51
-52
lines changed

.github/workflows/cmd-publish-pr-on-npm.yml

+14-18
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ on:
88
secrets:
99
NPM_CANARY_PR_PUBLISH_TOKEN:
1010
required: true
11-
outputs:
12-
replyMessage:
13-
value: ${{ jobs.publish-canary.outputs.replyMessage }}
1411
jobs:
1512
build-npm-dist:
1613
runs-on: ubuntu-latest
@@ -43,8 +40,6 @@ jobs:
4340
runs-on: ubuntu-latest
4441
name: Publish Canary
4542
environment: canary-pr-npm
46-
outputs:
47-
replyMessage: ${{ steps.set_replyMessage.outputs.replyMessage }}
4843
needs: [build-npm-dist]
4944
steps:
5045
- name: Checkout repo
@@ -99,22 +94,23 @@ jobs:
9994
'utf-8',
10095
);
10196
102-
core.exportVariable('NPM_TAG', packageJSON.publishConfig.tag);
103-
core.exportVariable('NPM_VERSION', packageJSON.version);
97+
const replyMessage = `
98+
The latest changes of this PR are available on NPM as
99+
[graphql@${packageJSON.version}](https://www.npmjs.com/package/graphql/v/${packageJSON.version})
100+
**Note: no gurantees provided so please use your own discretion.**
101+
102+
Also you can depend on latest version built from this PR:
103+
\`npm install --save graphql@${packageJSON.publishConfig.tag}\`
104+
`;
105+
fs.writeFileSync('./replyMessage.txt', replyMessage.trim(), 'utf-8');
104106
105107
- name: Publish NPM package
106108
run: npm publish --ignore-scripts ./npmDist
107109
env:
108110
NODE_AUTH_TOKEN: ${{ secrets.NPM_CANARY_PR_PUBLISH_TOKEN }}
109111

110-
- name: Set 'replyMessage' output variable
111-
id: set_replyMessage
112-
run: echo "::set-output replyMessage=$REPLY_MESSAGE"
113-
env:
114-
REPLY_MESSAGE: |
115-
The latest changes of this PR are available on NPM as
116-
[graphql@${{env.NPM_VERSION}}](https://www.npmjs.com/package/graphql/v/${{env.NPM_VERSION}})
117-
**Note: no gurantees provided so please use your own discretion.**
118-
119-
Also you can depend on latest version built from this PR:
120-
`npm install --save graphql@${{env.NPM_TAG}}`
112+
- name: Upload replyMessage
113+
uses: actions/upload-artifact@v2
114+
with:
115+
name: replyMessage
116+
path: ./replyMessage.txt

.github/workflows/cmd-run-benchmark.yml

+12-21
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,9 @@ on:
55
pullRequestJSON:
66
required: true
77
type: string
8-
outputs:
9-
replyMessage:
10-
value: ${{ jobs.benchmark.outputs.replyMessage }}
118
jobs:
129
benchmark:
1310
name: Run benchmark
14-
outputs:
15-
replyMessage: ${{ steps.set_replyMessage.outputs.replyMessage }}
1611
runs-on: ubuntu-latest
1712
steps:
1813
- name: Checkout repo
@@ -37,21 +32,17 @@ jobs:
3732

3833
- name: Run Benchmark
3934
run: |
40-
npm run benchmark -- --revs HEAD BASE | tee benchmark.log
35+
cat <<EOF >> replyMessage.txt
36+
<details>
37+
<summary> Benchmark output </summary>
38+
EOF
39+
npm run benchmark -- --revs HEAD BASE | tee -a replyMessage.txt
40+
cat <<EOF >> replyMessage.txt
41+
</details>
42+
EOF
4143
42-
- name: Set 'replyMessage' output variable
43-
id: set_replyMessage
44-
uses: actions/github-script@v5
44+
- name: Upload replyMessage
45+
uses: actions/upload-artifact@v2
4546
with:
46-
github-token: ${{secrets.GITHUB_TOKEN}}
47-
script: |
48-
const fs = require('fs');
49-
50-
const replyMessage = `
51-
<details>
52-
<summary> Benchmark output </summary>
53-
54-
${ fs.readFileSync('./benchmark.log', 'utf-8') }
55-
</details>
56-
`;
57-
core.setOutput('replyMessage', replyMessage);
47+
name: replyMessage
48+
path: ./replyMessage.txt

.github/workflows/github-actions-bot.yml

+25-13
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ jobs:
5656
runs-on: ubuntu-latest
5757
outputs:
5858
cmd: ${{ steps.parse-cmd.outputs.cmd }}
59-
replyMessage: ${{ steps.parse-cmd.outputs.replyMessage }}
6059
pullRequestJSON: ${{ steps.parse-cmd.outputs.pullRequestJSON }}
6160
steps:
6261
- uses: actions/github-script@v5
@@ -103,26 +102,42 @@ jobs:
103102
if: needs.accept-cmd.result != 'skipped' && always()
104103
runs-on: ubuntu-latest
105104
steps:
106-
- uses: actions/github-script@v5
105+
- uses: actions/download-artifact@v2
106+
with:
107+
name: replyMessage
108+
109+
- if: failure()
110+
uses: actions/github-script@v5
107111
with:
108112
script: |
109-
const { issue, comment, sender } = context.payload;
113+
const fs = require('fs');
114+
110115
const needs = JSON.parse(process.env.NEEDS);
111116
112-
let replyMessage;
113117
let allSkipped = true;
114118
for (const [ name, job ] of Object.entries(needs)) {
115119
if (name.startsWith('cmd-')) {
116120
allSkipped = allSkipped && job.result === 'skipped';
117121
}
118-
replyMessage = replyMessage || job.outputs.replyMessage;
119122
}
120123
121-
if (!replyMessage) {
122-
replyMessage = allSkipped
123-
? 'Unknown command 😕\n\n' + process.env.SUPPORTED_COMMANDS
124-
: `Something went wrong, [please check log](${process.env.RUN_URL}).`;
125-
}
124+
const replyMessage = allSkipped
125+
? 'Unknown command 😕\n\n' + process.env.SUPPORTED_COMMANDS
126+
: `Something went wrong, [please check log](${process.env.RUN_URL}).`;
127+
128+
fs.writeFileSync('./replyMessage.txt', replyMessage, 'utf-8');
129+
env:
130+
NEEDS: ${{ toJSON(needs) }}
131+
RUN_URL: ${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}
132+
133+
- if: always()
134+
uses: actions/github-script@v5
135+
with:
136+
script: |
137+
const fs = require('fs');
138+
139+
const replyMessage = fs.readFileSync('./replyMessage.txt', 'utf-8');
140+
const { issue, comment, sender } = context.payload;
126141
127142
const quoteRequest = comment.body
128143
.split('\n')
@@ -142,6 +157,3 @@ jobs:
142157
{ __typename }
143158
}
144159
`, { subjectId: comment.node_id });
145-
env:
146-
RUN_URL: ${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}
147-
NEEDS: ${{ toJSON(needs) }}

0 commit comments

Comments
 (0)