mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	ci: Notify in zulip when a build fails in GitHub Actions.
We use the circleci integration which already has a nice setup for sending messages when triggered to send the build failure notification.
This commit is contained in:
		
							
								
								
									
										6
									
								
								.github/workflows/legacy-os.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/legacy-os.yml
									
									
									
									
										vendored
									
									
								
							@@ -16,3 +16,9 @@ jobs:
 | 
				
			|||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          { { ! sudo scripts/lib/upgrade-zulip-stage-2 2>&1 >&3; } | tee upgrade.err; } 3>&1 >&2
 | 
					          { { ! sudo scripts/lib/upgrade-zulip-stage-2 2>&1 >&3; } | tee upgrade.err; } 3>&1 >&2
 | 
				
			||||||
          grep -Fq 'upgrade-zulip-stage-2: Unsupported platform: ubuntu 16.04' upgrade.err
 | 
					          grep -Fq 'upgrade-zulip-stage-2: Unsupported platform: ubuntu 16.04' upgrade.err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Report status
 | 
				
			||||||
 | 
					        if: failure()
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          ZULIP_BOT_KEY: ${{ secrets.ZULIP_BOT_KEY }}
 | 
				
			||||||
 | 
					        run: tools/ci/send-failure-message
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								.github/workflows/production-suite.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								.github/workflows/production-suite.yml
									
									
									
									
										vendored
									
									
								
							@@ -99,6 +99,12 @@ jobs:
 | 
				
			|||||||
          path: /tmp/production-build
 | 
					          path: /tmp/production-build
 | 
				
			||||||
          retention-days: 14
 | 
					          retention-days: 14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Report status
 | 
				
			||||||
 | 
					        if: failure()
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          ZULIP_BOT_KEY: ${{ secrets.ZULIP_BOT_KEY }}
 | 
				
			||||||
 | 
					        run: tools/ci/send-failure-message
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  production_install:
 | 
					  production_install:
 | 
				
			||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
@@ -142,6 +148,7 @@ jobs:
 | 
				
			|||||||
          chmod +x /tmp/production-upgrade-pg
 | 
					          chmod +x /tmp/production-upgrade-pg
 | 
				
			||||||
          chmod +x /tmp/production-install
 | 
					          chmod +x /tmp/production-install
 | 
				
			||||||
          chmod +x /tmp/production-verify
 | 
					          chmod +x /tmp/production-verify
 | 
				
			||||||
 | 
					          chmod +x /tmp/send-failure-message
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Create cache directories
 | 
					      - name: Create cache directories
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
@@ -181,3 +188,9 @@ jobs:
 | 
				
			|||||||
      - name: Verify install after upgrading postgresql
 | 
					      - name: Verify install after upgrading postgresql
 | 
				
			||||||
        if: ${{ matrix.is_bionic }}
 | 
					        if: ${{ matrix.is_bionic }}
 | 
				
			||||||
        run: sudo mispipe "/tmp/production-verify 2>&1" ts
 | 
					        run: sudo mispipe "/tmp/production-verify 2>&1" ts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Report status
 | 
				
			||||||
 | 
					        if: failure()
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          ZULIP_BOT_KEY: ${{ secrets.ZULIP_BOT_KEY }}
 | 
				
			||||||
 | 
					        run: /tmp/send-failure-message
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								.github/workflows/zulip-ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/zulip-ci.yml
									
									
									
									
										vendored
									
									
								
							@@ -153,7 +153,9 @@ jobs:
 | 
				
			|||||||
      - name: Check development database build
 | 
					      - name: Check development database build
 | 
				
			||||||
        if: ${{ matrix.is_focal }}
 | 
					        if: ${{ matrix.is_focal }}
 | 
				
			||||||
        run: mispipe "tools/ci/setup-backend" ts
 | 
					        run: mispipe "tools/ci/setup-backend" ts
 | 
				
			||||||
      # TODO: We need to port the notify_failure step from CircleCI
 | 
					
 | 
				
			||||||
      # config, however, it might be the case that GitHub notifications
 | 
					      - name: Report status
 | 
				
			||||||
      # make this unnecessary. More details on settings to configure it:
 | 
					        if: failure()
 | 
				
			||||||
      # https://help.github.com/en/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#github-actions-notification-options
 | 
					        env:
 | 
				
			||||||
 | 
					          ZULIP_BOT_KEY: ${{ secrets.ZULIP_BOT_KEY }}
 | 
				
			||||||
 | 
					        run: tools/ci/send-failure-message
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,6 +38,7 @@ cp -a \
 | 
				
			|||||||
    tools/ci/production-verify \
 | 
					    tools/ci/production-verify \
 | 
				
			||||||
    tools/ci/production-upgrade-pg \
 | 
					    tools/ci/production-upgrade-pg \
 | 
				
			||||||
    tools/ci/production-extract-tarball \
 | 
					    tools/ci/production-extract-tarball \
 | 
				
			||||||
 | 
					    tools/ci/send-failure-message \
 | 
				
			||||||
    package.json yarn.lock \
 | 
					    package.json yarn.lock \
 | 
				
			||||||
    \
 | 
					    \
 | 
				
			||||||
    /tmp/production-build
 | 
					    /tmp/production-build
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								tools/ci/send-failure-message
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								tools/ci/send-failure-message
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					set -x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "$ZULIP_BOT_KEY" != "" && "$GITHUB_REPOSITORY" == "zulip/zulip" ]]; then
 | 
				
			||||||
 | 
					    BRANCH="$(python3 -c 'import sys; print(sys.argv[1].split("/")[-1])' "$GITHUB_REF")"
 | 
				
			||||||
 | 
					    URI_ESCAPED_TOPIC="$(python3 -c 'import sys; import urllib.parse; print(urllib.parse.quote(sys.argv[1]))' "$BRANCH failing")"
 | 
				
			||||||
 | 
					    curl -H "Content-Type: application/json" \
 | 
				
			||||||
 | 
					        -X POST -i 'https://chat.zulip.org/api/v1/external/circleci?api_key='"$ZULIP_BOT_KEY"'&stream=automated%20testing&topic='"$URI_ESCAPED_TOPIC" \
 | 
				
			||||||
 | 
					        -d '{"payload": { "branch": "'"$BRANCH"'", "reponame": "'"$GITHUB_REPOSITORY"'", "status": "failed", "build_url": "'"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"'", "username": "'"$GITHUB_ACTOR"'"}}'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
		Reference in New Issue
	
	Block a user