139 lines
3.4 KiB
Markdown
139 lines
3.4 KiB
Markdown
---
|
|
tags:
|
|
- Definition
|
|
---
|
|
# Jenkins HowTo
|
|
|
|
## Jenkinks mit Docker Agent bereitstellen
|
|
|
|
[[Odoo Build]] Projekt auschecken.
|
|
|
|
Jenkins starten.
|
|
|
|
```bash
|
|
task start cd
|
|
```
|
|
|
|
Einloggen 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:
|
|
|
|
```groovy
|
|
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:
|
|
|
|
```groovy
|
|
pipeline {
|
|
agent any
|
|
stages {
|
|
stage('Checkout') {
|
|
steps {
|
|
checkout scmGit(
|
|
branches: [[name: 'main']],
|
|
userRemoteConfigs: [[
|
|
credentialsId: 'jenkins-ssh-credentials',
|
|
url: 'https://github.com/sozialinfo/odoo-cd'
|
|
]])
|
|
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.
|
|
|
|
```groovy
|
|
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. |