name: Send Slack Notification on: workflow_dispatch: inputs: commit: description: "Commit SHA to build the test notification" required: true type: string push: branches: - release/**/* permissions: contents: read id-token: write jobs: send_notification: name: Send Slack Notification runs-on: ubuntu-24.04 # Only run on pushes that carry new commits (or a manual dispatch); # skip bare branch-creation pushes that have no commits if: ${{ github.event_name != 'push' || github.event.head_commit != null }} steps: - name: Log in to Azure uses: bitwarden/gh-actions/azure-login@main with: subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} tenant_id: ${{ secrets.AZURE_TENANT_ID }} client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve Slack secrets id: retrieve-slack-secrets uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: gh-android secrets: "SLACK-WEBHOOK-TEAM-ENG-MOBILE,SLACK-WEBHOOK-AUTOMATIONS-TEST-CHANNEL" - name: Log out from Azure uses: bitwarden/gh-actions/azure-logout@main - name: Build message id: msg env: GH_TOKEN: ${{ github.token }} EVENT_NAME: ${{ github.event_name }} INPUT_COMMIT: ${{ github.event.inputs.commit }} REPO: ${{ github.repository }} REPO_NAME: ${{ github.event.repository.name }} COMMIT_URL: ${{ github.event.head_commit.url }} COMMIT_SHA: ${{ github.event.head_commit.id }} COMMIT_MESSAGE: ${{ github.event.head_commit.message }} COMMIT_AUTHOR: ${{ github.event.head_commit.author.name }} REPO_URL: ${{ github.event.repository.html_url }} run: | if [ "$EVENT_NAME" = "workflow_dispatch" ]; then COMMIT_SHA="$INPUT_COMMIT" REPO_URL="${GITHUB_SERVER_URL}/${REPO}" COMMIT_URL="${REPO_URL}/commit/${COMMIT_SHA}" COMMIT_JSON="$(gh api "repos/${REPO}/commits/${COMMIT_SHA}")" COMMIT_MESSAGE="$(jq -r '.commit.message' <<< "$COMMIT_JSON")" COMMIT_AUTHOR="$(jq -r '.commit.author.name' <<< "$COMMIT_JSON")" fi COMMIT_SUBJECT="$(printf '%s' "$COMMIT_MESSAGE" | head -n1)" PR_NUMBER=$(printf '%s' "$COMMIT_MESSAGE" | head -n1 | grep -oE '#[0-9]+' | tail -n1 | tr -d '#' || true) PR_LINE="" if [ -n "$PR_NUMBER" ]; then PR_LINE="<${REPO_URL}/pull/${PR_NUMBER}|${REPO_NAME}#${PR_NUMBER}> *${COMMIT_SUBJECT}* by *${COMMIT_AUTHOR}*" else PR_LINE="*${COMMIT_SUBJECT}* by *${COMMIT_AUTHOR}*" fi SHORT_SHA="${COMMIT_SHA:0:8}" COMMIT_LINE="<${COMMIT_URL}|${REPO_NAME}/${GITHUB_REF_NAME}@${SHORT_SHA}>" if [ "$EVENT_NAME" = "workflow_dispatch" ]; then CC_LINE="[slack users]" else CC_LINE=" <@U06538MSPJP>" fi echo "text=:cherry-pick: ${PR_LINE}\n:bricks: commit: ${COMMIT_LINE}\n:bitwarden-love: ${CC_LINE}" >> "$GITHUB_OUTPUT" - name: Send slack notification uses: slackapi/slack-github-action@af78098f536edbc4de71162a307590698245be95 # v3.0.1 with: webhook: ${{ github.event_name == 'workflow_dispatch' && steps.retrieve-slack-secrets.outputs.SLACK-WEBHOOK-AUTOMATIONS-TEST-CHANNEL || steps.retrieve-slack-secrets.outputs.SLACK-WEBHOOK-TEAM-ENG-MOBILE }} webhook-type: incoming-webhook payload: | text: "${{ steps.msg.outputs.text }}"