Implementación de CI/CD en aplicaciones C/C++ (Linux) usando Shell y Docker Executor en GitLab

Hay muchos ejecutores disponibles para implementar CI/CD con GitLab Runner. Sin embargo, Shell y Docker son más populares entre ellos y podemos configurar fácilmente un repositorio con estos ejecutores. Estos corredores se pueden elegir en función de los requisitos y la disponibilidad de los recursos. Este artículo se centra principalmente en el ejecutor de Shell y Docker de la aplicación Linux C/C++ y el código está escrito en script bash. La aplicación puede compilarse y probarse mediante un script bash. 

Shell Executor: Shell Executor es un ejecutor muy simple que ayuda a construir la solución localmente en la máquina, donde está instalado GitLab Runner. En este caso, GitLab Runner está instalado en la máquina Linux, por lo que debe instalar el software requerido en el mismo sistema.

Docker Executor: Es una poderosa herramienta que incluye mucho software y se puede acceder por imagen. La ventaja de este ejecutor es que no necesitamos instalar ningún software manualmente, todo se hará a través de Docker y la imagen requerida se descargará desde Docker Hub. Sin embargo, la desventaja es que esta comunicación está bloqueada en algunas organizaciones por motivos de seguridad. Entonces, si este es el caso, Shell Executor es la mejor alternativa. 

Implementación de C/C++ en Shell Executor 

Requisitos : estos son el software básico que debe instalarse en una máquina Linux. Sin embargo, se puede cambiar según el script de compilación y es necesario descargar otro software si es necesario.

Software  

Descripción  

Git        Este es el primer requisito, para confirmar los cambios en GitLab. Es un software de control de versiones que rastrea el conjunto cambiante de archivos.
hacer  Para crear una aplicación c/c++ de automatización, prueba y empaquetado, es necesario instalar cmake en una máquina Linux.
CCG Es un compilador que necesita compilar los programas c/c++ 
g ++ También es un compilador que necesita compilar los programas c/c++. Se puede elegir en función del guión escrito.
grep Instálelo si el programa busca texto sin formato. 

Configuración de ruta: después de la instalación exitosa anterior, debe configurar la ruta de este software instalado en la máquina si no está configurado. Ejecute el siguiente comando en la máquina.

Variable/Archivo                                   

Sendero 

G++ exportar GCC=/usr/bin/g++
CC exportar CC=/usr/bin/gcc
GREP exportar GREP=/usr/bin/grep
Permiso  Dar permiso al script antes de que se ejecute: el chmod -R 777 *
.gitlab-ci.yml Este archivo debe estar dentro del directorio raíz del proyecto que contiene toda la configuración de CI/CD, incluido el software y la ruta del script. Aquí, puede mencionar cómo debería funcionar este repositorio. Antes de agregar este archivo al directorio raíz, debe verificar si es un archivo yml válido o no.

Configuración de GitLab Runner : siga los pasos a continuación para descargar y configurar GitLab Runner.

1. Descargue GitLab Runner en una máquina Linux usando el siguiente comando

sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

2. Dale permisos para su ejecución usando el siguiente comando

sudo chmod +x /usr/local/bin/gitlab-runner

3. Cree un GitLab CI usando el siguiente comando

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

4. Instalar y ejecutar como servicio usando el siguiente comando

sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

5. Inicie GitLab Runner usando el siguiente comando

sudo gitlab-runner start

6. Detenga GitLab Runner antes de registrar el repositorio

sudo gitlab-runner stop

7. Una vez que GitLab Runner se haya detenido con éxito, ingrese el siguiente comando en la terminal para el registro del repositorio.

sudo gitlab-runner register

8. Cuando realiza el registro del repositorio con GitLab Runner, debe responder las siguientes preguntas.

  • Ingrese la URL de su instancia de GitLab : puede ser diferente con cada organización y el formato será como http://gitlab.example.com
  • Ruta : Vaya a la cuenta de GitLab → Seleccione el repositorio en el que desea registrar el corredor → Configuración → CI/CD → Expandir corredor
  • Ingrese el token de gitlab-ci para este corredor : Será un token único de cada proyecto que necesitará durante el registro y se puede encontrar Ruta: Vaya a la cuenta de GitLab → Seleccione el repositorio en el que desea registrarse con el corredor → Configuración → CI/ CD → Expandir Corredor
  • Ingrese la descripción de gitlab-ci para este corredor : coloque el nombre del corredor (cualquier nombre), que lo ayudará a recordar qué corredor está ejecutando
  • Ingrese las etiquetas gitlab-ci para este corredor : es opcional si desea iniciar el corredor GitLab cuando una etiqueta específica está disponible en el archivo yml.
  • Ingrese el ejecutor: habrá una lista de varios ejecutores y escriba shell (ya que GitLab Runner ejecutará nuestro sistema)

