name: Notify of issues resolved in latest Zulip Cloud deploy on: push: branches: - zulip-cloud-current workflow_dispatch: inputs: before: description: "Old commit-ish" required: true after: description: "New commit-ish" required: true stream: description: "Stream to send to" default: "zulip cloud" topic: description: "Topic to send to" default: "latest deploy" permissions: contents: read issues: read pull-requests: read jobs: build-messages: runs-on: ubuntu-slim outputs: filenames: ${{ steps.set-matrix.outputs.filenames }} steps: - name: Check out repository uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 persist-credentials: false - name: Set up Python uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.x" - name: Install uv run: | ./scripts/lib/install-uv - name: Generate list of resolved issues id: generate env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BASE: ${{ inputs.before || github.event.before }} HEAD: ${{ inputs.after || github.event.after }} run: | set -o pipefail mkdir closed-by-commits-output ./tools/closed-by-commits "$BASE" "$HEAD" \ | perl -ple 'undef $/;s/\n\n/\x00/g' \ | split -t '\0' -C 8000 -d - closed-by-commits-output/message- perl -pi -e 's/\00/\n\n/g' closed-by-commits-output/message-* - name: Upload messages as artifacts uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: closed-by-commits-output path: closed-by-commits-output/ - name: Store filename list for matrix id: set-matrix run: | cd closed-by-commits-output/ echo "filenames=$(ls | jq -Rnc '[inputs]')" >> $GITHUB_OUTPUT send-messages: needs: build-messages runs-on: ubuntu-slim strategy: max-parallel: 1 matrix: filename: ${{ fromJson(needs.build-messages.outputs.filenames) }} if: ${{ success() && github.repository == 'zulip/zulip' }} steps: - name: Download messages as artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: closed-by-commits-output path: closed-by-commits-output/ - name: Read message contents id: read-file run: | echo "content<> $GITHUB_OUTPUT cat "closed-by-commits-output/$FILENAME" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT env: FILENAME: ${{ matrix.filename }} - name: Send to Zulip uses: zulip/github-actions-zulip/send-message@f675f2b4eb2a95fae974215476dcb7ad8dfeff6b # v2.0.2 with: api-key: ${{ secrets.ZULIP_BOT_KEY }} email: "github-actions-bot@chat.zulip.org" organization-url: "https://chat.zulip.org" to: "${{ inputs.stream || 'zulip cloud' }}" topic: "${{ inputs.topic || 'latest deploy' }}" type: "stream" content: ${{ steps.read-file.outputs.content }}