{"id":50995248,"url":"https://github.com/group10-tc-01/fcs-pipelines","last_synced_at":"2026-06-20T08:32:00.174Z","repository":{"id":352978058,"uuid":"1216646923","full_name":"group10-tc-01/fcs-pipelines","owner":"group10-tc-01","description":"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","archived":false,"fork":false,"pushed_at":"2026-06-05T02:15:59.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T04:09:07.966Z","etag":null,"topics":["aks","angular","azure","ci-cd","devops","docker","dotnet","fiap","github-actions","gitleaks","hackathon","pipelines","reusable-workflows","sonarcloud","terraform","trivy"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/group10-tc-01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-21T05:26:41.000Z","updated_at":"2026-06-05T02:16:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/group10-tc-01/fcs-pipelines","commit_stats":null,"previous_names":["group10-tc-01/fcg-pipelines","group10-tc-01/fcs-pipelines"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/group10-tc-01/fcs-pipelines","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/group10-tc-01%2Ffcs-pipelines","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/group10-tc-01%2Ffcs-pipelines/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/group10-tc-01%2Ffcs-pipelines/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/group10-tc-01%2Ffcs-pipelines/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/group10-tc-01","download_url":"https://codeload.github.com/group10-tc-01/fcs-pipelines/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/group10-tc-01%2Ffcs-pipelines/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34563535,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aks","angular","azure","ci-cd","devops","docker","dotnet","fiap","github-actions","gitleaks","hackathon","pipelines","reusable-workflows","sonarcloud","terraform","trivy"],"created_at":"2026-06-20T08:32:00.028Z","updated_at":"2026-06-20T08:32:00.157Z","avatar_url":"https://github.com/group10-tc-01.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# fcs-pipelines\n\nRepositó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.\n\n\u003e 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`.\n\n---\n\n## Responsabilidades\n\n- Padronizar os gates de CI/CD entre os repositórios da plataforma.\n- Expor workflows reutilizáveis via `workflow_call`.\n- Validar política de nomes de branch.\n- Executar secret scan com Gitleaks.\n- Executar análise de vulnerabilidades em dependências.\n- Executar build, testes, cobertura e SonarCloud para serviços .NET.\n- Executar formatação, lint, testes, cobertura e build para aplicações Angular.\n- Validar build de imagens Docker.\n- Publicar imagens no Azure Container Registry e executar deploy no AKS quando habilitado.\n- Executar workflows de Terraform para infraestrutura Azure.\n\nEste 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.\n\nDocumentação completa da arquitetura: [group10-tc-01/fcs-fase05-docs](https://github.com/group10-tc-01/fcs-fase05-docs).\n\nReferências diretas:\n\n- [Visão geral da arquitetura](https://github.com/group10-tc-01/fcs-fase05-docs/blob/main/architecture/overview.md)\n- [Repositórios e infraestrutura](https://github.com/group10-tc-01/fcs-fase05-docs/blob/main/architecture/repositories-and-infra.md)\n- [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)\n\n---\n\n## Workflows reutilizáveis\n\n| Workflow                                        | Finalidade                                                                                                                 |\n| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |\n| `.github/workflows/branch-name-check.yml`       | Política reutilizável para validação do nome das branches.                                                                 |\n| `.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. |\n| `.github/workflows/dotnet-service-delivery.yml` | Build, scan, push da imagem Docker para o Azure Container Registry e deploy no AKS com rolling update.                     |\n| `.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.          |\n| `.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.           |\n| `.github/workflows/terraform-azure.yml`         | Execução de plan e, opcionalmente, apply da infraestrutura Azure com Terraform usando OIDC.                                |\n\n---\n\n## Estrutura do repositório\n\n```text\n.github/\n  workflows/\n    angular-web-ci.yml\n    branch-name-check.yml\n    dotnet-service-ci.yml\n    dotnet-service-delivery.yml\n    gitops-image-update.yml\n    terraform-azure.yml\ndocs/\n  adoption-guide.md\n  required-secrets-and-vars.md\nexamples/\n  catalog/\n  catalog-ci.yml\n  catalog-delivery.yml\n  orchestration-terraform.yml\n  solidarity-web-ci.yml\n```\n\n---\n\n## Adoção em aplicações\n\nCada repositório de aplicação deve manter wrappers pequenos em `.github/workflows`.\n\n### Serviço .NET\n\n```yaml\nname: Identity CI\n\non:\n  pull_request:\n    branches: [main]\n  push:\n    branches: [main]\n\njobs:\n  ci:\n    uses: group10-tc-01/fcs-pipelines/.github/workflows/dotnet-service-ci.yml@main\n    with:\n      service_name: identity\n      dotnet_version: 8.0.x\n      solution_path: fcs.Identity.slnx\n      unit_tests_path: tests/fcs.Identity.UnitTests/fcs.Identity.UnitTests.csproj\n      coverage_threshold: 80\n      run_sonar: true\n      sonar_project_key: group10-tc-01_fcs-identity\n      sonar_organization: group10-tc-01\n      dockerfile_path: src/fcs.Identity.WebApi/Dockerfile\n      docker_context: .\n    secrets: inherit\n```\n\n### Aplicação Angular\n\n```yaml\nname: Solidarity Web Branch Policy\n\non:\n  pull_request:\n    branches: [main]\n    types: [opened, synchronize, reopened, edited]\n\njobs:\n  branch-name:\n    uses: group10-tc-01/fcs-pipelines/.github/workflows/branch-name-check.yml@main\n    with:\n      allowed_pattern: ^(feature|fix|bugfix|hotfix|release|chore|docs|refactor|test)\\/[a-z0-9._-]+$\n      allow_main: false\n```\n\n```yaml\nname: Solidarity Web CI\n\non:\n  pull_request:\n    branches: [main]\n  push:\n    branches: [main]\n\njobs:\n  ci:\n    uses: group10-tc-01/fcs-pipelines/.github/workflows/angular-web-ci.yml@main\n    with:\n      app_name: fcs-solidarity-web\n      node_version: \"24\"\n      working_directory: .\n      coverage_threshold: 80\n      run_coverage: true\n      dockerfile_path: Dockerfile\n      docker_context: .\n```\n\n---\n\n## Segurança\n\n- Segredos não devem ser versionados nos repositórios de aplicação nem neste repositório.\n- Secret scan é executado com Gitleaks.\n- Dependências .NET são verificadas com `dotnet list package --vulnerable`.\n- Dependências Angular são verificadas com `npm audit --audit-level=high`.\n- Imagens Docker são escaneadas com Trivy nos fluxos de delivery.\n- Credenciais Azure devem usar OIDC ou secrets protegidos por GitHub Environments.\n\nConsulte [docs/required-secrets-and-vars.md](docs/required-secrets-and-vars.md) para o contrato de secrets e variáveis.\n\n---\n\n## Guia de adoção\n\nO passo a passo completo está em [docs/adoption-guide.md](docs/adoption-guide.md).\n\nExemplos úteis:\n\n- [examples/catalog/](examples/catalog/)\n- [examples/solidarity-web-ci.yml](examples/solidarity-web-ci.yml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroup10-tc-01%2Ffcs-pipelines","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgroup10-tc-01%2Ffcs-pipelines","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroup10-tc-01%2Ffcs-pipelines/lists"}