9. Después de un registro exitoso, inicie GitLab Runner usando el siguiente comando.

sudo gitlab-runner start

10. Verificar que GitLab Runner haya registrado el repositorio respectivo y se haya iniciado el runner. Vaya a Cuenta de GitLab → Seleccione el repositorio en el que desea registrarse con el corredor → Configuración → CI/CD → Expandir corredor. Habrá un círculo de color verde disponible y el mensaje que se muestra será Corredores activados para este proyecto. Nota: si el círculo es gris, significa que el corredor no ha comenzado y comienza de nuevo.

Comandos de Linux GitLab Runner

Siga algunos comandos más de GitLab Runner para familiarizarse.  

Dominio

Descripción 

registro sudo gitlab-runner Registrar el proyecto con GitLab Runner 
inicio de sudo gitlab-runner Iniciar el corredor 
detener sudo gitlab-runner detener al corredor
estado de sudo gitlab-runner Para saber el estado de gitlab-runner 
sudo gitlab-runner unregister –name test-runner   Cancele el registro del corredor de un proyecto y reemplace el corredor de prueba con su nombre de corredor y este nombre se puede encontrar dentro del archivo config.toml (donde está disponible su gitlab-runner).
sudo gitlab-runner unregister –url http://gitlab.example.com/ –token t0k3n Eliminar Runner por URL y token 
sudo gitlab-runner unregister –todos los corredores Para cancelar el registro de todos los corredores
reinicio de sudo gitlab-runner Este comando detiene y luego inicia el servicio GitLab Runner
desinstalación de sudo gitlab-runner Este comando detiene y desinstala GitLab Runner para que no se ejecute como un servicio
ejecución de sudo gitlab-runner Para ver una lista de ejecutores disponibles, ejecute
sudo gitlab-runner –ayuda Verifique una lista reciente de comandos ejecutando
sudo gitlab-runner ejecutar –ayuda Puede ver el nombre de la variable de entorno.
sudo gitlab-runner – depuración Para ejecutar un comando en modo de depuración
sudo gitlab-runner exec shell Para ver una lista de todas las opciones disponibles para el ejecutor de shell, ejecute

.gitlab-ci.yml_ shell Ejecutor:

A continuación se muestra el contenido de .gitlab-ci.yml en modo ejecutor de shell. Sin embargo, cámbielo si es necesario.

stages:
 - build
 - test

build_job:
 stage: build
 only:
   - master
 script:  
    - cd sourcecode
    - export G++=/usr/bin/g++  //if not set manually path of g++
    - export GCC=/usr/bin/gcc //if not set manually path of gcc
    - chmod -R 777 *
    - ./BuildPackage.sh
    - pwd  
     
 artifacts:
   expire_in: 365 days   //save the binary which needed while test the application, and it can be downloaded from GitLab
   paths:
      - sourcecode/binaryfolder_name  // save the binary  
       
     
test_job:
 stage: test
 only:
   - master
 script:
    - pwd  
    - cd testdir       //go to test directory for run the test case script  
    - chmod -R 777 *
    - ./tests.sh
   
 dependencies:
   - build_job
   - build_job

Implementación de C/C++ en Docker Executor: no es necesario instalar ningún software manualmente, todo se tomará del contenedor docker. Sin embargo, puede instalar el software requerido ingresando el nombre en el archivo yml y también puede exportar la ruta. Para ejecutar gitlab runner en modo ejecutor docker, vaya a Configuración de GitLab Runner (arriba) y seleccione docker en lugar de shell. 

.gitlab-ci.yml_ Docker Ejecutor :

A continuación se muestra el contenido de .gitlab-ci.yml en el modo ejecutor de la ventana acoplable. Sin embargo, cámbielo si es necesario. 

image: ubuntu:latest
 
stages:
 - build
 - test
 
before_script:
 - echo "Before script install this on ubuntu image "
 - apt-get update && apt-get -y install cmake && apt-get -y install gcc &&  apt-get -y install g++
 

build_job:
 stage: build
 only:
   - master
 script:  
    - cd sourcecode
    - export G++=/usr/bin/g++  //if not set manually path of g++
    - export GCC=/usr/bin/gcc //if not set manually path of gcc
    - chmod -R 777 *
    - ./BuildPackage.sh
    - pwd  
     
 artifacts:
   expire_in: 365 days   //save the binary which needed while test the application, and it can be downloaded from GitLab
   paths:
      - sourcecode/binaryfolder_name  // save the binary  
       
     
test_job:
 stage: test
 only:
   - master
 script:
    - pwd  
    - cd testdir       //go to test directory for run the test case script  
    - chmod -R 777 *
    - ./tests.sh
   
 dependencies:
   - build_job

Publicación traducida automáticamente

Artículo escrito por amiransarimy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *