GitLab CI/CD
Introdução
O GitLab CI/CD é uma ferramenta integrada ao GitLab onde é possível descrever todos os passos de integração e implantação contínua em um arquivo dentro do repositório. Na SETIC é utilizado para automatizar os processos de integração, inspeção de código e publicação no OpenShift.
Orientações
Pré-requisitos
Docker
A esteira de automação da SETIC, que utiliza o Gitlab CI/CD, é baseada na adoção de Containers, com isso, dentre as opções disponíveis no mercado, foi escolhido a ferramenta Docker.
Todo projeto deverá possuir um arquivo "Dockerfile" ou "Containerfile" funcional.
Certificados
Alguns certificados são necessários para que o projeto possa ser publicado no OpenShift.
Abaixo segue o exemplo, baseado em uma imagem Linux (Alpine, Debian, Ubuntu e distribuições derivadas)
RUN curl -fsSL https://gitlab.setic.ro.gov.br/publico/ca-trust/-/raw/master/openshift_ca.crt -o /usr/local/share/ca-certificates/openshift_ca.crt
RUN curl -fsSL https://gitlab.setic.ro.gov.br/publico/ca-trust/-/raw/master/portainer_ca.crt -o /usr/local/share/ca-certificates/portainer_ca.crt
RUN update-ca-certificates
Abaixo segue o exemplo, baseado em uma imagem Windows
Em andamento...
Instalação
Crie um arquivo "gitlab-ci.yml" na raiz do projeto, com a estrutura básica abaixo.
include:
- project: ci-cd/templates
ref: production
file:
- deploy.openshift.yml
- variables.yml
stages:
- deploy
variables:
PROJECT_NAME: "nomedoprojeto"
PROJECT_DISPLAY_NAME: "Nome do Projeto"
## DOCKER
DOCKERFILE_PATH: "Dockerfile"
DOCKERFILE_CONTEXT: "/"
## ROTA
ROUTER_PORT: "8080"
ROUTER_PATH: "/"
ROUTER_TERMINATION: "reencrypt"
## CERTIFICADOS
CERTIFICATE_SECRET_NAME: "openshift-tls"
CERTIFICATE_MOUNT_PATH: "/var/run/secrets/service-cert"
## ROTAS EXTRAS
ROUTER_HOSTNAME_DEVELOPMENT: ""
ROUTER_HOSTNAME_STAGING: >
"rotaexternaqa.exemplo"
ROUTER_HOSTNAME_PRODUCTION: >
"rotaexternaproducao.exemplo"
## VARIAVEIS DE AMBIENTE DEPLOY
DEPLOY_ENVIRONMENT: >
"TZ=America/Porto_Velho"
Trecho Include
Este trecho referencia os arquivos de configuração da esteira de automação. Por padrão é incluído o arquivo de configuração de deploy junto com arquivo de variáveis necessárias para o funcionamento da esteira.
Trecho Stages
Este trecho especifica quais estágios do arquivo serão utilizados no processo de execução da esteira.
Trecho Variables
Este trecho é responsável por incluir variáveis pertinentes ao projeto para a execução da esteira, sendo customizável para cada projeto.
PROJECT_NAME
Essa variável configura o nome do projeto que será criado no OpenShift, também será utilizada internamente por operações do OpenShift, como por exemplo, para criação de rotas internas.
O valor da variável deve possuir apenas letras minúsculas, sem acento ou espaço.
PROJECT_DISPLAY_NAME
Essa variável será o nome "amigável" do projeto no OpenShift.
É permitido qualquer valor alfanumérico, incluindo espaço, símbolos e acentos.
## DOCKER
DOCKERFILE_PATH: "Dockerfile"
DOCKERFILE_CONTEXT: "/"
## ROTA
ROUTER_PORT: "8080"
ROUTER_PATH: "/"
ROUTER_TERMINATION: "reencrypt"
## CERTIFICADOS
CERTIFICATE_SECRET_NAME: "openshift-tls"
CERTIFICATE_MOUNT_PATH: "/var/run/secrets/service-cert"
## ROTAS EXTRAS
ROUTER_HOSTNAME_DEVELOPMENT: ""
ROUTER_HOSTNAME_STAGING: >
"rotaexternaqa.exemplo"
ROUTER_HOSTNAME_PRODUCTION: >
"rotaexternaproducao.exemplo"
## VARIAVEIS DE AMBIENTE DEPLOY
DEPLOY_ENVIRONMENT: >
"TZ=America/Porto_Velho"