Skip to content

"github-actions-templates" o "reusable-workflows" que permiten centralizar la gestión y sincronizar actualizaciones fácilmente.

Notifications You must be signed in to change notification settings

pulidovpe/reusable-workflows

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Reusable Workflows

Este repositorio contiene workflows reutilizables de GitHub Actions que permiten centralizar la gestión de CI/CD y sincronizar actualizaciones fácilmente entre múltiples repositorios.

🎯 Propósito

El objetivo principal es proporcionar workflows estandarizados y reutilizables que puedan ser llamados desde otros repositorios, evitando la duplicación de código y facilitando el mantenimiento de pipelines de CI/CD.

📋 Workflows Disponibles

1. Setup OIDC (oidc-setup.yml)

Descripción: Configura automáticamente un proveedor OIDC (OpenID Connect) en AWS y crea un rol IAM compartido que permite a GitHub Actions autenticarse con AWS sin necesidad de credenciales estáticas.

Funcionalidades:

  • Crea o reutiliza un proveedor OIDC para GitHub Actions
  • Genera un rol IAM compartido configurable
  • Crea políticas IAM dinámicas por repositorio
  • Utiliza Terraform para la infraestructura como código
  • Detecta automáticamente proveedores OIDC existentes

📥 Parámetros de Entrada

Parámetro Tipo Requerido Descripción
aws_account_id string ID de la cuenta de AWS
aws_region string Región de AWS donde crear los recursos
role_name string Nombre para el rol IAM
repo_names string (JSON) Lista JSON de repositorios autorizados (formato: ["owner/repo1", "owner/repo2"])
oidc_actions string Patrón de acciones OIDC permitidas (default: "*")
policy_actions string (JSON) Mapa JSON de acciones IAM por repositorio (formato: "{owner/repo1", ["s3:*"]})

🔐 Secretos Requeridos

Secreto Descripción
aws_access_key_id Access Key ID de AWS
aws_secret_access_key Secret Access Key de AWS

📤 Outputs

Output Descripción
oidc_provider_arn ARN del proveedor OIDC creado/actualizado
github_role_arn ARN del rol IAM creado/actualizado

💡 Ejemplo de Uso

name: Setup AWS OIDC

on:
  workflow_dispatch:
    inputs:
      aws_region:
        description: 'AWS Region'
        required: true
        default: 'us-east-1'
      role_name:
        description: 'Nombre del rol IAM'
        required: true
        default: 'github-actions-role'

jobs:
  setup-oidc:
    uses: pulidovpe/reusable-workflows/.github/workflows/oidc-setup.yml@main
    with:
      aws_account_id: '123456789012'
      aws_region: ${{ github.event.inputs.aws_region }}
      role_name: ${{ github.event.inputs.role_name }}
      repo_names: '["usuario/my-app", "usuario/another-app"]'
      policy_actions: '{"usuario/my-app": ["s3:GetObject", "s3:PutObject"], "usuario/another-app": ["ec2:DescribeInstances"]}'
    secrets:
      aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
      aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

🔧 Configuración de Terraform

El workflow utiliza Terraform para gestionar la infraestructura:

➡️ Backend: S3 (devops-aws-backend-tfstate)
➡️ Estado: test/oidc-setup.tfstate
➡️ Región: Configurable via input
➡️ Recursos creados:

  • Proveedor OIDC para GitHub Actions
  • Rol IAM compartido
  • Políticas IAM dinámicas por repositorio

📁 Estructura de Archivos

terraform/oidc/
├── main.tf          # Configuración principal de Terraform
├── variables.tf     # Definición de variables
└── outputs.tf       # Outputs de Terraform

🚀 Cómo Usar los Workflows

Para usar cualquier workflow de este repositorio en tu proyecto:

  1. Referenciar el workflow:

    uses: pulidovpe/reusable-workflows/.github/workflows/nombre-workflow.yml@main
  2. Proporcionar los parámetros requeridos:

    with:
      parametro1: valor1
      parametro2: valor2
  3. Configurar los secretos necesarios:

    secrets:
      secreto1: ${{ secrets.MI_SECRETO }}

🔄 Versiones

  • @main: Última versión (desarrollo)
  • @v1.0.0: Versión estable (cuando esté disponible)

🤝 Contribución

Para agregar nuevos workflows:

  1. Crea el archivo en .github/workflows/
  2. Documenta los parámetros y secretos requeridos
  3. Actualiza este README con la información del nuevo workflow
  4. Incluye ejemplos de uso

📝 Notas Importantes

  • Los workflows utilizan Terraform para gestionar la infraestructura
  • El backend de Terraform está configurado en S3
  • Los roles IAM son compartidos entre múltiples repositorios
  • Se detectan automáticamente proveedores OIDC existentes para evitar duplicados

🔗 Enlaces Útiles

About

"github-actions-templates" o "reusable-workflows" que permiten centralizar la gestión y sincronizar actualizaciones fácilmente.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages