Integrar o PowerShell no Jenkins para Automação Sem Emendas

Se você tem gerenciado servidores Windows por algum tempo, sem dúvida possui muitos scripts do PowerShell para realizar aquelas tarefas mundanas, mas necessárias, que você faz regularmente como redefinir senhas, coletar dados de log ou arquivar arquivos de backup. Você sabia que o PowerShell no Jenkins é uma coisa?

Você pode ter scripts que executa regularmente, talvez até tenha configurado um evento de agendador de tarefas na tentativa de automatizar seus scripts do PowerShell.

Existe um caminho melhor.

Neste artigo, você vai aprender como instalar Jenkins no Windows e executar um simples script do PowerShell. Você aprenderá como instalar o Jenkins, configurar a segurança básica, habilitar o plugin do PowerShell e executar um trabalho para criar um arquivo de texto simples com parâmetros que vamos inserir.

Este artigo é destinado a ser uma introdução básica ao Jenkins. A configuração que você vai aprender não é necessariamente destinada a ambientes de produção.

Pré-requisitos

A maior parte deste artigo será um passo a passo. Se você pretende acompanhar, certifique-se de ter alguns pré-requisitos no lugar.

Os requisitos para rodar o Jenkins são tão mínimos, qualquer computador moderno poderia fazê-lo. Os exemplos neste artigo serão todos baseados no Jenkins rodando em:

  • Windows 10 Enterprise v.1903
  • PowerShell Core v6

Embora o Jenkins possa ser executado em praticamente qualquer plataforma, vou me concentrar no Windows 10 Enterprise para manter as coisas simples.

Instalando o Jenkins

Com os pré-requisitos cuidados, vamos instalar o Jenkins.

A instalação do Jenkins é simples e direta. Acesse https://www.jenkins.io/download/ e baixe a versão de Suporte de Longo Prazo (LTS). Existem duas versões disponíveis, a versão LTS e a versão “Semanal”. A versão “Semanal” é atualizada regularmente e pode ser instável. Para este artigo, estamos usando a versão LTS. Esta é a versão mais estável.

Como você pode ver na captura de tela abaixo, existem várias opções para escolher. Selecione a versão do Windows para iniciar o download.

Installing the Windows package for Jenkins

Depois de baixar o instalador, extraia o arquivo zip e execute o instalador aceitando todas as opções padrão. A instalação é simples.

Após a conclusão da instalação, o Jenkins abrirá um navegador com a página Primeiros Passos. Esta página contém a senha do administrador inicial para desbloquear o Jenkins e continuar com a configuração. Você pode ver abaixo que o Jenkins está me pedindo para ler um arquivo de texto em C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword.

Providing the administrator password for Jenkins

Acesse o arquivo mostrado, abra-o, copie a senha mostrada e use-a como senha de administrador na página Primeiros Passos.

Instalando Plugins

Assim que você fizer login pela primeira vez, o Jenkins concluirá a configuração final e, em seguida, perguntará quais plugins instalar. Existem algumas opções como você pode ver abaixo na captura de tela.

Selecionar Instalar plugins sugeridos instalará o conjunto recomendado de plugins com base nos cenários de uso mais comuns. Estes incluem plugins para provedores de autenticação, interações do GitHub e extensões Java. Selecionar plugin para instalar permite que você instale apenas os necessários de uma lista de todos os plugins disponíveis.

Destaque Instalar plugins sugeridos e clique em OK. Este processo levará alguns minutos para instalar os plugins iniciais, então agora é um bom momento para pegar um café.

Installing plugins in Jenkins

Criando o Usuário Admin

Uma vez que os plugins estão instalados, o próximo passo é criar nosso primeiro usuário. Este primeiro usuário é o administrador do Jenkins e terá permissões globais, muito parecido com o Administrador da Empresa para o Windows Server. Você pode ver abaixo como será a página Criar Primeiro Usuário Admin.

Creating a Jenkins admin user

A partir deste ponto, a interface do Jenkins só é acessível inserindo um nome de usuário e senha válidos.

Configurando o URL do Admin Jenkins

O último passo é configurar o URL para o serviço Jenkins rodar. Este URL é a interface para gerenciar o programa Jenkins e idealmente deve ser configurado para um Nome de Domínio Totalmente Qualificado (FQDN). Configurá-lo para um FQDN permitirá acesso remoto, assim como um site. Para este artigo e para simplificar, aceite o URL padrão.

The Jenkins URL

Configurando a Segurança

Com a instalação completa, vamos configurar a autenticação. Navegue até o painel principal se ainda não estiver aberto. No painel principal, clique em Gerenciar Jenkins e depois em Configurar Segurança Global para abrir as configurações de segurança como mostrado abaixo.

Setting Global Security options

Na página Configurar Segurança Global, você verá algumas opções para escolher. Para este artigo, vamos usar o próprio banco de dados de usuários do Jenkins para manter as coisas simples. Também é uma boa ideia desmarcar a opção Permitir que o usuário se inscreva, como mostrado abaixo. Deixá-lo marcado permitirá que qualquer usuário crie uma conta e se dê acesso ao Jenkins. .

Olhando para a captura de tela abaixo, há outras opções para autenticação.

  • Delegar para o contêiner de servlet – Isso é usado se você já tiver contêineres Docker configurados com o Jenkins e permite autenticação por meio do contêiner.
  • LDAP – Esta opção é usada quando você já tem o Active Directory que deseja usar para autenticação.

Em seguida, escolha a opção Usuários logados podem fazer qualquer coisa. Neste modo, todo usuário logado terá controle total sobre o Jenkins. Isso pode não ser uma boa ideia para produção, pois permite que qualquer usuário faça alterações nas configurações.

