Introduction
A Jenkinsfile is a text file using Groovy syntax, which is very similar to Java and JavaScript.
https://www.jenkins.io/doc/book/pipeline/syntax/
https://www.jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline
There are Two Possible Styles for Writing a Jenkinsfile:
Declarative Pipeline
Pipelines that start with a pipeline directive and define declarative scripts using a special-purpose domain-specific language (DSL) that is a subset of Groovy.
pipeline {
/* insert Declarative Pipeline here */
}
Scripted Pipeline
Pipelines that start with a node directive and define imperative scripts using the full Groovy programming language.
node {
stage('Example') {
if (env.BRANCH_NAME == 'master') {
echo 'I only execute on the master branch'
} else {
echo 'I execute elsewhere'
}
}
}
Declarative Pipeline Example
pipeline {
agent any
triggers {
cron('H */4 * * 1-5')
}
stages {
stage('Example Build') {
agent { docker 'maven:3.8.1-adoptopenjdk-11' }
steps {
echo 'Hello, Maven'
sh 'mvn --version'
}
}
stage('Example Test') {
agent { docker 'openjdk:8-jre' }
steps {
echo 'Hello, JDK'
sh 'java -version'
}
}
}
}
The Two Most Common Project Types are:
Pipeline
Runs a pipeline taking as input a single branch from a version control system repository.
Multibranch pipeline
Automatically creates new projects when new branches are detected in a version control system repository. All these projects share the same pipeline definition that must be flexible enough to avoid conflicts between builds in different branches.
Jenkins agent images
Jenkins images are available through the Red Hat Registry:
$ docker pull registry.redhat.io/openshift4/ose-jenkins:<v4.5.0>
$ docker pull registry.redhat.io/openshift4/jenkins-agent-nodejs-10-rhel7:<v4.5.0>
$ docker pull registry.redhat.io/openshift4/jenkins-agent-nodejs-12-rhel7:<v4.5.0>
$ docker pull registry.redhat.io/openshift4/ose-jenkins-agent-maven:<v4.5.0>
$ docker pull registry.redhat.io/openshift4/ose-jenkins-agent-base:<v4.5.0>
Installng Jenkins on OCP
$ oc get templates -A | grep jenkins
openshift jenkins-ephemeral Jenkins service, without persistent storage....
openshift jenkins-ephemeral-monitored Jenkins service, without persistent storage. ...
openshift jenkins-persistent Jenkins service, with persistent storage....
openshift jenkins-persistent-monitored Jenkins service, with persistent storage. ...
$ oc describe -n openshift template jenkins-persistent
$ oc new-project gitops-deploy
$ oc new-app --template jenkins-persistent -p JENKINS_IMAGE_STREAM_TAG=jenkins:v4.8
$ oc adm policy add-cluster-role-to-user self-provisioner -z jenkins -n gitops-deploy
No comments:
Post a Comment