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.
- No GGspeak, crie um webhook em Integrações, no canal de deploys, e copie o link.
- No repositório, abra Settings, Secrets and variables, Actions, e crie o segredo
GGSPEAK_WEBHOOKcom o link. - Acrescente o passo abaixo ao job.
- 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:
{ "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" } ] }}Um cartão do começo ao fim
Seção intitulada “Um cartão do começo ao fim”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.