https://github.com/group10-tc-01/fcs-pipelines
Pipelines reutilizáveis da plataforma Conexão Solidária — workflows GitHub Actions para CI/CD, validações de segurança, build Docker, entrega em AKS e automação Terraform
https://github.com/group10-tc-01/fcs-pipelines
aks angular azure ci-cd devops docker dotnet fiap github-actions gitleaks hackathon pipelines reusable-workflows sonarcloud terraform trivy
Last synced: 3 days ago
JSON representation
Pipelines reutilizáveis da plataforma Conexão Solidária — workflows GitHub Actions para CI/CD, validações de segurança, build Docker, entrega em AKS e automação Terraform
- Host: GitHub
- URL: https://github.com/group10-tc-01/fcs-pipelines
- Owner: group10-tc-01
- Created: 2026-04-21T05:26:41.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-05T02:15:59.000Z (18 days ago)
- Last Synced: 2026-06-05T04:09:07.966Z (18 days ago)
- Topics: aks, angular, azure, ci-cd, devops, docker, dotnet, fiap, github-actions, gitleaks, hackathon, pipelines, reusable-workflows, sonarcloud, terraform, trivy
- Size: 39.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# fcs-pipelines
Repositório de **Pipelines Reutilizáveis** da plataforma **Conexão Solidária**. Centraliza workflows do GitHub Actions para CI, validações de segurança, build de imagens, delivery em AKS e automação de infraestrutura.
> Repositório de apoio que compõe a arquitetura da Conexão Solidária junto a `fcs-identity`, `fcs-campaigns`, `fcs-donations`, `fcs-donation-worker`, `fcs-audit-logs`, `fcs-solidarity-web` e `fcs-solidarity-infra`.
---
## Responsabilidades
- Padronizar os gates de CI/CD entre os repositórios da plataforma.
- Expor workflows reutilizáveis via `workflow_call`.
- Validar política de nomes de branch.
- Executar secret scan com Gitleaks.
- Executar análise de vulnerabilidades em dependências.
- Executar build, testes, cobertura e SonarCloud para serviços .NET.
- Executar formatação, lint, testes, cobertura e build para aplicações Angular.
- Validar build de imagens Docker.
- Publicar imagens no Azure Container Registry e executar deploy no AKS quando habilitado.
- Executar workflows de Terraform para infraestrutura Azure.
Este repositório **não** contém código de aplicação. Cada aplicação mantém apenas wrappers pequenos em `.github/workflows` apontando para os workflows reutilizáveis daqui.
Documentação completa da arquitetura: [group10-tc-01/fcs-fase05-docs](https://github.com/group10-tc-01/fcs-fase05-docs).
Referências diretas:
- [Visão geral da arquitetura](https://github.com/group10-tc-01/fcs-fase05-docs/blob/main/architecture/overview.md)
- [Repositórios e infraestrutura](https://github.com/group10-tc-01/fcs-fase05-docs/blob/main/architecture/repositories-and-infra.md)
- [ADR 0022 - Reutilizar fcs-pipelines para CI/CD](https://github.com/group10-tc-01/fcs-fase05-docs/blob/main/adr/0022-reuse-fcs-pipelines-for-ci-cd.md)
---
## Workflows reutilizáveis
| Workflow | Finalidade |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `.github/workflows/branch-name-check.yml` | Política reutilizável para validação do nome das branches. |
| `.github/workflows/dotnet-service-ci.yml` | Build, testes, cobertura, análise de dependências, secret scan, SonarCloud e validação de build Docker para serviços .NET. |
| `.github/workflows/dotnet-service-delivery.yml` | Build, scan, push da imagem Docker para o Azure Container Registry e deploy no AKS com rolling update. |
| `.github/workflows/angular-web-ci.yml` | CI para aplicações Angular com npm audit, formatação, lint, testes, cobertura, build e validação de build Docker. |
| `.github/workflows/gitops-image-update.yml` | Atualização de tags de imagem em um repositório GitOps para que Argo CD ou Flux faça a reconciliação do cluster. |
| `.github/workflows/terraform-azure.yml` | Execução de plan e, opcionalmente, apply da infraestrutura Azure com Terraform usando OIDC. |
---
## Estrutura do repositório
```text
.github/
workflows/
angular-web-ci.yml
branch-name-check.yml
dotnet-service-ci.yml
dotnet-service-delivery.yml
gitops-image-update.yml
terraform-azure.yml
docs/
adoption-guide.md
required-secrets-and-vars.md
examples/
catalog/
catalog-ci.yml
catalog-delivery.yml
orchestration-terraform.yml
solidarity-web-ci.yml
```
---
## Adoção em aplicações
Cada repositório de aplicação deve manter wrappers pequenos em `.github/workflows`.
### Serviço .NET
```yaml
name: Identity CI
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
ci:
uses: group10-tc-01/fcs-pipelines/.github/workflows/dotnet-service-ci.yml@main
with:
service_name: identity
dotnet_version: 8.0.x
solution_path: fcs.Identity.slnx
unit_tests_path: tests/fcs.Identity.UnitTests/fcs.Identity.UnitTests.csproj
coverage_threshold: 80
run_sonar: true
sonar_project_key: group10-tc-01_fcs-identity
sonar_organization: group10-tc-01
dockerfile_path: src/fcs.Identity.WebApi/Dockerfile
docker_context: .
secrets: inherit
```
### Aplicação Angular
```yaml
name: Solidarity Web Branch Policy
on:
pull_request:
branches: [main]
types: [opened, synchronize, reopened, edited]
jobs:
branch-name:
uses: group10-tc-01/fcs-pipelines/.github/workflows/branch-name-check.yml@main
with:
allowed_pattern: ^(feature|fix|bugfix|hotfix|release|chore|docs|refactor|test)\/[a-z0-9._-]+$
allow_main: false
```
```yaml
name: Solidarity Web CI
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
ci:
uses: group10-tc-01/fcs-pipelines/.github/workflows/angular-web-ci.yml@main
with:
app_name: fcs-solidarity-web
node_version: "24"
working_directory: .
coverage_threshold: 80
run_coverage: true
dockerfile_path: Dockerfile
docker_context: .
```
---
## Segurança
- Segredos não devem ser versionados nos repositórios de aplicação nem neste repositório.
- Secret scan é executado com Gitleaks.
- Dependências .NET são verificadas com `dotnet list package --vulnerable`.
- Dependências Angular são verificadas com `npm audit --audit-level=high`.
- Imagens Docker são escaneadas com Trivy nos fluxos de delivery.
- Credenciais Azure devem usar OIDC ou secrets protegidos por GitHub Environments.
Consulte [docs/required-secrets-and-vars.md](docs/required-secrets-and-vars.md) para o contrato de secrets e variáveis.
---
## Guia de adoção
O passo a passo completo está em [docs/adoption-guide.md](docs/adoption-guide.md).
Exemplos úteis:
- [examples/catalog/](examples/catalog/)
- [examples/solidarity-web-ci.yml](examples/solidarity-web-ci.yml)