Sign inSign up

antelinfra/jenkins-powershell

By antelinfra

•Updated over 1 year ago

Jenkins integrado con MS Powershell para Linux - jenkins master

Image
Developer tools
0

1.8K

antelinfra/jenkins-powershell repository overview

⁠Jenkins + PowerShell + Modulos para VMware + Ansible - Dockerfile

Basado en la versión de https://github.com/matt9ucci/docker-jenkins-powershell⁠

Para que sea mas facil utilizar scpriting de powershell en Jenkins

Basado en Imagen oficial de Jenkins⁠. Instalación PowerShell⁠ desde los repositorios de Microsoft.

  • Se agregan módulos de VMware PowerCLI, posh-ssh y pswsman para que los ejecuten todos los usuarios
  • Se configura PoowerCLI para que todos los usuarios ignore la confirmación de aceptar certificados
  • Se agrega directorio .ssh para el usuario de jenkins pueda realizar intercambio de claves
  • Se configura git para que no verifique SSL
  • Se agrega modulo para discord
  • Se agrega openssh y default-jdk para conexión con nodos jenkins

⁠Dockerfile

ARG jenkins_tag=latest
FROM jenkins/jenkins:${jenkins_tag}
USER root
# Instala herramientas necesarias, agrega repositorio de Microsoft y limpia
RUN apt-get update \
 && apt-get install -y curl gnupg lsb-release git apt-transport-https default-jdk openssh-server \
 && curl -sSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \
 && echo "deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/repos/microsoft-debian-bookworm-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/microsoft.list \
 && apt-get update \
 && apt-get install -y powershell ansible \
 && rm -rf /var/lib/apt/lists/*
# Clonar scripts de ejemplo de PowerCLI
RUN git clone https://github.com/vmware/PowerCLI-Example-Scripts.git /usr/local/share/powershell/Modules/PowerCLI-Example-Scripts
# Instalar todos los módulos de PowerShell en un solo paso
RUN pwsh -Command "\
    Install-Module -Name VMware.PowerCLI, posh-ssh, pswsman, Dell.Unity, PSDiscord, ImportExcel, vDocumentation -Scope AllUsers -Force -AllowClobber ; \
    Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Scope AllUsers -Confirm:\$false"
# Configurar Git y SSH
RUN git config --global http.sslverify false \
 && mkdir -p /var/jenkins_home/.ssh /var/run/sshd \
 && chown -R 1000:1000 /var/jenkins_home
EXPOSE 22
# Volver al usuario jenkins
USER jenkins

⁠docker-compose.yml

services:
 jenkins:
  image: antelinfra/jenkins-powershell:latest
  hostname: jenkins
  restart: unless-stopped
  privileged: true
  user: jenkins
  networks:
    - jnk_net
  ports:
    - 8081:8080
    - 2222:22
  container_name: jenkins
  environment:
    - http_proxy=${HTTP_PROXY}
    - https_proxy=${HTTP_PROXY}
    - ftp_proxy=${HTTP_PROXY}
    - no_proxy=${NO_HTTP_PROXY}
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - /etc/timezone:/etc/timezone:ro 
    - ${JENKINS_HOME}:/var/jenkins_home
    - ${JENKINS_HOME}/.ssh:/var/jenkins_home/.ssh:rw
    - ${JENKINS_HOME}/certs:/certs/client
    - ${JENKINS_HOME}/var/run/docker.sock:/var/run/docker.sock
    - ${JENKINS_HOME}/usr/local/bin/docker:/usr/local/bin/docker
    
networks:
 jnk_net:
   driver: bridge
  • Desde el HOST se debe dar permisos al usuario jenkins, para ello se ejecuta el siguiente comando sustituyendo la variable ${JENKINS_HOME} por el directorio home de jenkins colocado host:
sudo chown -R 1000:1000 ${JENKINS_HOME}

⁠Uso

⁠Construcción

Latest

docker build --tag jenkins-powershell:latest .

Con versiones especificas

docker build --tag jenkins-powershell:2.73.2 --build-arg jenkins_tag=2.73.2 .
⁠Correr contenedor

Latest efimera

docker run -d -p 8080:8080 -p 50000:50000 --rm antelinfra/jenkins-powershell:latest

Latest con volumenes

docker run -d -p 8081:8080 -p 50000:50000 --name jenkins-ps -v jenkins_home:/var/jenkins_home antelinfra/jenkins-powershell:latest

Jenkins version

docker run --rm antelinfra/jenkins-powershell:latest --version
⁠Tomar ventaja de las caracteristicas de la imagen base

Todas las caracteristicas disponibles en la imagen oficial de Jenkinsi estan disponibles en esta imagen

El siguiente ejemplo corre la la ultima version de contenedor latest efimera pasando JAVA_OPTS para no ejecutar la configuración de inicio:

docker run -d -p 8080:8080 -p 50000:50000 --rm --env JAVA_OPTS=-Djenkins.install.runSetupWizard=false antelinfra/jenkins-powershell:latest

Para mas información, ver la siguiente documentación:

Tag summary

Content type

Image

Digest

sha256:e7d6f8c83…

Size

900.6 MB

Last updated

over 1 year ago

docker pull antelinfra/jenkins-powershell