Skip to content

Commit 583bc84

Browse files
committed
build: migrate to Zulip for workflow notifications
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 7a7497b commit 583bc84

25 files changed

+562
-366
lines changed

.github/workflows/linux_benchmark.yml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,11 @@ jobs:
264264
retention-days: 5
265265
timeout-minutes: 10
266266

267-
# Define a job for sending notifications to Slack...
268-
slack:
267+
# Define a job for sending notifications to Zulip...
268+
zulip:
269269

270270
# Define a display name:
271-
name: 'Slack notification'
271+
name: 'Zulip notification'
272272

273273
# Define the type of virtual host machine:
274274
runs-on: 'ubuntu-latest'
@@ -291,31 +291,34 @@ jobs:
291291
# Resolve notification data:
292292
- name: 'Resolve notification data'
293293
run: |
294-
echo 'NOTIFICATION_STATUS=${{ needs.benchmark.result}}' >> $GITHUB_ENV
295294
if [[ "${{ needs.benchmark.result }}" = "success" ]]; then
296-
echo 'NOTIFICATION_TEXT=**benchmark** workflow succeeded (linux)' >> $GITHUB_ENV
297-
echo 'NOTIFICATION_AUTHOR_NAME=Success' >> $GITHUB_ENV
295+
echo 'NOTIFICATION_ICON=:check:' >> $GITHUB_ENV
296+
echo 'NOTIFICATION_STATUS=succeeded' >> $GITHUB_ENV
298297
elif [[ "${{ needs.benchmark.result }}" = "failure" ]]; then
299-
echo 'NOTIFICATION_TEXT=**benchmark** workflow failed (linux)' >> $GITHUB_ENV
300-
echo 'NOTIFICATION_AUTHOR_NAME=Failure' >> $GITHUB_ENV
298+
echo 'NOTIFICATION_ICON=:cross_mark:' >> $GITHUB_ENV
299+
echo 'NOTIFICATION_STATUS=failed' >> $GITHUB_ENV
301300
elif [[ "${{ needs.benchmark.result }}" = "cancelled" ]]; then
302-
echo 'NOTIFICATION_TEXT=**benchmark** workflow was canceled (linux)' >> $GITHUB_ENV
303-
echo 'NOTIFICATION_AUTHOR_NAME=Canceled' >> $GITHUB_ENV
301+
echo 'NOTIFICATION_ICON=:warning:' >> $GITHUB_ENV
302+
echo 'NOTIFICATION_STATUS=was canceled' >> $GITHUB_ENV
304303
else
305304
exit 1
306305
fi
307306
timeout-minutes: 5
308307

309-
# Send notification to Slack:
308+
# Send notification to Zulip:
310309
- name: 'Send notification'
311310
# Pin action to full length commit SHA
312-
uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0
311+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2
313312
if: success()
314313
with:
315-
status: "${{ env.NOTIFICATION_STATUS }}"
316-
fields: repo,commit,message
317-
text: "${{ env.NOTIFICATION_TEXT }}"
318-
author_name: "${{ env.NOTIFICATION_AUTHOR_NAME }}"
319-
env:
320-
SLACK_WEBHOOK_URL: ${{ secrets.REPO_SLACK_WEBHOOK_URL }}
314+
api-key: ${{ secrets.ZULIP_API_KEY }}
315+
email: 'github-actions-bot@stdlib.zulipchat.com'
316+
organization-url: 'https://stdlib.zulipchat.com'
317+
to: 'workflows'
318+
type: 'stream'
319+
topic: 'linux-benchmark'
320+
content: |
321+
${{ env.NOTIFICATION_ICON }} **benchmark** workflow ${{ env.NOTIFICATION_STATUS }} (linux)
322+
323+
**Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
321324
timeout-minutes: 5

.github/workflows/linux_examples.yml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,11 @@ jobs:
264264
retention-days: 5
265265
timeout-minutes: 10
266266

267-
# Define a job for sending notifications to Slack...
268-
slack:
267+
# Define a job for sending notifications to Zulip...
268+
zulip:
269269

270270
# Define a display name:
271-
name: 'Slack notification'
271+
name: 'Zulip notification'
272272

