Jenkins Handbuch
Jenkinks mit Docker Agent bereitstellen
Odoo Build Projekt auschecken.
Jenkins starten.
task start cdEinloggen und Plugins docker und Docker Pipeline via /manage installieren.
Via /manage eine Cloud docker mit Option Docker hinzufügen. Als Docker Host URI tcp://dind:2375 verwenden und die Optionen Enabled und Expose DOCKER_HOST aktivieren.
Anschliessend ein Docker Agent template hinzufügen mit Label jenkins-agent, Enabled, Name agent und Docker Image jenkins/agent.
SSH-Schlüssel einrichten
Navigieren Sie nach Dashboard > Jenkins verwalten > Zugangsdaten > System > Globale Zugangsdaten und fügen Sie einen Eintrag hinzu:
ID: jenkins-ssh-credentials
 Username: bot-mintsys
Fügen Sie den Inhalt des privaten Schlüssels hinzu.
Node mit Jenkins bauen
Erstellen neue Pipeline Node mit diesem Script:
pipeline {
    agent {
        docker { image 'node:18.16.0-alpine' }
    }
    stages {
        stage('test') {
            steps {
                sh 'node --version'
            }
        }
        stage('log') {
            steps {
                script {
                    currentBuild.description = """Build url: <a href="${BUILD_URL}">Link</a>"""
                }
            }
        }
    }
}Mit Jetzt bauen den Build-Prozess starten
Git mit Submodules auschecken
Installieren Sie das Plugin SSH Agent.
Erstellen Sie eine neue Pipeline Git.
Das Repo <git@github.com:sozialinfo/odoo-cd.git> enthält Submodule und wird wie folgt geklont:
pipeline {
	agent any
    stages {
        stage('Checkout') {
	        steps {
		        checkout scmGit(
		            branches: [name: 'main'](/name:--main'.html),
		            userRemoteConfigs: [
		                credentialsId:  'jenkins-ssh-credentials',
		                url: 'https://github.com/sozialinfo/odoo-cd'
		            ](/-credentialsid:--jenkins-ssh-credentials',-url:-'https://github.com/sozialinfo/odoo-cd'-.html))
				sshagent(credentials: ['jenkins-ssh-credentials']) {
			      sh '''
                      [ -d ~/.ssh ] || mkdir ~/.ssh && chmod 0700 ~/.ssh
                      ssh-keyscan -t rsa,dsa github.com >> ~/.ssh/known_hosts
                      git submodule update --init
                  '''
				}
		    }
	    }
	}
	post {
        always {
            archiveArtifacts artifacts: '**/*'
        }
    }
}Odoo mit Jenkins bauen
Die Artefakte aus > Git mit Submodules auschecken werden kopiert und auf einem Image bereitgestellt.
def withDockerNetwork(Closure inner) {
    try {
        networkId = UUID.randomUUID().toString()
        sh "docker network create ${networkId}"
        inner.call(networkId)
    } finally {
        sh "docker network rm ${networkId}"
    }
}
node {
    withDockerNetwork{ n ->
	   docker.image('postgres:12').withRun("--network ${n} --name db -e POSTGRESQL_PASSWORD=postgres") { c->
	      docker.image('odoo:16').inside("--network ${n}") {
	         // do something with host "sidecar"
	         echo "Odoo"
	      }
	   }
	}
}Source: https://issues.jenkins.io/browse/JENKINS-49567
Auth OIDC konfigurieren
https://www.epiclabs.io/configure-jenkins-azure-authentication-connect/
User name field name: preferred_username
Full name field name: name
Email field name: email
GitHub Webhook einrichten
Neuer Eintrag unter https://github.com/ORG/REPO/settings/hooks mit Url https://jenkins.example.com/github-webhook/ erstellen.