Configuring global security

Habilitando o plugin PowerShell no Jenkins

Com a configuração básica de segurança, é hora de configurar o plugin PowerShell no Jenkins. Para instalar o plugin PowerShell, navegue até o painel principal, clique em Gerenciar Jenkins e depois em Gerenciar Plugins como mostrado abaixo.

Installing the PowerShell plugin

Existem centenas de plug-ins, então a melhor maneira de encontrar o plugin do PowerShell é procurá-lo. Na barra de filtro, digite “PowerShell” e selecione-o na lista. Marque a caixa, conforme mostrado abaixo, para ativá-lo. Isso permitirá que o Jenkins escreva diretamente comandos e scripts do PowerShell nas caixas de texto dentro do Jenkins e permitirá que o Jenkins invoque o PowerShell sem precisar iniciar um console separado do PowerShell.

Você pode ver abaixo como isso pode parecer.

Finding the PowerShell plugin

Com o plugin ativado, o Jenkins está pronto para executar trabalhos do PowerShell.

Criando um trabalho do PowerShell no Jenkins

A instalação do plugin do PowerShell no Jenkins está completa. Aqui vem a parte divertida. Vamos criar um trabalho.

No Jenkins, um trabalho é definido como uma série de tarefas a serem concluídas. Um cenário comum é um trabalho que iniciará a compilação de um programa quando um desenvolvedor faz check-in do código. Muito semelhante ao Gerenciador de Tarefas no servidor Windows.

O trabalho que vamos configurar será para verificar o diretório c:\temp e inserir um arquivo de texto nesse diretório com uma mensagem personalizada.

O Jenkins possui diferentes tipos de projetos, às vezes chamados de Pipelines, que se concentram em objetivos específicos. Os diferentes tipos de projetos terão configurações, opções e parâmetros diferentes, dependendo do tipo de projeto que você escolher. Você pode encontrar mais informações sobre os tipos de projetos e quando usá-los no site do Jenkins.

A partir do painel principal, clique em Novo item. Para o nome do trabalho, insira criando um arquivo de texto. Isso é arbitrário, mas é uma boa ideia rotulá-lo com algo que faça sentido.

Para este artigo, vamos usar o projeto Projeto Freestyle. Isso oferece a maior flexibilidade para criar nosso trabalho. Destaque o Projeto Freestyle e role até o final e clique em OK.

Creating a Jenkins project

Este trabalho será um projeto parametrizado. Isso significa que podemos solicitar aos usuários uma entrada e essa entrada será passada para o trabalho. Por exemplo, digamos que tenhamos um trabalho PowerShell no Jenkins que copie arquivos de log para um diretório específico. Podemos adicionar uma solicitação ao trabalho que perguntará o nome do arquivo a ser incluído na compilação quando executarmos o trabalho.

Marque o item Este projeto é parametrizado na lista suspensa. Clique na lista suspensa Adicionar parâmetro e escolha Parâmetro de String. O parâmetro de string é onde você insere a mensagem que deseja incluir no arquivo de texto.

Creating a parameterized Jenkins job

Em seguida, adicione um segundo Parâmetro de Escolha. Deve ficar semelhante à captura de tela abaixo. Esta opção permitirá que o usuário selecione um item na lista suspensa.

Adding parameters to the project

As configurações do trabalho devem agora se parecer com a captura de tela abaixo.

Final job

Desça até a seção Construir. Clique na seta pequena e selecione o Windows PowerShell. Isso informa ao Jenkins que estamos executando um script do PowerShell. Aqui também é onde inserimos o script do PowerShell. Este trabalho está pronto agora. Clique em Salvar.

Windows PowerShell option

Para um script de amostra para nosso trabalho do PowerShell no Jenkins, vamos criar um arquivo no diretório temporário e adicionar uma mensagem simples.

Este é um script simples que criará um diretório temporário sob o diretório raiz, se ainda não existir, e criará um arquivo de texto nesse diretório.

# Criar Diretório Temporário
if (-not(Test-Path -Path 'C:\temp'))
{
    New-Item -Path 'C:\temp' -ItemType directory
}

# Usando as variáveis de ambiente expostas pelo trabalho do Jenkins 
Set-Content -Path "C:\temp\$($env:Filename).txt" -Value $env:Message

DICA: Escreva seu script no VSCode ou outro editor primeiro e depois cole na caixa.

Executando o PowerShell no Trabalho do Jenkins

Finalmente, você está pronto para executar seu primeiro trabalho. Volte ao painel principal e verá o trabalho Criar Arquivo de Texto listado no painel principal. Veja abaixo.

Our new Jenkins job

Clique no ícone do relógio à direita e abra o formulário do trabalho.

Setting parameters on Jenkins job

Na caixa de mensagem, insira o texto que deseja inserir no arquivo de texto e clique em Construir. Assim que a construção estiver concluída, clique na saída do console. A saída do console mostra o status do trabalho e se a execução do trabalho foi bem-sucedida.

Console output from job

Agora, tudo o que resta fazer é abrir o gerenciador de arquivos e verificar o arquivo. Vá para o diretório temporário e abra o arquivo de texto. Ele terá o mesmo texto que você inseriu na caixa de mensagem de construção.

Final outcome of Jenkins job

Resumo

Você agora tem uma compreensão básica do PowerShell no Jenkins. É uma ferramenta poderosa que pode ser usada para gerenciar seus scripts do PowerShell e automatizar todas as coisas!

Source:
https://adamtheautomator.com/jenkins-powershell/