273273
# Define the type of virtual host machine:
274274
runs-on: 'ubuntu-latest'
@@ -291,32 +291,35 @@ jobs:
291291
# Resolve notification data:
292292
- name: 'Resolve notification data'
293293
run: |
294-
echo 'NOTIFICATION_STATUS=${{ needs.examples.result}}' >> $GITHUB_ENV
295294
if [[ "${{ needs.examples.result }}" = "success" ]]; then
296-
echo 'NOTIFICATION_TEXT=**examples** workflow succeeded (linux)' >> $GITHUB_ENV
297-
echo 'NOTIFICATION_AUTHOR_NAME=Success' >> $GITHUB_ENV
295+
echo 'NOTIFICATION_ICON=:check:' >> $GITHUB_ENV
296+
echo 'NOTIFICATION_STATUS=succeeded' >> $GITHUB_ENV
298297
elif [[ "${{ needs.examples.result }}" = "failure" ]]; then
299-
echo 'NOTIFICATION_TEXT=**examples** workflow failed (linux)' >> $GITHUB_ENV
300-
echo 'NOTIFICATION_AUTHOR_NAME=Failure' >> $GITHUB_ENV
298+
echo 'NOTIFICATION_ICON=:cross_mark:' >> $GITHUB_ENV
299+
echo 'NOTIFICATION_STATUS=failed' >> $GITHUB_ENV
301300
elif [[ "${{ needs.examples.result }}" = "cancelled" ]]; then
302-
echo 'NOTIFICATION_TEXT=**examples** workflow was canceled (linux)' >> $GITHUB_ENV
303-
echo 'NOTIFICATION_AUTHOR_NAME=Canceled' >> $GITHUB_ENV
301+
echo 'NOTIFICATION_ICON=:warning:' >> $GITHUB_ENV
302+
echo 'NOTIFICATION_STATUS=was canceled' >> $GITHUB_ENV
304303
else
305304
exit 1
306305
fi
307306
timeout-minutes: 5
308307

309-
# Send notification to Slack:
308+
# Send notification to Zulip:
310309
- name: 'Send notification'
311310
# Pin action to full length commit SHA
312-
uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0
311+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2
313312
if: success()
314313
with:
315-
status: "${{ env.NOTIFICATION_STATUS }}"
316-
fields: repo,commit,message
317-
text: "${{ env.NOTIFICATION_TEXT }}"
318-
author_name: "${{ env.NOTIFICATION_AUTHOR_NAME }}"
319-
env:
320-
SLACK_WEBHOOK_URL: ${{ secrets.REPO_SLACK_WEBHOOK_URL }}
314+
api-key: ${{ secrets.ZULIP_API_KEY }}
315+
email: 'github-actions-bot@stdlib.zulipchat.com'
316+
organization-url: 'https://stdlib.zulipchat.com'
317+
to: 'workflows'
318+
type: 'stream'
319+
topic: 'linux-examples'
320+
content: |
321+
${{ env.NOTIFICATION_ICON }} **examples** workflow ${{ env.NOTIFICATION_STATUS }} (linux)
322+
323+
**Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
321324
timeout-minutes: 5
322325

.github/workflows/linux_test.yml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -263,11 +263,11 @@ jobs:
263263
retention-days: 5
264264
timeout-minutes: 10
265265

266-
# Define a job for sending notifications to Slack...
267-
slack:
266+
# Define a job for sending notifications to Zulip...
267+
zulip:
268268

269269
# Define a display name:
270-
name: 'Slack notification'
270+
name: 'Zulip notification'
271271

