Ir para o conteúdo principal

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

RUNEm curlandamento...

Instalação

Crie um arquivo "gitlab-ci.yml" na raiz do projeto, com a estrutura básica abaixo.

include:
  -fsSL https://gitlab.setic.ro.gov.br/publico/ca-trust/-/raw/master/openshift_ca.crtproject: 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 /usr/local/share/ca-certificates/openshift_ca.crt
RUNda curlesteira -fsSLde https://gitlab.setic.ro.gov.br/publico/ca-trust/-/raw/master/portainer_ca.crtautomaçã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: "/usr/local/share/ca-certificates/portainer_ca.crt"

  ## ROTA
RUN update-ca-certificates 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"