|
Some checks failed
generate-docs.yml / Merge pull request 'chore(ci): sync-docs-to-hub aceita secret TMF_HUB_TENANT_TOKEN [TH-59673]' (#6) from chore/TH-59673-tenant-token-secret into main (push) Failing after 0s
login-forgejo-registry.yml / Merge pull request 'chore(ci): sync-docs-to-hub aceita secret TMF_HUB_TENANT_TOKEN [TH-59673]' (#6) from chore/TH-59673-tenant-token-secret into main (push) Failing after 0s
sync-docs-to-hub.yml / Merge pull request 'chore(ci): sync-docs-to-hub aceita secret TMF_HUB_TENANT_TOKEN [TH-59673]' (#6) from chore/TH-59673-tenant-token-secret into main (push) Failing after 0s
Reviewed-on: #6 |
||
|---|---|---|
| .forgejo/workflows | ||
| README.md | ||
TMF CI-Shared
Reusable Forgejo Actions workflows para reduzir duplicação de código CI/CD across 6 projetos.
Workflows Disponíveis
1. install-docker.yml
Instala Docker CLI e Docker Buildx para operações de build/push de imagens.
Uso:
jobs:
setup:
runs-on: docker
steps:
- uses: TMF/ci-shared/.forgejo/workflows/install-docker.yml@main
with:
buildx_version: "latest" # ou "0.13.0"
Inputs:
buildx_version(opcional, default: "latest"): Versão do Docker Buildx
Resultado: Docker e Buildx instalados, buildx builder criado e pronto para uso.
2. install-aws-kubectl.yml
Instala AWS CLI v2 e kubectl para operações em EKS/AWS.
Uso:
jobs:
deploy:
runs-on: docker
steps:
- uses: TMF/ci-shared/.forgejo/workflows/install-aws-kubectl.yml@main
with:
aws_region: "sa-east-1"
kubectl_version: "1.28" # ou "latest"
Inputs:
aws_region(opcional, default: "sa-east-1"): Region AWSkubectl_version(opcional, default: "latest"): Versão do kubectl
Resultado: AWS CLI v2 e kubectl instalados e configurados.
3. login-forgejo-registry.yml
Autentica no Forgejo container registry para push/pull de imagens.
Uso:
jobs:
build:
runs-on: docker
steps:
- uses: TMF/ci-shared/.forgejo/workflows/login-forgejo-registry.yml@main
with:
registry_url: "git.trademarketingforce.com"
username: ${{ secrets.FORGEJO_USER }}
password_secret_name: "FORGEJO_TOKEN"
- name: Build and push image
run: |
docker build -t git.trademarketingforce.com/tmf/myapp:latest .
docker push git.trademarketingforce.com/tmf/myapp:latest
Inputs:
registry_url(opcional, default: "git.trademarketingforce.com"): URL do registryusername(obrigatório): Username para loginpassword_secret_name(opcional, default: "FORGEJO_TOKEN"): Nome do secret com token/senha
Secrets necessários no repositório:
FORGEJO_USER = seu username no Forgejo
FORGEJO_TOKEN = seu API token ou senha
Resultado: Docker logado no registry Forgejo, pronto para push/pull.
4. smoke-test-health.yml
Executa health checks com retry automático em endpoints HTTP.
Uso:
jobs:
verify-deploy:
runs-on: docker
steps:
- uses: TMF/ci-shared/.forgejo/workflows/smoke-test-health.yml@main
with:
health_url: "https://api.example.com/health"
max_attempts: 30
timeout_seconds: 1
expected_status: "200"
delay_between_attempts_seconds: 2
id: health
- name: Check result
run: |
if [ "${{ steps.health.outputs.status }}" = "healthy" ]; then
echo "✅ Service is ready"
else
echo "❌ Service failed health check"
exit 1
fi
Inputs:
health_url(obrigatório): URL do endpoint de health checkmax_attempts(opcional, default: 30): Número máximo de tentativastimeout_seconds(opcional, default: 1): Timeout por request (segundos)expected_status(opcional, default: "200"): HTTP status code esperadodelay_between_attempts_seconds(opcional, default: 2): Delay entre tentativas (segundos)
Outputs:
status: "healthy" se passou, "unhealthy" se falhou
Resultado: Verifica que o endpoint responde com status esperado.
Exemplo: Arquivo CI/CD Completo
name: Build and Deploy
on:
push:
branches: [main]
workflow_dispatch:
jobs:
# Setup tools
setup:
runs-on: docker
steps:
- uses: actions/checkout@v4
- uses: TMF/ci-shared/.forgejo/workflows/install-docker.yml@main
- uses: TMF/ci-shared/.forgejo/workflows/install-aws-kubectl.yml@main
with:
aws_region: "sa-east-1"
- uses: TMF/ci-shared/.forgejo/workflows/login-forgejo-registry.yml@main
with:
username: ${{ secrets.FORGEJO_USER }}
# Build and push
build:
needs: [setup]
runs-on: docker
steps:
- uses: actions/checkout@v4
- uses: TMF/ci-shared/.forgejo/workflows/login-forgejo-registry.yml@main
with:
username: ${{ secrets.FORGEJO_USER }}
- name: Build and push image
run: |
docker build -t git.trademarketingforce.com/tmf/myapp:latest .
docker push git.trademarketingforce.com/tmf/myapp:latest
# Verify deployment
verify:
needs: [build]
runs-on: docker
steps:
- uses: TMF/ci-shared/.forgejo/workflows/smoke-test-health.yml@main
with:
health_url: "https://myapp.example.com/health"
max_attempts: 30
Secrets no Repositório
Configure os seguintes secrets em Settings > Actions > Secrets:
FORGEJO_USER = seu_username
FORGEJO_TOKEN = seu_api_token
SSH_PRIVATE_KEY = sua_chave_ssh_privada
DEPLOY_HOST = seu_servidor_producao
DEPLOY_USER = usuario_ssh
Setup automático:
./scripts/ci-cd/setup-forgejo-secrets.sh
Manutenção
Cada workflow é autônomo e pode ser atualizado sem afetar outros. Commits que alteram workflows devem incluir testes em pelo menos 1 projeto consumidor antes de merge em main.
Testar workflow locally:
git clone https://git.trademarketingforce.com/TMF/ci-shared.git
cd ci-shared
# Editar workflow
git add .
git commit -m "Update workflow X"
git push origin main
# Em um projeto consumidor, atualizar a referência de branch:
# uses: TMF/ci-shared/.forgejo/workflows/xxx.yml@main # antes
# uses: TMF/ci-shared/.forgejo/workflows/xxx.yml@seu-branch # durante teste
Projetos Consumidores (6 projetos)
| Projeto | Prefixo | URL |
|---|---|---|
| TMF9 | TMF9 |
git.trademarketingforce.com/TMF/tmf9 |
| TMF Management | TH |
git.trademarketingforce.com/tarcisio/tmf-management |
| DANI | DAI |
git.trademarketingforce.com/tarcisio/dani |
| Fina | FINA |
git.trademarketingforce.com/tarcisio/fina |
| HelpCor | HCOR |
git.trademarketingforce.com/tarcisio/helpcor-admin |
| HelpCor Backend | CE |
git.trademarketingforce.com/tarcisio/helpcor-backend |
Histórico
- TH-54337: Criação inicial (4 workflows)
- TH-54330: Story parent (padronizar CI/CD em 6 projetos)
Licença
Trade Marketing Force © 2026