272272
# Define the type of virtual host machine:
273273
runs-on: 'ubuntu-latest'
@@ -290,31 +290,34 @@ jobs:
290290
# Resolve notification data:
291291
- name: 'Resolve notification data'
292292
run: |
293-
echo 'NOTIFICATION_STATUS=${{ needs.test.result}}' >> $GITHUB_ENV
294293
if [[ "${{ needs.test.result }}" = "success" ]]; then
295-
echo 'NOTIFICATION_TEXT=**test** workflow succeeded (linux)' >> $GITHUB_ENV
296-
echo 'NOTIFICATION_AUTHOR_NAME=Success' >> $GITHUB_ENV
294+
echo 'NOTIFICATION_ICON=:check:' >> $GITHUB_ENV
295+
echo 'NOTIFICATION_STATUS=succeeded' >> $GITHUB_ENV
297296
elif [[ "${{ needs.test.result }}" = "failure" ]]; then
298-
echo 'NOTIFICATION_TEXT=**test** workflow failed (linux)' >> $GITHUB_ENV
299-
echo 'NOTIFICATION_AUTHOR_NAME=Failure' >> $GITHUB_ENV
297+
echo 'NOTIFICATION_ICON=:cross_mark:' >> $GITHUB_ENV
298+
echo 'NOTIFICATION_STATUS=failed' >> $GITHUB_ENV
300299
elif [[ "${{ needs.test.result }}" = "cancelled" ]]; then
301-
echo 'NOTIFICATION_TEXT=**test** workflow was canceled (linux)' >> $GITHUB_ENV
302-
echo 'NOTIFICATION_AUTHOR_NAME=Canceled' >> $GITHUB_ENV
300+
echo 'NOTIFICATION_ICON=:warning:' >> $GITHUB_ENV
301+
echo 'NOTIFICATION_STATUS=was canceled' >> $GITHUB_ENV
303302
else
304303
exit 1
305304
fi
306305
timeout-minutes: 5
307306

308-
# Send notification to Slack:
307+
# Send notification to Zulip:
309308
- name: 'Send notification'
310309
# Pin action to full length commit SHA
311-
uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0
310+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2
312311
if: success()
313312
with:
314-
status: "${{ env.NOTIFICATION_STATUS }}"
315-
fields: repo,commit,message
316-
text: "${{ env.NOTIFICATION_TEXT }}"
317-
author_name: "${{ env.NOTIFICATION_AUTHOR_NAME }}"
318-
env:
319-
SLACK_WEBHOOK_URL: ${{ secrets.REPO_SLACK_WEBHOOK_URL }}
313+
api-key: ${{ secrets.ZULIP_API_KEY }}
314+
email: 'github-actions-bot@stdlib.zulipchat.com'
315+
organization-url: 'https://stdlib.zulipchat.com'
316+
to: 'workflows'
317+
type: 'stream'
318+
topic: 'linux-test'
319+
content: |
320+
${{ env.NOTIFICATION_ICON }} **test** workflow ${{ env.NOTIFICATION_STATUS }} (linux)
321+
322+
**Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
320323
timeout-minutes: 5

.github/workflows/linux_test_cov.yml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,11 @@ jobs:
264264
retention-days: 5
265265
timeout-minutes: 10
266266

267-
# Define a job for sending notifications to Slack...
268-
slack:
267+
# Define a job for sending notifications to Zulip...
268+
zulip:
269269

270270
# Define a display name:
271-
name: 'Slack notification'
271+
name: 'Zulip notification'
272272

273273
# Define the type of virtual host machine:
274274
runs-on: 'ubuntu-latest'
@@ -291,32 +291,35 @@ jobs:
291291
# Resolve notification data:
292292
- name: 'Resolve notification data'
293293
run: |
294-
echo 'NOTIFICATION_STATUS=${{ needs.test_cov.result}}' >> $GITHUB_ENV
295294
if [[ "${{ needs.test_cov.result }}" = "success" ]]; then
296-
echo 'NOTIFICATION_TEXT=**test_cov** workflow succeeded (linux)' >> $GITHUB_ENV
297-
echo 'NOTIFICATION_AUTHOR_NAME=Success' >> $GITHUB_ENV
295+
echo 'NOTIFICATION_ICON=:check:' >> $GITHUB_ENV
296+
echo 'NOTIFICATION_STATUS=succeeded' >> $GITHUB_ENV
298297
elif [[ "${{ needs.test_cov.result }}" = "failure" ]]; then
299-
echo 'NOTIFICATION_TEXT=**test_cov** workflow failed (linux)' >> $GITHUB_ENV
300-
echo 'NOTIFICATION_AUTHOR_NAME=Failure' >> $GITHUB_ENV
298+
echo 'NOTIFICATION_ICON=:cross_mark:' >> $GITHUB_ENV
299+
echo 'NOTIFICATION_STATUS=failed' >> $GITHUB_ENV
301300
elif [[ "${{ needs.test_cov.result }}" = "cancelled" ]]; then
302-
echo 'NOTIFICATION_TEXT=**test_cov** workflow was canceled (linux)' >> $GITHUB_ENV
303-
echo 'NOTIFICATION_AUTHOR_NAME=Canceled' >> $GITHUB_ENV
301+
echo 'NOTIFICATION_ICON=:warning:' >> $GITHUB_ENV
302+
echo 'NOTIFICATION_STATUS=was canceled' >> $GITHUB_ENV
304303
else
305304
exit 1
306305
fi
307306
timeout-minutes: 5
308307

