Как автоматизировать установку Maven и Java JDK8 с помощью Groovy для Jenkins? - PullRequest
8 голосов
/ 26 марта 2019

Я создаю образ Jenkins Docker, и я хотел бы автоматизировать установку Maven 3 и Java 8 последней JDK.Но, к сожалению, я использую эти два файла groovy, которые находятся в папке groovy:

groovy / java.groovy :

import jenkins.model.*
import hudson.model.*
import hudson.tools.*

def inst = Jenkins.getInstance()

def desc = inst.getDescriptor("hudson.model.JDK")

def versions = [ "jdk8": "jdk-8u202"]
def installations = [];

for (v in versions) {
  def installer = new JDKInstaller(v.value, true)
  def installerProps = new InstallSourceProperty([installer])
  def installation = new JDK(v.key, "", [installerProps])
  installations.push(installation)
}

desc.setInstallations(installations.toArray(new JDK[0]))

desc.save()

groovy / maven.groovy :

import jenkins.*;
import jenkins.model.*;
import hudson.*;
import hudson.model.*;

mavenName = "maven3"
mavenVersion = "3.6.0"
println("Checking Maven installations...")

// Grab the Maven "task" (which is the plugin handle).
mavenPlugin = Jenkins.instance.getExtensionList(hudson.tasks.Maven.DescriptorImpl.class)[0]

// Check for a matching installation.
maven3Install = mavenPlugin.installations.find {
   install -> install.name.equals(mavenName)
}

// If no match was found, add an installation.
if(maven3Install == null) {
   println("No Maven install found. Adding...")

   newMavenInstall = new hudson.tasks.Maven.MavenInstallation('maven3', null,
    [new hudson.tools.InstallSourceProperty([new hudson.tasks.Maven.MavenInstaller(mavenVersion)])]
)

   mavenPlugin.installations += newMavenInstall
   mavenPlugin.save()

   println("Maven install added.")
} else {
   println("Maven install found. Done.")
}

и затем я запускаю команду:

docker run -p 8080:8080 -v `pwd`/groovy:/var/jenkins_home/jobs --rm --name jenkinsdocker jenkinsdocker:latest

К сожалению, это возвращает ошибку:

java.io.IOException: jenkins.model.InvalidBuildsDir: ${ITEM_ROOTDIR}/builds does not exist and probably cannot be created

Мне просто интересно, еслиgroovy файлы неправильные или если я что-то пропустил?

Как я могу автоматизировать установку maven / java для Jenkins при запуске docker run ?Или есть другой способ сделать это?

1 Ответ

1 голос
/ 31 марта 2019

Я не нашел изображение jenkinsdocker, поэтому я думаю, что это какое-то изображение докера, которое вы сгенерировали из jenkins. В любом случае, следуя этой документации jenkinsdocker , вы должны поместить свои скрипты groovy в папку init.groovy.d, которая будет выполняться при инициализации. Поэтому вам нужно запустить docker, модифицируя jobs на init.groovy.d и использовать jenkins:latest образ:

     docker run -p 8080:8080 -v `pwd`/groovy:/var/jenkins_home/init.groovy.d/ --rm --name jenkins jenkins:latest

Вы также можете создать свой собственный Dockerfile (например, вы можете использовать версию 2.60.3), как в примере выше:

# Extended from https://github.com/jenkinsci/docker/blob/master/README.md
FROM jenkins/jenkins:2.60.3

# Skip setup wizard
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"

# Add groovy script to Jenkins hook
COPY --chown=jenkins:jenkins groovy/ /var/jenkins_home/init.groovy.d/

Сборка и запуск контейнера:

docker build jenkinsdocker -t .
docker run -p 8080:8080 --name jenkinsdocker jenkinsdocker:latest
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...