How to Jenkins seed files
Jenkins seed
1
2
sudo nerdctl run --name jenkins -p 8080:8080 -v $PWD/initial.xml:/var/jenkins_home/jobs/seed/config.xml -v $PWD/controller-configuration-jobDSL-orig.yaml:/var/jenkins.yaml -d --env JENKINS_ADMIN_PASSWORD=password jenkins:jobdsl-blog-2
Basic Seed job that creates a definitions for other jobs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
pipelineJob("${SEED_PROJECT}-${SEED_BRANCH}-tf-enterprise") {
description "Terraform enterprise the ${BRANCH} branch."
// because stash notifier will not work
triggers {
scm('')
}
logRotator {
numToKeep(5)
artifactNumToKeep(1)
}
definition {
cpsScm {
scm {
git{
remote {
url("${PROJECT_SCM_URL}")
credentials("BITBUCKET_SSH_KEY_SECURITY")
}
branches("${BRANCH}")
extensions { }
}
scriptPath('Jenkinsfile-tfe')
}
}
}
}
pipelineJob("${SEED_PROJECT}-${SEED_BRANCH}-builddeploy") {
description "Building and deploying the ${BRANCH} branch."
// because stash notifier will not work
triggers {
scm('')
}
logRotator {
numToKeep(5)
artifactNumToKeep(1)
}
definition {
cpsScm {
scm {
git{
remote {
url("${PROJECT_SCM_URL}")
credentials("BITBUCKET_SSH_KEY_SECURITY")
}
branches("${BRANCH}")
extensions { }
}
scriptPath('Jenkinsfile')
}
}
}
}
An example of Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
pipeline {
agent any
stages {
stage('Terraform init') {
steps {
withCredentials([string(credentialsId: 'ARM_CLIENT_ID', variable: 'ARM_CLIENT_ID'), string(credentialsId: 'ARM_CLIENT_SECRET', variable: 'ARM_CLIENT_SECRET'), string(credentialsId: 'ARM_TENANT_ID', variable: 'ARM_TENANT_ID'), string(credentialsId: 'ARM_SUBSCRIPTION_ID', variable: 'ARM_SUBSCRIPTION_ID'), ]) {
sh '''
set +x
echo $ARM_SUBSCRIPTION_ID
export ARM_SUBSCRIPTION_ID=$ARM_SUBSCRIPTION_ID
export ARM_TENANT_ID=$ARM_TENANT_ID
export ARM_CLIENT_ID=$ARM_CLIENT_ID
export ARM_CLIENT_SECRET=$ARM_CLIENT_SECRET
cd terraform
terraform init
'''
}
}
}
stage('Terraform validate') {
steps {
withCredentials([string(credentialsId: 'ARM_CLIENT_ID', variable: 'ARM_CLIENT_ID'), string(credentialsId: 'ARM_CLIENT_SECRET', variable: 'ARM_CLIENT_SECRET'), string(credentialsId: 'ARM_TENANT_ID', variable: 'ARM_TENANT_ID'), string(credentialsId: 'ARM_SUBSCRIPTION_ID', variable: 'ARM_SUBSCRIPTION_ID'), ]) {
sh '''
set +x
echo $ARM_SUBSCRIPTION_ID
export ARM_SUBSCRIPTION_ID=$ARM_SUBSCRIPTION_ID
export ARM_TENANT_ID=$ARM_TENANT_ID
export ARM_CLIENT_ID=$ARM_CLIENT_ID
export ARM_CLIENT_SECRET=$ARM_CLIENT_SECRET
cd terraform
terraform validate
'''
}
}
}
stage('Terraform plan') {
steps {
withCredentials([string(credentialsId: 'ARM_CLIENT_ID', variable: 'ARM_CLIENT_ID'), string(credentialsId: 'ARM_CLIENT_SECRET', variable: 'ARM_CLIENT_SECRET'), string(credentialsId: 'ARM_TENANT_ID', variable: 'ARM_TENANT_ID'), string(credentialsId: 'ARM_SUBSCRIPTION_ID', variable: 'ARM_SUBSCRIPTION_ID'), ]) {
sh '''
set +x
echo $ARM_SUBSCRIPTION_ID
export ARM_SUBSCRIPTION_ID=$ARM_SUBSCRIPTION_ID
export ARM_TENANT_ID=$ARM_TENANT_ID
export ARM_CLIENT_ID=$ARM_CLIENT_ID
export ARM_CLIENT_SECRET=$ARM_CLIENT_SECRET
cd terraform
terraform plan
'''
}
}
}
stage('Approval to proceed with terraform apply') {
input { message "Terraform has been initialized! When hitting proceed terraform will run code in Cloud!!!"}
steps {
echo "Terraform has been initialized and planned!"
}
}
stage('Terraform apply') {
steps {
withCredentials([string(credentialsId: 'ARM_CLIENT_ID', variable: 'ARM_CLIENT_ID'), string(credentialsId: 'ARM_CLIENT_SECRET', variable: 'ARM_CLIENT_SECRET'), string(credentialsId: 'ARM_TENANT_ID', variable: 'ARM_TENANT_ID'), string(credentialsId: 'ARM_SUBSCRIPTION_ID', variable: 'ARM_SUBSCRIPTION_ID'), ]) {
sh '''
set +x
echo $ARM_SUBSCRIPTION_ID
export ARM_SUBSCRIPTION_ID=$ARM_SUBSCRIPTION_ID
export ARM_TENANT_ID=$ARM_TENANT_ID
export ARM_CLIENT_ID=$ARM_CLIENT_ID
export ARM_CLIENT_SECRET=$ARM_CLIENT_SECRET
cd terraform
terraform apply -auto-approve -var-file terraform.tfvars
'''
}
}
}
}
}
This post is licensed under CC BY 4.0 by the author.
