Receitas de CI/CD · Developers
Receitas prontas para notificar o Dailybot a partir de qualquer pipeline. Mesmo padrão que os workflows de release do Dailybot usam: uma chamada curl contra a API pública — sem runtime para instalar, sem CLI para manter sincronizado.
Todo vendor de CI suporta variáveis de ambiente e segredos — isso é tudo o que você precisa para falar com o Dailybot. As receitas abaixo usam `curl` + `jq` contra a API REST pública, o mesmo padrão que os próprios workflows de release do Dailybot usam. Prefere uma CLI? Vá para a seção da CLI.
Qual endpoint?
Dois endpoints cobrem a grande maioria dos casos de CI/CD. Ambos aceitam um header X-API-KEY e retornam JSON.
| Method | Path | When |
|---|---|---|
| POST | /v1/send-message/ | Notifica um canal, usuário ou time na sua plataforma de chat conectada (Slack, MS Teams, Discord, Google Chat). Ideal para alertas de deploy iniciado / deploy no ar / build falhou. |
| POST | /v1/agent-reports/ | Envia um standup como identidade de agente. Ideal para resumos noturnos via cron, relatórios por deploy, e qualquer update recorrente de "o que aconteceu hoje". |
Receitas API-first
Cada snippet é non-blocking: se o Dailybot ficar inalcançável por um instante, o pipeline continua. Os timeouts (--connect-timeout 10 --max-time 30) seguem o padrão dos workflows deste próprio site.
GitHub Actions — notificar um canal
# .github/workflows/notify-deploy.yml
name: Notify deploy
on:
workflow_run:
workflows: ["release"]
types: [completed]
jobs:
notify:
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- name: Install jq
run: sudo apt-get update && sudo apt-get install -y jq
- name: Post to Dailybot
env:
# UUID do canal no seu workspace do Dailybot.
DAILYBOT_CHANNEL: ${{ vars.DAILYBOT_DEPLOY_CHANNEL }}
run: |
MESSAGE=$'✅ *Deploy no ar*\n> commit: `'"${GITHUB_SHA:0:8}"'`\n> actor: '"$GITHUB_ACTOR"
BODY=$(jq -n --arg msg "$MESSAGE" --arg ch "$DAILYBOT_CHANNEL" \
'{message: $msg, target_channels: [$ch]}')
curl --fail --show-error --connect-timeout 10 --max-time 30 \
'https://api.dailybot.com/v1/send-message/' \
-H "X-API-KEY: ${{ secrets.DAILYBOT_API_KEY }}" \
-H 'Content-Type: application/json' \
-d "$BODY" \
|| echo "Notificação para o Dailybot falhou; seguindo."
GitHub Actions — enviar relatório de agente
# .github/workflows/nightly-report.yml
name: Nightly agent report
on:
schedule:
- cron: "0 23 * * *"
jobs:
report:
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- name: Install jq
run: sudo apt-get update && sudo apt-get install -y jq
- name: Enviar relatório
run: |
BODY=$(jq -n \
--arg summary "Batch noturno completo em ${GITHUB_REF_NAME}." \
--argjson milestone false \
'{summary: $summary, milestone: $milestone}')
curl --fail --show-error --connect-timeout 10 --max-time 30 \
'https://api.dailybot.com/v1/agent-reports/' \
-H "X-API-KEY: ${{ secrets.DAILYBOT_API_KEY }}" \
-H 'Content-Type: application/json' \
-d "$BODY" \
|| echo "Relatório de agente falhou; seguindo."
GitLab CI
# .gitlab-ci.yml (fragmento)
notify-dailybot:
stage: notify
image: alpine:3
before_script:
- apk add --no-cache curl jq
variables:
DAILYBOT_CHANNEL: "$DAILYBOT_DEPLOY_CHANNEL" # UUID, salva como variável masked
script: |
BODY=$(jq -n \
--arg msg "Pipeline ${CI_PIPELINE_ID} passou em ${CI_COMMIT_REF_NAME}." \
--arg ch "$DAILYBOT_CHANNEL" \
'{message: $msg, target_channels: [$ch]}')
curl --fail --show-error --connect-timeout 10 --max-time 30 \
'https://api.dailybot.com/v1/send-message/' \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H 'Content-Type: application/json' \
-d "$BODY" \
|| echo "Notificação para o Dailybot falhou; seguindo."
only:
- main
CircleCI
# .circleci/config.yml (fragmento)
version: 2.1
jobs:
notify-dailybot:
docker:
- image: cimg/base:current
steps:
- run:
name: Post to Dailybot
command: |
BODY=$(jq -n \
--arg msg "Job ${CIRCLE_JOB} passou em ${CIRCLE_BRANCH}." \
--arg ch "$DAILYBOT_DEPLOY_CHANNEL" \
'{message: $msg, target_channels: [$ch]}')
curl --fail --show-error --connect-timeout 10 --max-time 30 \
'https://api.dailybot.com/v1/send-message/' \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H 'Content-Type: application/json' \
-d "$BODY" \
|| echo "Notificação para o Dailybot falhou; seguindo."
workflows:
build-and-notify:
jobs:
- notify-dailybot:
context: dailybot-org # guarde aqui DAILYBOT_API_KEY + DAILYBOT_DEPLOY_CHANNEL
Bash / cron
# /etc/cron.d/dailybot-nightly-report
# Todo dia às 23:00 UTC, envie um standup de resumo.
SHELL=/bin/bash
# Carregue DAILYBOT_API_KEY do secret store do host; nunca hardcode aqui.
0 23 * * * app source /etc/dailybot.env && curl --fail --show-error --connect-timeout 10 --max-time 30 \
'https://api.dailybot.com/v1/agent-reports/' \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"summary":"Batch noturno completo.","milestone":false}' \
>> /var/log/dailybot-report.log 2>&1
Kubernetes CronJob
# k8s/dailybot-nightly.yaml (fragmento)
apiVersion: batch/v1
kind: CronJob
metadata:
name: dailybot-nightly-report
spec:
schedule: "0 23 * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: dailybot
image: curlimages/curl:8.10.1
envFrom:
- secretRef: { name: dailybot-secrets } # expõe DAILYBOT_API_KEY
command: ["sh", "-c"]
args:
- |
curl --fail --show-error --connect-timeout 10 --max-time 30 \
'https://api.dailybot.com/v1/agent-reports/' \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"summary":"Manutenção noturna rodou limpa.","milestone":false}'
Prefere uma CLI?
A CLI do Dailybot é um pacote Python publicado no PyPI: pypi.org/project/dailybot-cli. Ela envolve os mesmos endpoints — `dailybot chat send …` chama `/v1/send-message/`, `dailybot agent update …` chama `/v1/agent-reports/`. Para CI/CD recomendamos as receitas com curl acima (sem runtime para instalar, uma chamada HTTP, sempre alinhada com a API). A CLI encaixa melhor em desenvolvimento local e em processos de agente de longa duração.
# Recomendado — one-liner universal (macOS, Linux, WSL, Git Bash)
curl -sSL https://cli.dailybot.com/install.sh | bash
# Ambiente Python isolado com pipx
pipx install dailybot-cli
# Ou com pip
pip install dailybot-cli
# Verificar
dailybot --version
Guardar DAILYBOT_API_KEY com segurança
Nunca commite DAILYBOT_API_KEY no código. Todo vendor acima traz gerenciamento nativo de segredos — GitHub secrets, GitLab masked/protected variables, CircleCI contexts, Kubernetes secrets, EnvironmentFile= do systemd para cron. Rotacione a chave pelo dashboard do Dailybot no momento em que uma credencial compartilhada sair do org.