GNU/Linux >> Tutoriales Linux >  >> Linux

Configurar el flujo de trabajo de CI/CD con acciones de GitHub

Instale y configure el flujo de trabajo de CI/CD con acciones de GitHub para implementar el código fuente en el servidor remoto.

En esta guía, aprenderá cómo configurar las acciones de GitHub para realizar implementaciones automatizadas en el servidor una vez que se realiza un envío. Configuraremos claves SSH para autenticar con el servidor.

Requisitos

Siga esta guía para crear un nuevo usuario y configurar las claves SSH que son necesarias para que GitHub realice conexiones seguras con su servidor.

Una vez que haya completado el paso anterior, puede proceder a GitHub para configurar las acciones.

Tome nota de los siguientes detalles de la configuración anterior.

  1. Nombre de usuario :El nuevo usuario que creaste usando adduser comando.
  2. Nombre de host :Esta es la dirección IP de su servidor.
  3. Clave privada :Esta clave se crea automáticamente usando el ssh-keygen dominio. Asegúrese de que la clave esté en formato RSA, que comienza con -----BEGIN RSA PRIVATE KEY----- .

Estos 3 datos son necesarios para realizar la conexión al servidor desde GitHub.

Secretos de configuración

Inicie sesión en su cuenta de GitHub y vaya a su repositorio.

Vaya a Configuración>> Secretos .

Haz clic en Nuevo secreto de repositorio .

En el Nombre agregue SSH_HOST y en valor ingrese la dirección IP de su servidor.

Haz clic en Añadir secreto .

Vuelva a hacer clic en Nuevo secreto de repositorio .

En el Nombre agregue SSH_USERNAME y en valor ingrese el nombre de usuario anotó anteriormente que se creó en la publicación mencionada en la sección de requisitos previos.

Haz clic en Añadir secreto .

Vuelva a hacer clic en Nuevo secreto de repositorio .

En el Nombre agregue SSH_KEY y en valor ingrese la clave privada anotó anteriormente que se creó en la publicación mencionada en la sección de requisitos previos.

Haz clic en Añadir secreto .

Ahora deberías tener tus secretos como se muestra a continuación.

Una vez que los secretos estén en su lugar, puede configurar acciones.

Iniciar flujo de trabajo de acciones

Ahora haga clic en Acciones pestaña.

Verá una lista de flujos de trabajo que se pueden configurar de forma predeterminada.

Puede hacer clic en Configurar un flujo de trabajo usted mismo.

Verá algunas configuraciones predeterminadas aquí.

Configurar flujo de trabajo de acciones

Puede nombrar el archivo de flujo de trabajo según su deseo. Lo nombraré como deploy.yml .

Puede eliminar todos los flujos de trabajo que se incluyeron de forma predeterminada.

Copie el siguiente flujo de trabajo y agréguelo.

name: Identifier Name
on:
  push:
    branches: [ branch-name ]

jobs:
  deploy:    
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
      - name: Deploy source-code
        uses: appleboy/[email protected]
        env:
          HOST: ${{ secrets.SSH_HOST }}
          USERNAME: ${{ secrets.SSH_USERNAME }}
          PORT: 22
          KEY: ${{ secrets.SSH_KEY }}
        with:
          source: "*"
          target: "/path/in/your/server"

El código anterior realizará una implementación en su servidor cuando se realice una inserción en una rama de mota.

Despliega todo el código fuente ubicado en la ubicación raíz de su repositorio. Si necesita implementar una carpeta específica, solo puede configurarla en la directiva de origen.

Asegúrese de que el usuario tenga permisos en el servidor para realizar la implementación.

Por ejemplo, si está utilizando el servidor web Nginx o Apache que se ejecuta con el usuario www-data, necesita permisos de configuración y restablecer los permisos como se muestra a continuación.

name: Identifier Name
on:
  push:
    branches: [ branch-name ]

jobs:
  deploy:    
    runs-on: ubuntu-latest
    steps:
      - name: Reset Permissions before deployment
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          port: 22
          script: |
            sudo chmod -R 755 /path/in/your/server
            sudo chown -R username:username /path/in/your/server
            sudo setfacl -R -m u:www-data:rwx /path/in/your/server 

      - uses: actions/[email protected]
      - name: Deploy source-code
        uses: appleboy/[email protected]
        env:
          HOST: ${{ secrets.SSH_HOST }}
          USERNAME: ${{ secrets.SSH_USERNAME }}
          PORT: 22
          KEY: ${{ secrets.SSH_KEY }}
        with:
          source: "*"
          target: "/path/in/your/server"

      - name: Reset Permissions after deployment
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          port: 22
          script: |
            sudo chmod -R 755 /path/in/your/server
            sudo chown -R www-data:www-data /path/in/your/server
            sudo setfacl -R -m u:username:rwx /path/in/your/server

La configuración de implementación anterior configura al usuario para que tenga acceso completo a la carpeta para la implementación y el acceso de configuración para el usuario www-data que es utilizado por Apache y Nignx.

Una vez hecho esto, haga clic en Comenzar confirmación y haga clic en Confirmar archivo nuevo para completar la configuración.

Ahora tiene una implementación configurada para ejecutarse cada vez que se realiza un envío a la rama específica.

Conclusión

Ahora ha aprendido cómo instalar y configurar el flujo de trabajo de acciones de GitHub para CI/CD.

Gracias por tu tiempo. Si tiene algún problema o comentario, deje un comentario a continuación.


Linux
  1. Reemplace find con fd en Linux

  2. Proxy inverso con Nginx:una guía de configuración paso a paso

  3. Cómo configurar LogAnalyzer con Rsyslog y MySQL

  4. Configurar el clúster de Kubernetes con Rancher

  5. Configuración para principiantes de ZFS con unidades de diferentes tamaños

Seguridad de CI/CD:cómo proteger su tubería de CI/CD

Primeros pasos con GitHub

Primeros pasos con los libros de jugadas de Ansible

Cómo configurar un cortafuegos con UFW en Linux

Configuración inicial del servidor con Ubuntu 18.04

Cómo configurar un servidor FTP con VSFTPD