309-
# Send notification to Slack:
308+
# Send notification to Zulip:
310309
- name: 'Send notification'
311310
# Pin action to full length commit SHA
312-
uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0
311+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2
313312
if: success()
314313
with:
315-
status: "${{ env.NOTIFICATION_STATUS }}"
316-
fields: repo,commit,message
317-
text: "${{ env.NOTIFICATION_TEXT }}"
318-
author_name: "${{ env.NOTIFICATION_AUTHOR_NAME }}"
319-
env:
320-
SLACK_WEBHOOK_URL: ${{ secrets.REPO_SLACK_WEBHOOK_URL }}
314+
api-key: ${{ secrets.ZULIP_API_KEY }}
315+
email: 'github-actions-bot@stdlib.zulipchat.com'
316+
organization-url: 'https://stdlib.zulipchat.com'
317+
to: 'workflows'
318+
type: 'stream'
319+
topic: 'linux-test-cov'
320+
content: |
321+
${{ env.NOTIFICATION_ICON }} **test_cov** workflow ${{ env.NOTIFICATION_STATUS }} (linux)
322+
323+
**Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
321324
timeout-minutes: 5
322325

.github/workflows/linux_test_install.yml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,11 @@ jobs:
287287
retention-days: 5
288288
timeout-minutes: 10
289289

290-
# Define a job for sending notifications to Slack...
291-
slack:
290+
# Define a job for sending notifications to Zulip...
291+
zulip:
292292

293293
# Define a display name:
294-
name: 'Slack notification'
294+
name: 'Zulip notification'
295295

296296
# Define the type of virtual host machine:
297297
runs-on: 'ubuntu-latest'
@@ -314,31 +314,34 @@ jobs:
314314
# Resolve notification data:
315315
- name: 'Resolve notification data'
316316
run: |
317-
echo 'NOTIFICATION_STATUS=${{ needs.test_install.result}}' >> $GITHUB_ENV
318317
if [[ "${{ needs.test_install.result }}" = "success" ]]; then
319-
echo 'NOTIFICATION_TEXT=**test_install** workflow succeeded (linux)' >> $GITHUB_ENV
320-
echo 'NOTIFICATION_AUTHOR_NAME=Success' >> $GITHUB_ENV
318+
echo 'NOTIFICATION_ICON=:check:' >> $GITHUB_ENV
319+
echo 'NOTIFICATION_STATUS=succeeded' >> $GITHUB_ENV
321320
elif [[ "${{ needs.test_install.result }}" = "failure" ]]; then
322-
echo 'NOTIFICATION_TEXT=**test_install** workflow failed (linux)' >> $GITHUB_ENV
323-
echo 'NOTIFICATION_AUTHOR_NAME=Failure' >> $GITHUB_ENV
321+
echo 'NOTIFICATION_ICON=:cross_mark:' >> $GITHUB_ENV
322+
echo 'NOTIFICATION_STATUS=failed' >> $GITHUB_ENV
324323
elif [[ "${{ needs.test_install.result }}" = "cancelled" ]]; then
325-
echo 'NOTIFICATION_TEXT=**test_install** workflow was canceled (linux)' >> $GITHUB_ENV
326-
echo 'NOTIFICATION_AUTHOR_NAME=Canceled' >> $GITHUB_ENV
324+
echo 'NOTIFICATION_ICON=:warning:' >> $GITHUB_ENV
325+
echo 'NOTIFICATION_STATUS=was canceled' >> $GITHUB_ENV
327326
else
328327
exit 1
329328
fi
330329
timeout-minutes: 5
331330

