Pular para o conteúdo

GitHub Actions

Um passo no fim do workflow manda o resultado do deploy. Como o link é um segredo, ele fica em Secrets, nunca no YAML.

  1. No GGspeak, crie um webhook em Integrações, no canal de deploys, e copie o link.
  2. No repositório, abra Settings, Secrets and variables, Actions, e crie o segredo GGSPEAK_WEBHOOK com o link.
  3. Acrescente o passo abaixo ao job.
.github/workflows/deploy.yml
- name: Avisar o GGspeak
if: always()
env:
GGSPEAK_WEBHOOK: ${{ secrets.GGSPEAK_WEBHOOK }}
JOB_STATUS: ${{ job.status }}
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
if [ "$JOB_STATUS" = "success" ]; then STATE=ok; else STATE=alert; fi
jq -n \
--arg key "deploy-${GITHUB_REF_NAME}-${GITHUB_SHA::8}" \
--arg title "Deploy: ${GITHUB_REF_NAME}" \
--arg state "$STATE" \
--arg body "$GITHUB_REPOSITORY" \
--arg url "$RUN_URL" \
--arg sha "${GITHUB_SHA::8}" \
--arg who "$GITHUB_ACTOR" \
'{key: $key, card: {title: $title, state: $state, body: $body, url: $url,
fields: [{name: "Commit", value: $sha}, {name: "Quem", value: $who}]}}' \
| curl -fsS --retry 3 -X POST "$GGSPEAK_WEBHOOK" \
-H "Content-Type: application/json" -d @-

O jq monta o JSON com as aspas escapadas, mesmo que o nome do branch ou o autor tenha caracteres especiais. O resultado é o cartão da tabela de campos:

Corpo enviado em um deploy que deu certo
{
"key": "deploy-master-4856e7ac",
"card": {
"title": "Deploy: master",
"state": "ok",
"body": "ggspeak/ggspeak",
"url": "https://github.com/ggspeak/ggspeak/actions/runs/11800234567",
"fields": [
{ "name": "Commit", "value": "4856e7ac" },
{ "name": "Quem", "value": "rafael" }
]
}
}

Para o cartão aparecer como “Info” quando o deploy começa e virar “Resolvido” no fim, acrescente um passo antes do deploy com o mesmo key, mudando só o state para info e o título para “Deploy em andamento”. O passo final atualiza o mesmo cartão em vez de abrir outra mensagem.