Início
Versões
Imagens
Inicializando Jenkins
Variáveis de ambiente
Pontos de montagem de volume
Criando um serviço Jenkins a partir de um template
Usando o Jenkins como um Source-To-Image builder
Usando o plugin do Jenkins Kubernetes para rodar jobs
Tutorial
OpenShift Pipeline Plugin
Início
O OpenShift fornece uma imagem Docker para rodar Jenkins. Esta imagem provê um servidor Jenkins que pode ser usado para configurar um basic flow para continuous testing, integration e delivery.
Esta imagem também fornece um job Jenkins com triggers que fazem um novo build do buildConfig definido no OpenShift, testa a saída do build e se o build teve sucesso, faz um tag para mostrar que o build está pronto para produção.
Versões
A versão atual que o OpenShift fornece do Jenkins é 1.609.
Imagens
Estas imagens estão disponíveis na distribuição CentOS 7:
Imagens baseadas em CentOS 7
Esta imagem está disponível no DockerHub. Para fazer download:
$ docker pull openshift/jenkins-1-centos7
Para usar essa imagem, você pode acessa-las diretamente através desse registro de imagens, ou enviar para seu registro OpenShift Docker. Adicionalmente, você pode criar uma image stream que aponte para a imagem, no seu registro Docker ou numa localização externa. Os recursos do seu OpenShift podem agora fazer referencia ao ImageStream. Você pode encontrar exemplo de definições de image streams para todas as imagens do OpenShift.
Inicializando Jenkins
A primeira vez que você inicia o Jenkins, a configuração é criada em seguida ao inserir as credenciais de administrador. O login default é admin/password. A senha default pode ser configurada ao setar a variável JENKINS_PASSWORD.
O seguinte comando cria uma novo pod do Jenkins com o Jenkins rodando no container:
$ oc new-app -e JENKINS_PASSWORD=<password> openshift/jenkins-1-centos7
Variáveis de ambiente
A senha do Jenkins pode ser configura com a seguinte variável de ambiente:
Tabela 1. Variáveis de ambiente do Jenkins
Nome da Variável | Descrição |
JENKINS_PASSWORD | Senha do usuário admin. |
Pontos de montagem de volume
A imagem do Jenkins pode ser executada com volumes, para habilitar um storage persistent para a configuração:
- /var/lib/jenkins - Este é o diretório de dados onde o Jenkins armazena os arquivos de configuração, incluindo a definição dos jobs.
Criando um serviço Jenkins a partir de um template
Templates contem campos para definir todas as variáveis de ambiente com valores previamente definidos. O OpenShift fornece templates que fazem a criação de um novo serviço do Jenkins uma tarefa fácil. Os templates do Jenkins devem ter sido registrados previamente no seu projeto openshift default, pelo administrador do cluster durante a configuração inicial. Veja o artigo Loading the Default Image Streams and Templates para mais detalhes.
Usando o Jenkins como um Source-To-Image builder
Para customizar a imagem default do Jenkins do OpenShift, você tem duas opções:
- Usar Docker layering.
- Usar a imagem como Source-To-Image builder, como vai ser descrito a seguir.
Você pode usar S2I para copiar suas definições de jobs do Jenkins, plugins adicionais ou sobrescrever o arquivo config.xml com sua própria configuração.
Para incluir suas modificações na imagem do Jenkins, você precisa ter um repositório Git com a seguinte estrutura:
plugins
Este diretório contem os binários dos plugins do Jenkins que você quer copiar para o Jenkins.
plugins.txt
Este arquivo lista os plugins que você quer que sejam instalados(veja acima).
configuration/jobs
Este diretório contem as definições de job do Jenkins.
configuration/config.xml
Este arquivo contem sua configuração do Jenkins.
O conteúdo do diretório configuration/ vai ser copiado dentro do diretório /var/lib/jenkins/ assim você pode incluir arquivos adicionais, como credentials.xml.
A seguir um exemplo de um build config que customiza a imagem do Jenkins no OpenShift.
apiVersion: v1
kind: BuildConfig
metadata:
name: custom-jenkins-build
spec:
source:
git:
uri: git://github.com/custom/repository.git
type: Git
strategy:
sourceStrategy:
from:
kind: ImageStreamTag
name: jenkins:latest
namespace: openshift
type: Source
output:
to:
kind: ImageStreamTag
name: custom-jenkins:latest
O campo source define o repositório Gir com o layout descrito acima.
O campo strategy define a imagem Jenkins original a ser utilizada para o build.
O campo output define o resultado, imagens customizada do Jenkins que você pode usar em um deployment config em vez da imagem oficial do Jenkins.
Usando o plugin do Jenkins Kubernetes para rodar jobs
A imagem oficial do Jenkins inclui pré-instalado o plug-in do Kubernetes que permite ao Jenkins secundário ser dinamicamente provisionado em múltiplos hosts Docker usando Kubernetes e OpenShift.
A imagem do Jenkins também fornece auto-discovery e auto-configuration do plug-in Kubernetes ao fazer um scan o projeto Jenkins realiza o deploy para image streams com o label role setado para jenkins-slave.
Quando uma image stream com este label é encontrado, o entrypoint gera a configuração do plug-in do Kubernetes, assim você pode atribuir ao seus jobs do Jenkins para rodar em um pod executando uma imagem Docker fornecida pelo image stream.
Para usar a imagem Docker como um Jenkins secundário, a imagem deve rodar o slave agent como um entrypoint. Para mais detalhes sobre isso, veja a documentação do Jenkins.
Você também pode usar um template fornecido pelo OpenShift para converter um image stream existente em um Jenkins secundário.
Tutorial
Para mais detalhes no job de exemplo incluído nessa imagem, veja esse tutorial.
OpenShift Pipeline Plugin
A lista do Jenkins de plugins pré-instalados, inclui um plugin que auxilia na criação do CI/CD workflow que é executado no servidor OpenShift. Uma série de etapas a ser executadas pelo build, ações post-build como a escolha do SCM-style são fornecidas, que equivalem a ações administrativas e operacionais no servidor OpenShift e os artifacts que são hospedados no servidor.
O exemplo de job no Jenkins que é pré-configurado na imagem do Jenkins, utiliza o OpenShift Pipeline plugin e serve como exemplo de como aproveitar o plugin para criação do CI/CD flows para o Jenkins no OpenShift.
Veja a página do README do plugin para mais detalhes do que esta disponível.
Comentários
0 comentário
Por favor, entre para comentar.