332-
# Send notification to Slack:
331+
# Send notification to Zulip:
333332
- name: 'Send notification'
334333
# Pin action to full length commit SHA
335-
uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0
334+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2
336335
if: success()
337336
with:
338-
status: "${{ env.NOTIFICATION_STATUS }}"
339-
fields: repo,commit,message
340-
text: "${{ env.NOTIFICATION_TEXT }}"
341-
author_name: "${{ env.NOTIFICATION_AUTHOR_NAME }}"
342-
env:
343-
SLACK_WEBHOOK_URL: ${{ secrets.REPO_SLACK_WEBHOOK_URL }}
337+
api-key: ${{ secrets.ZULIP_API_KEY }}
338+
email: 'github-actions-bot@stdlib.zulipchat.com'
339+
organization-url: 'https://stdlib.zulipchat.com'
340+
to: 'workflows'
341+
type: 'stream'
342+
topic: 'linux-test-install'
343+
content: |
344+
${{ env.NOTIFICATION_ICON }} **test_install** workflow ${{ env.NOTIFICATION_STATUS }} (linux)
345+
346+
**Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
344347
timeout-minutes: 5

.github/workflows/macos_benchmark.yml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,11 @@ jobs:
250250
retention-days: 5
251251
timeout-minutes: 10
252252

253-
# Define a job for sending notifications to Slack...
254-
slack:
253+
# Define a job for sending notifications to Zulip...
254+
zulip:
255255

256256
# Define a display name:
257-
name: 'Slack notification'
257+
name: 'Zulip notification'
258258

259259
# Define the type of virtual host machine:
260260
runs-on: 'ubuntu-latest'
@@ -277,31 +277,34 @@ jobs:
277277
# Resolve notification data:
278278
- name: 'Resolve notification data'
279279
run: |
280-
echo 'NOTIFICATION_STATUS=${{ needs.benchmark.result}}' >> $GITHUB_ENV
281280
if [[ "${{ needs.benchmark.result }}" = "success" ]]; then
282-
echo 'NOTIFICATION_TEXT=**benchmark** workflow succeeded (macOS)' >> $GITHUB_ENV
283-
echo 'NOTIFICATION_AUTHOR_NAME=Success' >> $GITHUB_ENV
281+
echo 'NOTIFICATION_ICON=:check:' >> $GITHUB_ENV
282+
echo 'NOTIFICATION_STATUS=succeeded' >> $GITHUB_ENV
284283
elif [[ "${{ needs.benchmark.result }}" = "failure" ]]; then
285-
echo 'NOTIFICATION_TEXT=**benchmark** workflow failed (macOS)' >> $GITHUB_ENV
286-
echo 'NOTIFICATION_AUTHOR_NAME=Failure' >> $GITHUB_ENV
284+
echo 'NOTIFICATION_ICON=:cross_mark:' >> $GITHUB_ENV
285+
echo 'NOTIFICATION_STATUS=failed' >> $GITHUB_ENV
287286
elif [[ "${{ needs.benchmark.result }}" = "cancelled" ]]; then
288-
echo 'NOTIFICATION_TEXT=**benchmark** workflow was canceled (macOS)' >> $GITHUB_ENV
289-
echo 'NOTIFICATION_AUTHOR_NAME=Canceled' >> $GITHUB_ENV
287+
echo 'NOTIFICATION_ICON=:warning:' >> $GITHUB_ENV
288+
echo 'NOTIFICATION_STATUS=was canceled' >> $GITHUB_ENV
290289
else
291290
exit 1
292291
fi
293292
timeout-minutes: 5
294293

295-
# Send notification to Slack:
294+
# Send notification to Zulip:
296295
- name: 'Send notification'
297296
# Pin action to full length commit SHA
298-
uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0
297+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2
299298
if: success()
300299
with:
301-
status: "${{ env.NOTIFICATION_STATUS }}"
302-
fields: repo,commit,message
303-
text: "${{ env.NOTIFICATION_TEXT }}"
304-
author_name: "${{ env.NOTIFICATION_AUTHOR_NAME }}"
305-
env:
306-
SLACK_WEBHOOK_URL: ${{ secrets.REPO_SLACK_WEBHOOK_URL }}
300+
api-key: ${{ secrets.ZULIP_API_KEY }}
301+
email: 'github-actions-bot@stdlib.zulipchat.com'
302+
organization-url: 'https://stdlib.zulipchat.com'
303+
to: 'workflows'
304+
type: 'stream'
305+
topic: 'macos-benchmark'
306+
content: |
307+
${{ env.NOTIFICATION_ICON }} **benchmark** workflow ${{ env.NOTIFICATION_STATUS }} (macOS)
308+
309+
**Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
307310
timeout-minutes: 5

0 commit comments

Comments
 (0)