es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Activar manualmente el flujo de trabajo de Github Actions después de que otro flujo de trabajo se ejecute exitosamente.

Estoy tratando de crear CI que haga lo siguiente:

  1. Ejecutar terraform plan -out=plan.out para generar un plan de Terraform.
  2. Después de revisar la salida del plan de Terraform en las acciones de Github, puedo manualmente ejecutar otro trabajo o flujo de trabajo que llame a terraform apply plan.out con el plan anteriormente generado. Quiero ejecutar manualmente esta automatización después de que la otra automatización se haya ejecutado correctamente, dependiendo del éxito de la automatización anterior, utilizando un artefacto de la automatización anterior.

He buscado en línea algunos ejemplos de esto, pero todos los ejemplos que encuentro solo ejecutan terraform apply sin permitir que alguien verifique la salida del plan.

¿Es esto algo que es posible hacer en las acciones de Github?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible lograr esto en Github Actions. Así es cómo puedes configurarlo.

    1. Crea un flujo de trabajo de Github Actions para ejecutar terraform plan.
    name: terraform-plan
    
    on:
      push:
        branches:
          - main
    
    jobs:
      terraform-plan:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
    
          - name: Setup Terraform
            uses: hashicorp/setup-terraform@v1
            with:
              terraform_version: 1.0.2
    
          - name: Terraform Init
            run: terraform init
    
          - name: Terraform Validate
            run: terraform validate
    
          - name: Terraform plan
            run: terraform plan -out=plan.out
    

    Este flujo de trabajo ejecutará terraform plan y generará un archivo de planificación llamado plan.out.

    1. Crea otro flujo de trabajo de Github Actions para aplicar manualmente el archivo de planificación.
    name: terraform-apply
    
    on:
      workflow_dispatch:
        inputs:
          plan:
            description: 'Archivo de planificación de Terraform'
            required: true
    
    jobs:
      terraform-apply:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
    
          - name: Setup Terraform
            uses: hashicorp/setup-terraform@v1
            with:
              terraform_version: 1.0.2
    
          - name: Terraform Apply
            run: terraform apply -auto-approve ${{ github.event.inputs.plan }}
    

    Este flujo de trabajo se activa manualmente utilizando el evento workflow_dispatch. Acepta una entrada plan, que es la ruta del archivo de planificación de Terraform generado en el flujo de trabajo anterior. El comando terraform apply se ejecuta con el archivo de planificación como entrada.

    1. Conecta los dos flujos de trabajo.

    Para conectar los dos flujos de trabajo, puedes utilizar artefactos de Github Actions. Después de que el flujo de trabajo terraform plan se complete correctamente, puedes cargar el archivo de planificación como un artefacto. El flujo de trabajo terraform apply puede descargar este artefacto y utilizarlo para aplicar los cambios.

    name: terraform-plan
    
    on:
      push:
        branches:
          - main
    
    jobs:
      terraform-plan:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
    
          - name: Setup Terraform
            uses: hashicorp/setup-terraform@v1
            with:
              terraform_version: 1.0.2
    
          - name: Terraform Init
            run: terraform init
    
          - name: Terraform Validate
            run: terraform validate
    
          - name: Terraform plan
            run: terraform plan -out=plan.out
    
          - name: Subir artefacto de plan
            uses: actions/upload-artifact@v2
            with:
              name: plan
              path: plan.out
    
    name: terraform-apply
    
    on:
      workflow_dispatch:
        inputs:
          plan:
            description: 'Archivo de planificación de Terraform'
            required: true
    
    jobs:
      terraform-apply:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
    
          - name: Setup Terraform
            uses: hashicorp/setup-terraform@v1
            with:
              terraform_version: 1.0.2
    
          - name: Descargar artefacto de plan
            uses: actions/download-artifact@v2
            with:
              name: plan
    
          - name: Terraform Apply
            run: terraform apply -auto-approve plan.out
    

    En este flujo de trabajo, utilizamos la acción actions/download-artifact para descargar el artefacto de planificación. El archivo de planificación se especifica con plan.out, ya que es el nombre predeterminado para el archivo de planificación generado.

    Ahora, después de que el flujo de trabajo terraform plan se ejecute correctamente, puedes ir a la pestaña de Github Actions y activar manualmente el flujo de trabajo terraform apply, proporcionando el archivo de planificación como entrada.

    Nota: Ejecutar terraform apply es un comando poderoso que puede realizar cambios en tu infraestructura. Asegúrate de probar a fondo antes de aplicar cambios y úsalo con precaución.

Comments are closed.