Deploy Jenkins
@@ -844,8 +846,6 @@
-
-
Configuration
diff --git a/docs/docs/getting-started/latest/index.xml b/docs/docs/getting-started/latest/index.xml
index df8de64a..0b4fccb1 100644
--- a/docs/docs/getting-started/latest/index.xml
+++ b/docs/docs/getting-started/latest/index.xml
@@ -240,7 +240,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p>
<pre><code>apiVersion: v1
kind: Secret
@@ -403,14 +403,17 @@ stringData:
Plugin’s configuration is applied as groovy scripts or the <a href="https://github.com/jenkinsci/configuration-as-code-plugin">configuration as code plugin</a>.
Any plugin working for Jenkins can be installed by the Jenkins Operator.</p>
-<p>Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
-* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
-* workflow-aggregator v2.6
-* workflow-job v2.40</p>
+<p>Pre-installed plugins:</p>
+
+<ul>
+<li>configuration-as-code v1.51</li>
+<li>git v4.7.2</li>
+<li>job-dsl v1.77</li>
+<li>kubernetes-credentials-provider v0.18-1</li>
+<li>kubernetes v1.30.0</li>
+<li>workflow-aggregator v2.6</li>
+<li>workflow-job v2.41</li>
+</ul>
<p>Rest of the plugins can be found in <a href="https://plugins.jenkins.io/">plugins repository</a>.</p>
@@ -435,19 +438,19 @@ Any plugin working for Jenkins can be installed by the Jenkins Operator.</p&g
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>basePlugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.28.6"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.30.0"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.40"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.6"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.5.0"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.7.2"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.77"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.46"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.51"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.15"</span></code></pre></div>
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.18-1"</span></code></pre></div>
<p>You can change their versions.</p>
<p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restart.</p>
@@ -576,6 +579,12 @@ The secrets are loaded to <code>secrets</code> map.</p>
+<blockquote>
+<p>Because of Jenkins Operator’s architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+up. Therefore, the backup script makes a copy of jobs history only.</p>
+</blockquote>
+
<p>Backup and restore is done by a container sidecar.</p>
<h3 id="pvc">PVC</h3>
@@ -638,7 +647,7 @@ The secrets are loaded to <code>secrets</code> map.</p>
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make a backup before pod deletion</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
@@ -1670,7 +1679,12 @@ Values defined by an Env with a duplicate key will take precedence.</p>
</td>
<td>
<em>(Optional)</em>
-<p>Pod volumes to mount into the container’s filesystem.</p>
+<p>
+Pod volumes to mount into the container’s filesystem. More info:
+<a href="https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts">
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+</a>
+</p>
</td>
</tr>
<tr>
diff --git a/docs/docs/getting-started/latest/schema/index.html b/docs/docs/getting-started/latest/schema/index.html
index 59ee07c2..f31e941d 100644
--- a/docs/docs/getting-started/latest/schema/index.html
+++ b/docs/docs/getting-started/latest/schema/index.html
@@ -32,7 +32,7 @@
">
-
+
@@ -1471,7 +1471,12 @@ Values defined by an Env with a duplicate key will take precedence.
(Optional)
-Pod volumes to mount into the container’s filesystem.
+
+Pod volumes to mount into the container’s filesystem. More info:
+
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+
+
diff --git a/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
index 887b5332..e502cde5 100644
--- a/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
@@ -903,7 +903,7 @@
getLatestAction:
exec:
command:
- - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data
+ - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data
#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored
diff --git a/docs/docs/getting-started/v0.5.x/index.html b/docs/docs/getting-started/v0.5.x/index.html
index 1d17315c..bed9ab63 100644
--- a/docs/docs/getting-started/v0.5.x/index.html
+++ b/docs/docs/getting-started/v0.5.x/index.html
@@ -824,6 +824,8 @@
+
+
Deploy Jenkins
@@ -846,8 +848,6 @@
-
-
Configuration
diff --git a/docs/docs/getting-started/v0.5.x/index.xml b/docs/docs/getting-started/v0.5.x/index.xml
index 1ede18bb..93894a88 100644
--- a/docs/docs/getting-started/v0.5.x/index.xml
+++ b/docs/docs/getting-started/v0.5.x/index.xml
@@ -634,7 +634,7 @@ The secrets are loaded to <code>secrets</code> map.</p>
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
diff --git a/docs/docs/index.html b/docs/docs/index.html
index 001c8b57..c8d69c8e 100644
--- a/docs/docs/index.html
+++ b/docs/docs/index.html
@@ -789,10 +789,6 @@
-
-
-
-
Installation
@@ -832,6 +828,10 @@
+
+
+
+
diff --git a/docs/docs/index.xml b/docs/docs/index.xml
index 6074c840..5f1c71cc 100644
--- a/docs/docs/index.xml
+++ b/docs/docs/index.xml
@@ -651,7 +651,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p>
<pre><code>apiVersion: v1
kind: Secret
@@ -2167,14 +2167,17 @@ stringData:
Plugin’s configuration is applied as groovy scripts or the <a href="https://github.com/jenkinsci/configuration-as-code-plugin">configuration as code plugin</a>.
Any plugin working for Jenkins can be installed by the Jenkins Operator.</p>
-<p>Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
-* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
-* workflow-aggregator v2.6
-* workflow-job v2.40</p>
+<p>Pre-installed plugins:</p>
+
+<ul>
+<li>configuration-as-code v1.51</li>
+<li>git v4.7.2</li>
+<li>job-dsl v1.77</li>
+<li>kubernetes-credentials-provider v0.18-1</li>
+<li>kubernetes v1.30.0</li>
+<li>workflow-aggregator v2.6</li>
+<li>workflow-job v2.41</li>
+</ul>
<p>Rest of the plugins can be found in <a href="https://plugins.jenkins.io/">plugins repository</a>.</p>
@@ -2199,19 +2202,19 @@ Any plugin working for Jenkins can be installed by the Jenkins Operator.</p&g
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>basePlugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.28.6"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.30.0"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.40"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.6"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.5.0"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.7.2"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.77"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.46"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.51"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.15"</span></code></pre></div>
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.18-1"</span></code></pre></div>
<p>You can change their versions.</p>
<p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restart.</p>
@@ -3123,6 +3126,12 @@ spec:
+<blockquote>
+<p>Because of Jenkins Operator’s architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+up. Therefore, the backup script makes a copy of jobs history only.</p>
+</blockquote>
+
<p>Backup and restore is done by a container sidecar.</p>
<h3 id="pvc">PVC</h3>
@@ -3185,7 +3194,7 @@ spec:
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make a backup before pod deletion</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
@@ -3279,7 +3288,7 @@ spec:
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
@@ -6185,7 +6194,12 @@ Values defined by an Env with a duplicate key will take precedence.</p>
</td>
<td>
<em>(Optional)</em>
-<p>Pod volumes to mount into the container’s filesystem.</p>
+<p>
+Pod volumes to mount into the container’s filesystem. More info:
+<a href="https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts">
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+</a>
+</p>
</td>
</tr>
<tr>
diff --git a/docs/docs/installation/index.html b/docs/docs/installation/index.html
index eb637236..728a3edb 100644
--- a/docs/docs/installation/index.html
+++ b/docs/docs/installation/index.html
@@ -26,7 +26,7 @@
" />
-
+
@@ -766,6 +766,8 @@
+
Note on Operator’s nightly built images
+Note on restricted Jenkins controller pod volumeMounts
@@ -808,18 +810,21 @@
This document describes installation procedure for Jenkins Operator.
-All container images can be found at virtuslab/jenkins-operator
+All container images can be found at virtuslab/jenkins-operator Docker Hub repository.
Requirements
-To run Jenkins Operator, you will need:
-- access to a Kubernetes cluster version 1.17+
-- kubectl version 1.17+
+To run Jenkins Operator, you will need:
-Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started
+
+- access to a Kubernetes cluster version
1.17+
+kubectl version 1.17+
+
+
+Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started.
Deploy Jenkins Operator using YAML’s
@@ -1649,6 +1654,32 @@ Example:
+Note on Operator’s nightly built images
+
+If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability.
+
+You can find nightly built images by heading to virtuslab/jenkins-operator Docker Hub repository and looking for images with tag in the form of “{git-hash}”, {git-hash} being the hash of master branch commit that you want to use snapshot of.
+
+Note on restricted Jenkins controller pod volumeMounts
+
+Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users.
+One of the key points of this design is maintaining an immutable state of Jenkins.
+
+One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume
+(jenkins-home) as Jenkins home directory.
+It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory,
+as attempting to do so will result in Operator error.
+
+jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator,
+below is the full list of those volumeMounts:
+
+
+- jenkins-home
+- scripts
+- init-configuration
+- operator-credentials
+
+
@@ -1805,7 +1836,7 @@ Example:
- Last modified October 5, 2020
+ Last modified July 30, 2021
diff --git a/docs/docs/installation/index.xml b/docs/docs/installation/index.xml
index 9bc06edf..37e38d05 100644
--- a/docs/docs/installation/index.xml
+++ b/docs/docs/installation/index.xml
@@ -4,7 +4,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/installation/
Recent Hugo news from gohugo.io
Hugo -- gohugo.io
- Mon, 05 Oct 2020 00:00:00 +0000
+ Fri, 30 Jul 2021 00:00:00 +0000
https://jenkinsci.github.io/kubernetes-operator/img/hugo.png
GoHugo.io
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index efa05ade..b751f91f 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -2,6 +2,11 @@
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/installation/
+ 2021-07-30T00:00:00+00:00
+
+
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/
2021-01-25T00:00:00+00:00
@@ -12,11 +17,6 @@
2021-01-25T00:00:00+00:00
-
- https://jenkinsci.github.io/kubernetes-operator/docs/installation/
- 2020-10-05T00:00:00+00:00
-
-
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.4.x/deploy-jenkins/
2020-04-13T00:00:00+00:00
@@ -369,7 +369,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/
- 2021-06-10T00:00:00+00:00
+ 2021-07-30T00:00:00+00:00
diff --git a/main.go b/main.go
index 936862f1..543edad1 100644
--- a/main.go
+++ b/main.go
@@ -112,11 +112,11 @@ func main() {
logger.Info(fmt.Sprintf("Watch namespace: %v", namespace))
if ValidateSecurityWarnings {
- ispluginsdatainitialized := make(chan bool)
- go v1alpha2.PluginsDataManager.CachePluginData(ispluginsdatainitialized)
+ isInitialized := make(chan bool)
+ go v1alpha2.PluginsMgr.FetchPluginData(isInitialized)
- if !<-ispluginsdatainitialized {
- fatal(errors.New("Unable to get the plugins data"), *debug)
+ if !<-isInitialized {
+ logger.Info("Unable to get the plugins data")
}
}
diff --git a/pkg/configuration/user/seedjobs/seedjobs.go b/pkg/configuration/user/seedjobs/seedjobs.go
index cb9b3725..96d1df75 100644
--- a/pkg/configuration/user/seedjobs/seedjobs.go
+++ b/pkg/configuration/user/seedjobs/seedjobs.go
@@ -80,6 +80,7 @@ import hudson.plugins.git.BranchSpec;
import hudson.plugins.git.GitSCM;
import hudson.plugins.git.SubmoduleConfig;
import hudson.plugins.git.extensions.impl.CloneOption;
+import hudson.plugins.git.extensions.impl.GitLFSPull;
import javaposse.jobdsl.plugin.ExecuteDslScripts;
import javaposse.jobdsl.plugin.LookupStrategy;
import javaposse.jobdsl.plugin.RemovedJobAction;
@@ -93,7 +94,10 @@ def jobDslSeedName = "{{ .ID }}-{{ .SeedJobSuffix }}";
def jobRef = jenkins.getItem(jobDslSeedName)
def repoList = GitSCM.createRepoList("{{ .RepositoryURL }}", "{{ .CredentialID }}")
-def gitExtensions = [new CloneOption(true, true, ";", 10)]
+def gitExtensions = [
+ new CloneOption(true, true, ";", 10),
+ new GitLFSPull()
+]
def scm = new GitSCM(
repoList,
newArrayList(new BranchSpec("{{ .RepositoryBranch }}")),
@@ -438,7 +442,7 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri
Containers: []corev1.Container{
{
Name: "jnlp",
- Image: "jenkins/inbound-agent:alpine",
+ Image: "jenkins/inbound-agent:4.9-1",
Env: []corev1.EnvVar{
{
Name: "JENKINS_TUNNEL",
diff --git a/website/content/en/docs/Developer Guide/_index.md b/website/content/en/docs/Developer Guide/_index.md
index b5c82a7c..2753f3fb 100644
--- a/website/content/en/docs/Developer Guide/_index.md
+++ b/website/content/en/docs/Developer Guide/_index.md
@@ -2,7 +2,7 @@
title: "Developer Guide"
linkTitle: "Developer Guide"
weight: 60
-date: 2021-06-10
+date: 2021-07-30
description: >
Jenkins Operator for developers
---
@@ -211,6 +211,16 @@ seed-job-agent-jenkins-example-758cc7cc5c-82hbl 1/1 Running 0
make run OPERATOR_EXTRA_ARGS="--debug"
```
+### Stop or delete minikube cluster
+To stop Kubernetes cluster running locally on minikube:
+```bash
+minikube stop
+```
+To delete the cluster altogether:
+```bash
+minikube delete
+```
+
## Build and run with a remote Kubernetes cluster
You can also run the controller locally and make it listen to a remote Kubernetes server.
@@ -282,6 +292,18 @@ kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.us
kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.password}' | base64 -d
```
+
+
+
+## Self-learning
+
+* [Tutorial: Deep Dive into the Operator Framework for... Melvin Hillsman, Michael Hrivnak, & Matt Dorn
+](https://www.youtube.com/watch?v=8_DaCcRMp5I)
+
+* [Operator Framework Training By OpenShift](https://www.katacoda.com/openshift/courses/operatorframework)
+
+* [Operator SDK Tutorial for Go](https://sdk.operatorframework.io/docs/building-operators/golang/tutorial/)
+
[dep_tool]:https://golang.github.io/dep/docs/installation.html
[git_tool]:https://git-scm.com/downloads
[go_tool]:https://golang.org/dl/
@@ -293,9 +315,3 @@ kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.pa
[virtualbox]:https://www.virtualbox.org/wiki/Downloads
[install_dev_tools]:https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/
-## Self-learning
-
-* [Tutorial: Deep Dive into the Operator Framework for... Melvin Hillsman, Michael Hrivnak, & Matt Dorn
-](https://www.youtube.com/watch?v=8_DaCcRMp5I)
-
-* [Operator Framework Training By OpenShift](https://www.katacoda.com/openshift/courses/operatorframework)
diff --git a/website/content/en/docs/Getting Started/latest/configuration.md b/website/content/en/docs/Getting Started/latest/configuration.md
index f3c4b8a7..e543e544 100644
--- a/website/content/en/docs/Getting Started/latest/configuration.md
+++ b/website/content/en/docs/Getting Started/latest/configuration.md
@@ -163,7 +163,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git
```
and create a Kubernetes Secret (name of secret should be the same from `credentialID` field):
diff --git a/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md b/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
index d4df095c..fbc5bccc 100644
--- a/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
+++ b/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
@@ -7,6 +7,10 @@ description: >
Prevent loss of job history
---
+> Because of Jenkins Operator's architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+> or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+> up. Therefore, the backup script makes a copy of jobs history only.
+
Backup and restore is done by a container sidecar.
### PVC
@@ -77,7 +81,7 @@ spec:
getLatestAction:
exec:
command:
- - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data
+ - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data
interval: 30 # how often make backup in seconds
makeBackupBeforePodDeletion: true # make a backup before pod deletion
restore:
diff --git a/website/content/en/docs/Getting Started/latest/customization.md b/website/content/en/docs/Getting Started/latest/customization.md
index 76b12e10..167c556f 100644
--- a/website/content/en/docs/Getting Started/latest/customization.md
+++ b/website/content/en/docs/Getting Started/latest/customization.md
@@ -13,13 +13,14 @@ Plugin's configuration is applied as groovy scripts or the [configuration as cod
Any plugin working for Jenkins can be installed by the Jenkins Operator.
Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
+
+* configuration-as-code v1.51
+* git v4.7.2
* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
+* kubernetes-credentials-provider v0.18-1
+* kubernetes v1.30.0
* workflow-aggregator v2.6
-* workflow-job v2.40
+* workflow-job v2.41
Rest of the plugins can be found in [plugins repository](https://plugins.jenkins.io/).
@@ -51,19 +52,19 @@ spec:
master:
basePlugins:
- name: kubernetes
- version: "1.28.6"
+ version: "1.30.0"
- name: workflow-job
version: "2.40"
- name: workflow-aggregator
version: "2.6"
- name: git
- version: "4.5.0"
+ version: "4.7.2"
- name: job-dsl
version: "1.77"
- name: configuration-as-code
- version: "1.46"
+ version: "1.51"
- name: kubernetes-credentials-provider
- version: "0.15"
+ version: "0.18-1"
```
You can change their versions.
diff --git a/website/content/en/docs/Getting Started/latest/schema.md b/website/content/en/docs/Getting Started/latest/schema.md
index 2a1444c7..58638cbd 100644
--- a/website/content/en/docs/Getting Started/latest/schema.md
+++ b/website/content/en/docs/Getting Started/latest/schema.md
@@ -661,7 +661,12 @@ Values defined by an Env with a duplicate key will take precedence.
(Optional)
-Pod volumes to mount into the container’s filesystem.
+
+Pod volumes to mount into the container’s filesystem. More info:
+
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+
+
diff --git a/website/content/en/docs/Getting Started/v0.5.x/configure-backup-and-restore.md b/website/content/en/docs/Getting Started/v0.5.x/configure-backup-and-restore.md
index 08033892..0a079cba 100644
--- a/website/content/en/docs/Getting Started/v0.5.x/configure-backup-and-restore.md
+++ b/website/content/en/docs/Getting Started/v0.5.x/configure-backup-and-restore.md
@@ -85,6 +85,6 @@ spec:
getLatestAction:
exec:
command:
- - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data
+ - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data
#recoveryOnce: # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored
```
diff --git a/website/content/en/docs/Installation/_index.md b/website/content/en/docs/Installation/_index.md
index 6d4d8d27..17b8df64 100644
--- a/website/content/en/docs/Installation/_index.md
+++ b/website/content/en/docs/Installation/_index.md
@@ -2,24 +2,25 @@
title: "Installation"
linkTitle: "Installation"
weight: 1
-date: 2020-10-05
+date: 2021-07-30
description: >
How to install Jenkins Operator
---
{{% pageinfo %}}
This document describes installation procedure for **Jenkins Operator**.
-All container images can be found at [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator)
+All container images can be found at [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator) Docker Hub repository.
{{% /pageinfo %}}
## Requirements
To run **Jenkins Operator**, you will need:
+
- access to a Kubernetes cluster version `1.17+`
- `kubectl` version `1.17+`
-Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to [Getting Started](/kubernetes-operator/docs/installation/)
+Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to [Getting Started](/kubernetes-operator/docs/installation/).
## Deploy Jenkins Operator using YAML's
@@ -877,3 +878,24 @@ Example:
+## Note on Operator's nightly built images
+If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability.
+
+You can find nightly built images by heading to [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator) Docker Hub repository and looking for images with tag in the form of "{git-hash}", {git-hash} being the hash of master branch commit that you want to use snapshot of.
+
+## Note on restricted Jenkins controller pod volumeMounts
+Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users.
+One of the key points of this design is maintaining an immutable state of Jenkins.
+
+One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume
+(jenkins-home) as Jenkins home directory.
+It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory,
+as attempting to do so will result in Operator error.
+
+jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator,
+below is the full list of those volumeMounts:
+
+* jenkins-home
+* scripts
+* init-configuration
+* operator-credentials
\ No newline at end of file
diff --git a/website/package-lock.json b/website/package-lock.json
index 67bfa179..334ea961 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -288,16 +288,16 @@
}
},
"browserslist": {
- "version": "4.16.6",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
- "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
+ "version": "4.16.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
+ "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001219",
+ "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2",
- "electron-to-chromium": "^1.3.723",
+ "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1",
- "node-releases": "^1.1.71"
+ "node-releases": "^1.1.73"
}
},
"cache-base": {
@@ -330,9 +330,9 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001237",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz",
- "integrity": "sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw==",
+ "version": "1.0.30001249",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz",
+ "integrity": "sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw==",
"dev": true
},
"chalk": {
@@ -568,9 +568,9 @@
}
},
"electron-to-chromium": {
- "version": "1.3.752",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz",
- "integrity": "sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A==",
+ "version": "1.3.798",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.798.tgz",
+ "integrity": "sha512-fwsr6oXAORoV9a6Ak2vMCdXfmHIpAGgpOGesulS1cbGgJmrMl3H+GicUyRG3t+z9uHTMrIuMTleFDW+EUFYT3g==",
"dev": true
},
"end-of-stream": {
@@ -925,9 +925,9 @@
}
},
"graceful-fs": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
"dev": true
},
"has-flag": {
@@ -1338,9 +1338,9 @@
"dev": true
},
"nan": {
- "version": "2.14.2",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
- "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
+ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
"dev": true,
"optional": true
},
Configuration
diff --git a/docs/docs/getting-started/latest/index.xml b/docs/docs/getting-started/latest/index.xml
index df8de64a..0b4fccb1 100644
--- a/docs/docs/getting-started/latest/index.xml
+++ b/docs/docs/getting-started/latest/index.xml
@@ -240,7 +240,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p>
<pre><code>apiVersion: v1
kind: Secret
@@ -403,14 +403,17 @@ stringData:
Plugin’s configuration is applied as groovy scripts or the <a href="https://github.com/jenkinsci/configuration-as-code-plugin">configuration as code plugin</a>.
Any plugin working for Jenkins can be installed by the Jenkins Operator.</p>
-<p>Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
-* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
-* workflow-aggregator v2.6
-* workflow-job v2.40</p>
+<p>Pre-installed plugins:</p>
+
+<ul>
+<li>configuration-as-code v1.51</li>
+<li>git v4.7.2</li>
+<li>job-dsl v1.77</li>
+<li>kubernetes-credentials-provider v0.18-1</li>
+<li>kubernetes v1.30.0</li>
+<li>workflow-aggregator v2.6</li>
+<li>workflow-job v2.41</li>
+</ul>
<p>Rest of the plugins can be found in <a href="https://plugins.jenkins.io/">plugins repository</a>.</p>
@@ -435,19 +438,19 @@ Any plugin working for Jenkins can be installed by the Jenkins Operator.</p&g
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>basePlugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.28.6"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.30.0"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.40"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.6"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.5.0"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.7.2"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.77"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.46"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.51"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.15"</span></code></pre></div>
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.18-1"</span></code></pre></div>
<p>You can change their versions.</p>
<p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restart.</p>
@@ -576,6 +579,12 @@ The secrets are loaded to <code>secrets</code> map.</p>
+<blockquote>
+<p>Because of Jenkins Operator’s architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+up. Therefore, the backup script makes a copy of jobs history only.</p>
+</blockquote>
+
<p>Backup and restore is done by a container sidecar.</p>
<h3 id="pvc">PVC</h3>
@@ -638,7 +647,7 @@ The secrets are loaded to <code>secrets</code> map.</p>
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make a backup before pod deletion</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
@@ -1670,7 +1679,12 @@ Values defined by an Env with a duplicate key will take precedence.</p>
</td>
<td>
<em>(Optional)</em>
-<p>Pod volumes to mount into the container’s filesystem.</p>
+<p>
+Pod volumes to mount into the container’s filesystem. More info:
+<a href="https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts">
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+</a>
+</p>
</td>
</tr>
<tr>
diff --git a/docs/docs/getting-started/latest/schema/index.html b/docs/docs/getting-started/latest/schema/index.html
index 59ee07c2..f31e941d 100644
--- a/docs/docs/getting-started/latest/schema/index.html
+++ b/docs/docs/getting-started/latest/schema/index.html
@@ -32,7 +32,7 @@
">
-
+
@@ -1471,7 +1471,12 @@ Values defined by an Env with a duplicate key will take precedence.
(Optional)
-Pod volumes to mount into the container’s filesystem.
+
+Pod volumes to mount into the container’s filesystem. More info:
+
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+
+
diff --git a/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
index 887b5332..e502cde5 100644
--- a/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
@@ -903,7 +903,7 @@
getLatestAction:
exec:
command:
- - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data
+ - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data
#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored
diff --git a/docs/docs/getting-started/v0.5.x/index.html b/docs/docs/getting-started/v0.5.x/index.html
index 1d17315c..bed9ab63 100644
--- a/docs/docs/getting-started/v0.5.x/index.html
+++ b/docs/docs/getting-started/v0.5.x/index.html
@@ -824,6 +824,8 @@
+
+
Deploy Jenkins
@@ -846,8 +848,6 @@
-
-
Configuration
diff --git a/docs/docs/getting-started/v0.5.x/index.xml b/docs/docs/getting-started/v0.5.x/index.xml
index 1ede18bb..93894a88 100644
--- a/docs/docs/getting-started/v0.5.x/index.xml
+++ b/docs/docs/getting-started/v0.5.x/index.xml
@@ -634,7 +634,7 @@ The secrets are loaded to <code>secrets</code> map.</p>
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
diff --git a/docs/docs/index.html b/docs/docs/index.html
index 001c8b57..c8d69c8e 100644
--- a/docs/docs/index.html
+++ b/docs/docs/index.html
@@ -789,10 +789,6 @@
-
-
-
-
Installation
@@ -832,6 +828,10 @@
+
+
+
+
diff --git a/docs/docs/index.xml b/docs/docs/index.xml
index 6074c840..5f1c71cc 100644
--- a/docs/docs/index.xml
+++ b/docs/docs/index.xml
@@ -651,7 +651,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p>
<pre><code>apiVersion: v1
kind: Secret
@@ -2167,14 +2167,17 @@ stringData:
Plugin’s configuration is applied as groovy scripts or the <a href="https://github.com/jenkinsci/configuration-as-code-plugin">configuration as code plugin</a>.
Any plugin working for Jenkins can be installed by the Jenkins Operator.</p>
-<p>Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
-* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
-* workflow-aggregator v2.6
-* workflow-job v2.40</p>
+<p>Pre-installed plugins:</p>
+
+<ul>
+<li>configuration-as-code v1.51</li>
+<li>git v4.7.2</li>
+<li>job-dsl v1.77</li>
+<li>kubernetes-credentials-provider v0.18-1</li>
+<li>kubernetes v1.30.0</li>
+<li>workflow-aggregator v2.6</li>
+<li>workflow-job v2.41</li>
+</ul>
<p>Rest of the plugins can be found in <a href="https://plugins.jenkins.io/">plugins repository</a>.</p>
@@ -2199,19 +2202,19 @@ Any plugin working for Jenkins can be installed by the Jenkins Operator.</p&g
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>basePlugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.28.6"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.30.0"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.40"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.6"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.5.0"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.7.2"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.77"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.46"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.51"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.15"</span></code></pre></div>
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.18-1"</span></code></pre></div>
<p>You can change their versions.</p>
<p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restart.</p>
@@ -3123,6 +3126,12 @@ spec:
+<blockquote>
+<p>Because of Jenkins Operator’s architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+up. Therefore, the backup script makes a copy of jobs history only.</p>
+</blockquote>
+
<p>Backup and restore is done by a container sidecar.</p>
<h3 id="pvc">PVC</h3>
@@ -3185,7 +3194,7 @@ spec:
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make a backup before pod deletion</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
@@ -3279,7 +3288,7 @@ spec:
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
@@ -6185,7 +6194,12 @@ Values defined by an Env with a duplicate key will take precedence.</p>
</td>
<td>
<em>(Optional)</em>
-<p>Pod volumes to mount into the container’s filesystem.</p>
+<p>
+Pod volumes to mount into the container’s filesystem. More info:
+<a href="https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts">
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+</a>
+</p>
</td>
</tr>
<tr>
diff --git a/docs/docs/installation/index.html b/docs/docs/installation/index.html
index eb637236..728a3edb 100644
--- a/docs/docs/installation/index.html
+++ b/docs/docs/installation/index.html
@@ -26,7 +26,7 @@
" />
-
+
@@ -766,6 +766,8 @@
+
Note on Operator’s nightly built images
+Note on restricted Jenkins controller pod volumeMounts
@@ -808,18 +810,21 @@
This document describes installation procedure for Jenkins Operator.
-All container images can be found at virtuslab/jenkins-operator
+All container images can be found at virtuslab/jenkins-operator Docker Hub repository.
Requirements
-To run Jenkins Operator, you will need:
-- access to a Kubernetes cluster version 1.17+
-- kubectl version 1.17+
+To run Jenkins Operator, you will need:
-Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started
+
+- access to a Kubernetes cluster version
1.17+
+kubectl version 1.17+
+
+
+Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started.
Deploy Jenkins Operator using YAML’s
@@ -1649,6 +1654,32 @@ Example:
+Note on Operator’s nightly built images
+
+If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability.
+
+You can find nightly built images by heading to virtuslab/jenkins-operator Docker Hub repository and looking for images with tag in the form of “{git-hash}”, {git-hash} being the hash of master branch commit that you want to use snapshot of.
+
+Note on restricted Jenkins controller pod volumeMounts
+
+Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users.
+One of the key points of this design is maintaining an immutable state of Jenkins.
+
+One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume
+(jenkins-home) as Jenkins home directory.
+It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory,
+as attempting to do so will result in Operator error.
+
+jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator,
+below is the full list of those volumeMounts:
+
+
+- jenkins-home
+- scripts
+- init-configuration
+- operator-credentials
+
+
@@ -1805,7 +1836,7 @@ Example:
- Last modified October 5, 2020
+ Last modified July 30, 2021
diff --git a/docs/docs/installation/index.xml b/docs/docs/installation/index.xml
index 9bc06edf..37e38d05 100644
--- a/docs/docs/installation/index.xml
+++ b/docs/docs/installation/index.xml
@@ -4,7 +4,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/installation/
Recent Hugo news from gohugo.io
Hugo -- gohugo.io
- Mon, 05 Oct 2020 00:00:00 +0000
+ Fri, 30 Jul 2021 00:00:00 +0000
https://jenkinsci.github.io/kubernetes-operator/img/hugo.png
GoHugo.io
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index efa05ade..b751f91f 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -2,6 +2,11 @@
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/installation/
+ 2021-07-30T00:00:00+00:00
+
+
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/
2021-01-25T00:00:00+00:00
@@ -12,11 +17,6 @@
2021-01-25T00:00:00+00:00
-
- https://jenkinsci.github.io/kubernetes-operator/docs/installation/
- 2020-10-05T00:00:00+00:00
-
-
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.4.x/deploy-jenkins/
2020-04-13T00:00:00+00:00
@@ -369,7 +369,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/
- 2021-06-10T00:00:00+00:00
+ 2021-07-30T00:00:00+00:00
diff --git a/main.go b/main.go
index 936862f1..543edad1 100644
--- a/main.go
+++ b/main.go
@@ -112,11 +112,11 @@ func main() {
logger.Info(fmt.Sprintf("Watch namespace: %v", namespace))
if ValidateSecurityWarnings {
- ispluginsdatainitialized := make(chan bool)
- go v1alpha2.PluginsDataManager.CachePluginData(ispluginsdatainitialized)
+ isInitialized := make(chan bool)
+ go v1alpha2.PluginsMgr.FetchPluginData(isInitialized)
- if !<-ispluginsdatainitialized {
- fatal(errors.New("Unable to get the plugins data"), *debug)
+ if !<-isInitialized {
+ logger.Info("Unable to get the plugins data")
}
}
diff --git a/pkg/configuration/user/seedjobs/seedjobs.go b/pkg/configuration/user/seedjobs/seedjobs.go
index cb9b3725..96d1df75 100644
--- a/pkg/configuration/user/seedjobs/seedjobs.go
+++ b/pkg/configuration/user/seedjobs/seedjobs.go
@@ -80,6 +80,7 @@ import hudson.plugins.git.BranchSpec;
import hudson.plugins.git.GitSCM;
import hudson.plugins.git.SubmoduleConfig;
import hudson.plugins.git.extensions.impl.CloneOption;
+import hudson.plugins.git.extensions.impl.GitLFSPull;
import javaposse.jobdsl.plugin.ExecuteDslScripts;
import javaposse.jobdsl.plugin.LookupStrategy;
import javaposse.jobdsl.plugin.RemovedJobAction;
@@ -93,7 +94,10 @@ def jobDslSeedName = "{{ .ID }}-{{ .SeedJobSuffix }}";
def jobRef = jenkins.getItem(jobDslSeedName)
def repoList = GitSCM.createRepoList("{{ .RepositoryURL }}", "{{ .CredentialID }}")
-def gitExtensions = [new CloneOption(true, true, ";", 10)]
+def gitExtensions = [
+ new CloneOption(true, true, ";", 10),
+ new GitLFSPull()
+]
def scm = new GitSCM(
repoList,
newArrayList(new BranchSpec("{{ .RepositoryBranch }}")),
@@ -438,7 +442,7 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri
Containers: []corev1.Container{
{
Name: "jnlp",
- Image: "jenkins/inbound-agent:alpine",
+ Image: "jenkins/inbound-agent:4.9-1",
Env: []corev1.EnvVar{
{
Name: "JENKINS_TUNNEL",
diff --git a/website/content/en/docs/Developer Guide/_index.md b/website/content/en/docs/Developer Guide/_index.md
index b5c82a7c..2753f3fb 100644
--- a/website/content/en/docs/Developer Guide/_index.md
+++ b/website/content/en/docs/Developer Guide/_index.md
@@ -2,7 +2,7 @@
title: "Developer Guide"
linkTitle: "Developer Guide"
weight: 60
-date: 2021-06-10
+date: 2021-07-30
description: >
Jenkins Operator for developers
---
@@ -211,6 +211,16 @@ seed-job-agent-jenkins-example-758cc7cc5c-82hbl 1/1 Running 0
make run OPERATOR_EXTRA_ARGS="--debug"
```
+### Stop or delete minikube cluster
+To stop Kubernetes cluster running locally on minikube:
+```bash
+minikube stop
+```
+To delete the cluster altogether:
+```bash
+minikube delete
+```
+
## Build and run with a remote Kubernetes cluster
You can also run the controller locally and make it listen to a remote Kubernetes server.
@@ -282,6 +292,18 @@ kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.us
kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.password}' | base64 -d
```
+
+
+
+## Self-learning
+
+* [Tutorial: Deep Dive into the Operator Framework for... Melvin Hillsman, Michael Hrivnak, & Matt Dorn
+](https://www.youtube.com/watch?v=8_DaCcRMp5I)
+
+* [Operator Framework Training By OpenShift](https://www.katacoda.com/openshift/courses/operatorframework)
+
+* [Operator SDK Tutorial for Go](https://sdk.operatorframework.io/docs/building-operators/golang/tutorial/)
+
[dep_tool]:https://golang.github.io/dep/docs/installation.html
[git_tool]:https://git-scm.com/downloads
[go_tool]:https://golang.org/dl/
@@ -293,9 +315,3 @@ kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.pa
[virtualbox]:https://www.virtualbox.org/wiki/Downloads
[install_dev_tools]:https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/
-## Self-learning
-
-* [Tutorial: Deep Dive into the Operator Framework for... Melvin Hillsman, Michael Hrivnak, & Matt Dorn
-](https://www.youtube.com/watch?v=8_DaCcRMp5I)
-
-* [Operator Framework Training By OpenShift](https://www.katacoda.com/openshift/courses/operatorframework)
diff --git a/website/content/en/docs/Getting Started/latest/configuration.md b/website/content/en/docs/Getting Started/latest/configuration.md
index f3c4b8a7..e543e544 100644
--- a/website/content/en/docs/Getting Started/latest/configuration.md
+++ b/website/content/en/docs/Getting Started/latest/configuration.md
@@ -163,7 +163,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git
```
and create a Kubernetes Secret (name of secret should be the same from `credentialID` field):
diff --git a/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md b/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
index d4df095c..fbc5bccc 100644
--- a/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
+++ b/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
@@ -7,6 +7,10 @@ description: >
Prevent loss of job history
---
+> Because of Jenkins Operator's architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+> or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+> up. Therefore, the backup script makes a copy of jobs history only.
+
Backup and restore is done by a container sidecar.
### PVC
@@ -77,7 +81,7 @@ spec:
getLatestAction:
exec:
command:
- - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data
+ - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data
interval: 30 # how often make backup in seconds
makeBackupBeforePodDeletion: true # make a backup before pod deletion
restore:
diff --git a/website/content/en/docs/Getting Started/latest/customization.md b/website/content/en/docs/Getting Started/latest/customization.md
index 76b12e10..167c556f 100644
--- a/website/content/en/docs/Getting Started/latest/customization.md
+++ b/website/content/en/docs/Getting Started/latest/customization.md
@@ -13,13 +13,14 @@ Plugin's configuration is applied as groovy scripts or the [configuration as cod
Any plugin working for Jenkins can be installed by the Jenkins Operator.
Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
+
+* configuration-as-code v1.51
+* git v4.7.2
* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
+* kubernetes-credentials-provider v0.18-1
+* kubernetes v1.30.0
* workflow-aggregator v2.6
-* workflow-job v2.40
+* workflow-job v2.41
Rest of the plugins can be found in [plugins repository](https://plugins.jenkins.io/).
@@ -51,19 +52,19 @@ spec:
master:
basePlugins:
- name: kubernetes
- version: "1.28.6"
+ version: "1.30.0"
- name: workflow-job
version: "2.40"
- name: workflow-aggregator
version: "2.6"
- name: git
- version: "4.5.0"
+ version: "4.7.2"
- name: job-dsl
version: "1.77"
- name: configuration-as-code
- version: "1.46"
+ version: "1.51"
- name: kubernetes-credentials-provider
- version: "0.15"
+ version: "0.18-1"
```
You can change their versions.
diff --git a/website/content/en/docs/Getting Started/latest/schema.md b/website/content/en/docs/Getting Started/latest/schema.md
index 2a1444c7..58638cbd 100644
--- a/website/content/en/docs/Getting Started/latest/schema.md
+++ b/website/content/en/docs/Getting Started/latest/schema.md
@@ -661,7 +661,12 @@ Values defined by an Env with a duplicate key will take precedence.
(Optional)
-Pod volumes to mount into the container’s filesystem.
+
+Pod volumes to mount into the container’s filesystem. More info:
+
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+
+
diff --git a/website/content/en/docs/Getting Started/v0.5.x/configure-backup-and-restore.md b/website/content/en/docs/Getting Started/v0.5.x/configure-backup-and-restore.md
index 08033892..0a079cba 100644
--- a/website/content/en/docs/Getting Started/v0.5.x/configure-backup-and-restore.md
+++ b/website/content/en/docs/Getting Started/v0.5.x/configure-backup-and-restore.md
@@ -85,6 +85,6 @@ spec:
getLatestAction:
exec:
command:
- - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data
+ - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data
#recoveryOnce: # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored
```
diff --git a/website/content/en/docs/Installation/_index.md b/website/content/en/docs/Installation/_index.md
index 6d4d8d27..17b8df64 100644
--- a/website/content/en/docs/Installation/_index.md
+++ b/website/content/en/docs/Installation/_index.md
@@ -2,24 +2,25 @@
title: "Installation"
linkTitle: "Installation"
weight: 1
-date: 2020-10-05
+date: 2021-07-30
description: >
How to install Jenkins Operator
---
{{% pageinfo %}}
This document describes installation procedure for **Jenkins Operator**.
-All container images can be found at [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator)
+All container images can be found at [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator) Docker Hub repository.
{{% /pageinfo %}}
## Requirements
To run **Jenkins Operator**, you will need:
+
- access to a Kubernetes cluster version `1.17+`
- `kubectl` version `1.17+`
-Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to [Getting Started](/kubernetes-operator/docs/installation/)
+Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to [Getting Started](/kubernetes-operator/docs/installation/).
## Deploy Jenkins Operator using YAML's
@@ -877,3 +878,24 @@ Example:
+## Note on Operator's nightly built images
+If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability.
+
+You can find nightly built images by heading to [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator) Docker Hub repository and looking for images with tag in the form of "{git-hash}", {git-hash} being the hash of master branch commit that you want to use snapshot of.
+
+## Note on restricted Jenkins controller pod volumeMounts
+Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users.
+One of the key points of this design is maintaining an immutable state of Jenkins.
+
+One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume
+(jenkins-home) as Jenkins home directory.
+It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory,
+as attempting to do so will result in Operator error.
+
+jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator,
+below is the full list of those volumeMounts:
+
+* jenkins-home
+* scripts
+* init-configuration
+* operator-credentials
\ No newline at end of file
diff --git a/website/package-lock.json b/website/package-lock.json
index 67bfa179..334ea961 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -288,16 +288,16 @@
}
},
"browserslist": {
- "version": "4.16.6",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
- "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
+ "version": "4.16.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
+ "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001219",
+ "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2",
- "electron-to-chromium": "^1.3.723",
+ "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1",
- "node-releases": "^1.1.71"
+ "node-releases": "^1.1.73"
}
},
"cache-base": {
@@ -330,9 +330,9 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001237",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz",
- "integrity": "sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw==",
+ "version": "1.0.30001249",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz",
+ "integrity": "sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw==",
"dev": true
},
"chalk": {
@@ -568,9 +568,9 @@
}
},
"electron-to-chromium": {
- "version": "1.3.752",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz",
- "integrity": "sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A==",
+ "version": "1.3.798",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.798.tgz",
+ "integrity": "sha512-fwsr6oXAORoV9a6Ak2vMCdXfmHIpAGgpOGesulS1cbGgJmrMl3H+GicUyRG3t+z9uHTMrIuMTleFDW+EUFYT3g==",
"dev": true
},
"end-of-stream": {
@@ -925,9 +925,9 @@
}
},
"graceful-fs": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
"dev": true
},
"has-flag": {
@@ -1338,9 +1338,9 @@
"dev": true
},
"nan": {
- "version": "2.14.2",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
- "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
+ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
"dev": true,
"optional": true
},
Pod volumes to mount into the container’s filesystem.
++Pod volumes to mount into the container’s filesystem. More info: + +https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts + +
Deploy Jenkins
@@ -846,8 +848,6 @@
-
-
Configuration
diff --git a/docs/docs/getting-started/v0.5.x/index.xml b/docs/docs/getting-started/v0.5.x/index.xml
index 1ede18bb..93894a88 100644
--- a/docs/docs/getting-started/v0.5.x/index.xml
+++ b/docs/docs/getting-started/v0.5.x/index.xml
@@ -634,7 +634,7 @@ The secrets are loaded to <code>secrets</code> map.</p>
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
diff --git a/docs/docs/index.html b/docs/docs/index.html
index 001c8b57..c8d69c8e 100644
--- a/docs/docs/index.html
+++ b/docs/docs/index.html
@@ -789,10 +789,6 @@
-
-
-
-
Installation
@@ -832,6 +828,10 @@
+
+
+
+
diff --git a/docs/docs/index.xml b/docs/docs/index.xml
index 6074c840..5f1c71cc 100644
--- a/docs/docs/index.xml
+++ b/docs/docs/index.xml
@@ -651,7 +651,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p>
<pre><code>apiVersion: v1
kind: Secret
@@ -2167,14 +2167,17 @@ stringData:
Plugin’s configuration is applied as groovy scripts or the <a href="https://github.com/jenkinsci/configuration-as-code-plugin">configuration as code plugin</a>.
Any plugin working for Jenkins can be installed by the Jenkins Operator.</p>
-<p>Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
-* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
-* workflow-aggregator v2.6
-* workflow-job v2.40</p>
+<p>Pre-installed plugins:</p>
+
+<ul>
+<li>configuration-as-code v1.51</li>
+<li>git v4.7.2</li>
+<li>job-dsl v1.77</li>
+<li>kubernetes-credentials-provider v0.18-1</li>
+<li>kubernetes v1.30.0</li>
+<li>workflow-aggregator v2.6</li>
+<li>workflow-job v2.41</li>
+</ul>
<p>Rest of the plugins can be found in <a href="https://plugins.jenkins.io/">plugins repository</a>.</p>
@@ -2199,19 +2202,19 @@ Any plugin working for Jenkins can be installed by the Jenkins Operator.</p&g
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>basePlugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.28.6"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.30.0"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.40"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.6"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.5.0"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.7.2"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.77"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.46"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.51"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.15"</span></code></pre></div>
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.18-1"</span></code></pre></div>
<p>You can change their versions.</p>
<p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restart.</p>
@@ -3123,6 +3126,12 @@ spec:
+<blockquote>
+<p>Because of Jenkins Operator’s architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+up. Therefore, the backup script makes a copy of jobs history only.</p>
+</blockquote>
+
<p>Backup and restore is done by a container sidecar.</p>
<h3 id="pvc">PVC</h3>
@@ -3185,7 +3194,7 @@ spec:
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make a backup before pod deletion</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
@@ -3279,7 +3288,7 @@ spec:
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
@@ -6185,7 +6194,12 @@ Values defined by an Env with a duplicate key will take precedence.</p>
</td>
<td>
<em>(Optional)</em>
-<p>Pod volumes to mount into the container’s filesystem.</p>
+<p>
+Pod volumes to mount into the container’s filesystem. More info:
+<a href="https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts">
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+</a>
+</p>
</td>
</tr>
<tr>
diff --git a/docs/docs/installation/index.html b/docs/docs/installation/index.html
index eb637236..728a3edb 100644
--- a/docs/docs/installation/index.html
+++ b/docs/docs/installation/index.html
@@ -26,7 +26,7 @@
" />
-
+
@@ -766,6 +766,8 @@
+
Note on Operator’s nightly built images
+Note on restricted Jenkins controller pod volumeMounts
@@ -808,18 +810,21 @@
This document describes installation procedure for Jenkins Operator.
-All container images can be found at virtuslab/jenkins-operator
+All container images can be found at virtuslab/jenkins-operator Docker Hub repository.
Requirements
-To run Jenkins Operator, you will need:
-- access to a Kubernetes cluster version 1.17+
-- kubectl version 1.17+
+To run Jenkins Operator, you will need:
-Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started
+
+- access to a Kubernetes cluster version
1.17+
+kubectl version 1.17+
+
+
+Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started.
Deploy Jenkins Operator using YAML’s
@@ -1649,6 +1654,32 @@ Example:
+Note on Operator’s nightly built images
+
+If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability.
+
+You can find nightly built images by heading to virtuslab/jenkins-operator Docker Hub repository and looking for images with tag in the form of “{git-hash}”, {git-hash} being the hash of master branch commit that you want to use snapshot of.
+
+Note on restricted Jenkins controller pod volumeMounts
+
+Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users.
+One of the key points of this design is maintaining an immutable state of Jenkins.
+
+One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume
+(jenkins-home) as Jenkins home directory.
+It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory,
+as attempting to do so will result in Operator error.
+
+jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator,
+below is the full list of those volumeMounts:
+
+
+- jenkins-home
+- scripts
+- init-configuration
+- operator-credentials
+
+
@@ -1805,7 +1836,7 @@ Example:
- Last modified October 5, 2020
+ Last modified July 30, 2021
diff --git a/docs/docs/installation/index.xml b/docs/docs/installation/index.xml
index 9bc06edf..37e38d05 100644
--- a/docs/docs/installation/index.xml
+++ b/docs/docs/installation/index.xml
@@ -4,7 +4,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/installation/
Recent Hugo news from gohugo.io
Hugo -- gohugo.io
- Mon, 05 Oct 2020 00:00:00 +0000
+ Fri, 30 Jul 2021 00:00:00 +0000
https://jenkinsci.github.io/kubernetes-operator/img/hugo.png
GoHugo.io
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index efa05ade..b751f91f 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -2,6 +2,11 @@
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/installation/
+ 2021-07-30T00:00:00+00:00
+
+
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/
2021-01-25T00:00:00+00:00
@@ -12,11 +17,6 @@
2021-01-25T00:00:00+00:00
-
- https://jenkinsci.github.io/kubernetes-operator/docs/installation/
- 2020-10-05T00:00:00+00:00
-
-
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.4.x/deploy-jenkins/
2020-04-13T00:00:00+00:00
@@ -369,7 +369,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/
- 2021-06-10T00:00:00+00:00
+ 2021-07-30T00:00:00+00:00
diff --git a/main.go b/main.go
index 936862f1..543edad1 100644
--- a/main.go
+++ b/main.go
@@ -112,11 +112,11 @@ func main() {
logger.Info(fmt.Sprintf("Watch namespace: %v", namespace))
if ValidateSecurityWarnings {
- ispluginsdatainitialized := make(chan bool)
- go v1alpha2.PluginsDataManager.CachePluginData(ispluginsdatainitialized)
+ isInitialized := make(chan bool)
+ go v1alpha2.PluginsMgr.FetchPluginData(isInitialized)
- if !<-ispluginsdatainitialized {
- fatal(errors.New("Unable to get the plugins data"), *debug)
+ if !<-isInitialized {
+ logger.Info("Unable to get the plugins data")
}
}
diff --git a/pkg/configuration/user/seedjobs/seedjobs.go b/pkg/configuration/user/seedjobs/seedjobs.go
index cb9b3725..96d1df75 100644
--- a/pkg/configuration/user/seedjobs/seedjobs.go
+++ b/pkg/configuration/user/seedjobs/seedjobs.go
@@ -80,6 +80,7 @@ import hudson.plugins.git.BranchSpec;
import hudson.plugins.git.GitSCM;
import hudson.plugins.git.SubmoduleConfig;
import hudson.plugins.git.extensions.impl.CloneOption;
+import hudson.plugins.git.extensions.impl.GitLFSPull;
import javaposse.jobdsl.plugin.ExecuteDslScripts;
import javaposse.jobdsl.plugin.LookupStrategy;
import javaposse.jobdsl.plugin.RemovedJobAction;
@@ -93,7 +94,10 @@ def jobDslSeedName = "{{ .ID }}-{{ .SeedJobSuffix }}";
def jobRef = jenkins.getItem(jobDslSeedName)
def repoList = GitSCM.createRepoList("{{ .RepositoryURL }}", "{{ .CredentialID }}")
-def gitExtensions = [new CloneOption(true, true, ";", 10)]
+def gitExtensions = [
+ new CloneOption(true, true, ";", 10),
+ new GitLFSPull()
+]
def scm = new GitSCM(
repoList,
newArrayList(new BranchSpec("{{ .RepositoryBranch }}")),
@@ -438,7 +442,7 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri
Containers: []corev1.Container{
{
Name: "jnlp",
- Image: "jenkins/inbound-agent:alpine",
+ Image: "jenkins/inbound-agent:4.9-1",
Env: []corev1.EnvVar{
{
Name: "JENKINS_TUNNEL",
diff --git a/website/content/en/docs/Developer Guide/_index.md b/website/content/en/docs/Developer Guide/_index.md
index b5c82a7c..2753f3fb 100644
--- a/website/content/en/docs/Developer Guide/_index.md
+++ b/website/content/en/docs/Developer Guide/_index.md
@@ -2,7 +2,7 @@
title: "Developer Guide"
linkTitle: "Developer Guide"
weight: 60
-date: 2021-06-10
+date: 2021-07-30
description: >
Jenkins Operator for developers
---
@@ -211,6 +211,16 @@ seed-job-agent-jenkins-example-758cc7cc5c-82hbl 1/1 Running 0
make run OPERATOR_EXTRA_ARGS="--debug"
```
+### Stop or delete minikube cluster
+To stop Kubernetes cluster running locally on minikube:
+```bash
+minikube stop
+```
+To delete the cluster altogether:
+```bash
+minikube delete
+```
+
## Build and run with a remote Kubernetes cluster
You can also run the controller locally and make it listen to a remote Kubernetes server.
@@ -282,6 +292,18 @@ kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.us
kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.password}' | base64 -d
```
+
+
+
+## Self-learning
+
+* [Tutorial: Deep Dive into the Operator Framework for... Melvin Hillsman, Michael Hrivnak, & Matt Dorn
+](https://www.youtube.com/watch?v=8_DaCcRMp5I)
+
+* [Operator Framework Training By OpenShift](https://www.katacoda.com/openshift/courses/operatorframework)
+
+* [Operator SDK Tutorial for Go](https://sdk.operatorframework.io/docs/building-operators/golang/tutorial/)
+
[dep_tool]:https://golang.github.io/dep/docs/installation.html
[git_tool]:https://git-scm.com/downloads
[go_tool]:https://golang.org/dl/
@@ -293,9 +315,3 @@ kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.pa
[virtualbox]:https://www.virtualbox.org/wiki/Downloads
[install_dev_tools]:https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/
-## Self-learning
-
-* [Tutorial: Deep Dive into the Operator Framework for... Melvin Hillsman, Michael Hrivnak, & Matt Dorn
-](https://www.youtube.com/watch?v=8_DaCcRMp5I)
-
-* [Operator Framework Training By OpenShift](https://www.katacoda.com/openshift/courses/operatorframework)
diff --git a/website/content/en/docs/Getting Started/latest/configuration.md b/website/content/en/docs/Getting Started/latest/configuration.md
index f3c4b8a7..e543e544 100644
--- a/website/content/en/docs/Getting Started/latest/configuration.md
+++ b/website/content/en/docs/Getting Started/latest/configuration.md
@@ -163,7 +163,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git
```
and create a Kubernetes Secret (name of secret should be the same from `credentialID` field):
diff --git a/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md b/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
index d4df095c..fbc5bccc 100644
--- a/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
+++ b/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
@@ -7,6 +7,10 @@ description: >
Prevent loss of job history
---
+> Because of Jenkins Operator's architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+> or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+> up. Therefore, the backup script makes a copy of jobs history only.
+
Backup and restore is done by a container sidecar.
### PVC
@@ -77,7 +81,7 @@ spec:
getLatestAction:
exec:
command:
- - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data
+ - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data
interval: 30 # how often make backup in seconds
makeBackupBeforePodDeletion: true # make a backup before pod deletion
restore:
diff --git a/website/content/en/docs/Getting Started/latest/customization.md b/website/content/en/docs/Getting Started/latest/customization.md
index 76b12e10..167c556f 100644
--- a/website/content/en/docs/Getting Started/latest/customization.md
+++ b/website/content/en/docs/Getting Started/latest/customization.md
@@ -13,13 +13,14 @@ Plugin's configuration is applied as groovy scripts or the [configuration as cod
Any plugin working for Jenkins can be installed by the Jenkins Operator.
Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
+
+* configuration-as-code v1.51
+* git v4.7.2
* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
+* kubernetes-credentials-provider v0.18-1
+* kubernetes v1.30.0
* workflow-aggregator v2.6
-* workflow-job v2.40
+* workflow-job v2.41
Rest of the plugins can be found in [plugins repository](https://plugins.jenkins.io/).
@@ -51,19 +52,19 @@ spec:
master:
basePlugins:
- name: kubernetes
- version: "1.28.6"
+ version: "1.30.0"
- name: workflow-job
version: "2.40"
- name: workflow-aggregator
version: "2.6"
- name: git
- version: "4.5.0"
+ version: "4.7.2"
- name: job-dsl
version: "1.77"
- name: configuration-as-code
- version: "1.46"
+ version: "1.51"
- name: kubernetes-credentials-provider
- version: "0.15"
+ version: "0.18-1"
```
You can change their versions.
diff --git a/website/content/en/docs/Getting Started/latest/schema.md b/website/content/en/docs/Getting Started/latest/schema.md
index 2a1444c7..58638cbd 100644
--- a/website/content/en/docs/Getting Started/latest/schema.md
+++ b/website/content/en/docs/Getting Started/latest/schema.md
@@ -661,7 +661,12 @@ Values defined by an Env with a duplicate key will take precedence.
(Optional)
-Pod volumes to mount into the container’s filesystem.
+
+Pod volumes to mount into the container’s filesystem. More info:
+
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+
+
Configuration
diff --git a/docs/docs/getting-started/v0.5.x/index.xml b/docs/docs/getting-started/v0.5.x/index.xml
index 1ede18bb..93894a88 100644
--- a/docs/docs/getting-started/v0.5.x/index.xml
+++ b/docs/docs/getting-started/v0.5.x/index.xml
@@ -634,7 +634,7 @@ The secrets are loaded to <code>secrets</code> map.</p>
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
diff --git a/docs/docs/index.html b/docs/docs/index.html
index 001c8b57..c8d69c8e 100644
--- a/docs/docs/index.html
+++ b/docs/docs/index.html
@@ -789,10 +789,6 @@
-
-
-
-
Installation
@@ -832,6 +828,10 @@
+
+
+
+
diff --git a/docs/docs/index.xml b/docs/docs/index.xml
index 6074c840..5f1c71cc 100644
--- a/docs/docs/index.xml
+++ b/docs/docs/index.xml
@@ -651,7 +651,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git</code></pre>
<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p>
<pre><code>apiVersion: v1
kind: Secret
@@ -2167,14 +2167,17 @@ stringData:
Plugin’s configuration is applied as groovy scripts or the <a href="https://github.com/jenkinsci/configuration-as-code-plugin">configuration as code plugin</a>.
Any plugin working for Jenkins can be installed by the Jenkins Operator.</p>
-<p>Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
-* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
-* workflow-aggregator v2.6
-* workflow-job v2.40</p>
+<p>Pre-installed plugins:</p>
+
+<ul>
+<li>configuration-as-code v1.51</li>
+<li>git v4.7.2</li>
+<li>job-dsl v1.77</li>
+<li>kubernetes-credentials-provider v0.18-1</li>
+<li>kubernetes v1.30.0</li>
+<li>workflow-aggregator v2.6</li>
+<li>workflow-job v2.41</li>
+</ul>
<p>Rest of the plugins can be found in <a href="https://plugins.jenkins.io/">plugins repository</a>.</p>
@@ -2199,19 +2202,19 @@ Any plugin working for Jenkins can be installed by the Jenkins Operator.</p&g
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>basePlugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.28.6"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.30.0"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.40"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.6"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.5.0"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.7.2"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.77"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.46"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.51"</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.15"</span></code></pre></div>
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.18-1"</span></code></pre></div>
<p>You can change their versions.</p>
<p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restart.</p>
@@ -3123,6 +3126,12 @@ spec:
+<blockquote>
+<p>Because of Jenkins Operator’s architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+up. Therefore, the backup script makes a copy of jobs history only.</p>
+</blockquote>
+
<p>Backup and restore is done by a container sidecar.</p>
<h3 id="pvc">PVC</h3>
@@ -3185,7 +3194,7 @@ spec:
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make a backup before pod deletion</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
@@ -3279,7 +3288,7 @@ spec:
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
@@ -6185,7 +6194,12 @@ Values defined by an Env with a duplicate key will take precedence.</p>
</td>
<td>
<em>(Optional)</em>
-<p>Pod volumes to mount into the container’s filesystem.</p>
+<p>
+Pod volumes to mount into the container’s filesystem. More info:
+<a href="https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts">
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+</a>
+</p>
</td>
</tr>
<tr>
diff --git a/docs/docs/installation/index.html b/docs/docs/installation/index.html
index eb637236..728a3edb 100644
--- a/docs/docs/installation/index.html
+++ b/docs/docs/installation/index.html
@@ -26,7 +26,7 @@
" />
-
+
@@ -766,6 +766,8 @@
+
Note on Operator’s nightly built images
+Note on restricted Jenkins controller pod volumeMounts
@@ -808,18 +810,21 @@
This document describes installation procedure for Jenkins Operator.
-All container images can be found at virtuslab/jenkins-operator
+All container images can be found at virtuslab/jenkins-operator Docker Hub repository.
Requirements
-To run Jenkins Operator, you will need:
-- access to a Kubernetes cluster version 1.17+
-- kubectl version 1.17+
+To run Jenkins Operator, you will need:
-Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started
+
+- access to a Kubernetes cluster version
1.17+
+kubectl version 1.17+
+
+
+Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started.
Deploy Jenkins Operator using YAML’s
@@ -1649,6 +1654,32 @@ Example:
+Note on Operator’s nightly built images
+
+If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability.
+
+You can find nightly built images by heading to virtuslab/jenkins-operator Docker Hub repository and looking for images with tag in the form of “{git-hash}”, {git-hash} being the hash of master branch commit that you want to use snapshot of.
+
+Note on restricted Jenkins controller pod volumeMounts
+
+Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users.
+One of the key points of this design is maintaining an immutable state of Jenkins.
+
+One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume
+(jenkins-home) as Jenkins home directory.
+It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory,
+as attempting to do so will result in Operator error.
+
+jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator,
+below is the full list of those volumeMounts:
+
+
+- jenkins-home
+- scripts
+- init-configuration
+- operator-credentials
+
+
@@ -1805,7 +1836,7 @@ Example:
- Last modified October 5, 2020
+ Last modified July 30, 2021
diff --git a/docs/docs/installation/index.xml b/docs/docs/installation/index.xml
index 9bc06edf..37e38d05 100644
--- a/docs/docs/installation/index.xml
+++ b/docs/docs/installation/index.xml
@@ -4,7 +4,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/installation/
Recent Hugo news from gohugo.io
Hugo -- gohugo.io
- Mon, 05 Oct 2020 00:00:00 +0000
+ Fri, 30 Jul 2021 00:00:00 +0000
https://jenkinsci.github.io/kubernetes-operator/img/hugo.png
GoHugo.io
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index efa05ade..b751f91f 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -2,6 +2,11 @@
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/installation/
+ 2021-07-30T00:00:00+00:00
+
+
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/
2021-01-25T00:00:00+00:00
@@ -12,11 +17,6 @@
2021-01-25T00:00:00+00:00
-
- https://jenkinsci.github.io/kubernetes-operator/docs/installation/
- 2020-10-05T00:00:00+00:00
-
-
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.4.x/deploy-jenkins/
2020-04-13T00:00:00+00:00
@@ -369,7 +369,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/
- 2021-06-10T00:00:00+00:00
+ 2021-07-30T00:00:00+00:00
diff --git a/main.go b/main.go
index 936862f1..543edad1 100644
--- a/main.go
+++ b/main.go
@@ -112,11 +112,11 @@ func main() {
logger.Info(fmt.Sprintf("Watch namespace: %v", namespace))
if ValidateSecurityWarnings {
- ispluginsdatainitialized := make(chan bool)
- go v1alpha2.PluginsDataManager.CachePluginData(ispluginsdatainitialized)
+ isInitialized := make(chan bool)
+ go v1alpha2.PluginsMgr.FetchPluginData(isInitialized)
- if !<-ispluginsdatainitialized {
- fatal(errors.New("Unable to get the plugins data"), *debug)
+ if !<-isInitialized {
+ logger.Info("Unable to get the plugins data")
}
}
diff --git a/pkg/configuration/user/seedjobs/seedjobs.go b/pkg/configuration/user/seedjobs/seedjobs.go
index cb9b3725..96d1df75 100644
--- a/pkg/configuration/user/seedjobs/seedjobs.go
+++ b/pkg/configuration/user/seedjobs/seedjobs.go
@@ -80,6 +80,7 @@ import hudson.plugins.git.BranchSpec;
import hudson.plugins.git.GitSCM;
import hudson.plugins.git.SubmoduleConfig;
import hudson.plugins.git.extensions.impl.CloneOption;
+import hudson.plugins.git.extensions.impl.GitLFSPull;
import javaposse.jobdsl.plugin.ExecuteDslScripts;
import javaposse.jobdsl.plugin.LookupStrategy;
import javaposse.jobdsl.plugin.RemovedJobAction;
@@ -93,7 +94,10 @@ def jobDslSeedName = "{{ .ID }}-{{ .SeedJobSuffix }}";
def jobRef = jenkins.getItem(jobDslSeedName)
def repoList = GitSCM.createRepoList("{{ .RepositoryURL }}", "{{ .CredentialID }}")
-def gitExtensions = [new CloneOption(true, true, ";", 10)]
+def gitExtensions = [
+ new CloneOption(true, true, ";", 10),
+ new GitLFSPull()
+]
def scm = new GitSCM(
repoList,
newArrayList(new BranchSpec("{{ .RepositoryBranch }}")),
@@ -438,7 +442,7 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri
Containers: []corev1.Container{
{
Name: "jnlp",
- Image: "jenkins/inbound-agent:alpine",
+ Image: "jenkins/inbound-agent:4.9-1",
Env: []corev1.EnvVar{
{
Name: "JENKINS_TUNNEL",
diff --git a/website/content/en/docs/Developer Guide/_index.md b/website/content/en/docs/Developer Guide/_index.md
index b5c82a7c..2753f3fb 100644
--- a/website/content/en/docs/Developer Guide/_index.md
+++ b/website/content/en/docs/Developer Guide/_index.md
@@ -2,7 +2,7 @@
title: "Developer Guide"
linkTitle: "Developer Guide"
weight: 60
-date: 2021-06-10
+date: 2021-07-30
description: >
Jenkins Operator for developers
---
@@ -211,6 +211,16 @@ seed-job-agent-jenkins-example-758cc7cc5c-82hbl 1/1 Running 0
make run OPERATOR_EXTRA_ARGS="--debug"
```
+### Stop or delete minikube cluster
+To stop Kubernetes cluster running locally on minikube:
+```bash
+minikube stop
+```
+To delete the cluster altogether:
+```bash
+minikube delete
+```
+
## Build and run with a remote Kubernetes cluster
You can also run the controller locally and make it listen to a remote Kubernetes server.
@@ -282,6 +292,18 @@ kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.us
kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.password}' | base64 -d
```
+
+
+
+## Self-learning
+
+* [Tutorial: Deep Dive into the Operator Framework for... Melvin Hillsman, Michael Hrivnak, & Matt Dorn
+](https://www.youtube.com/watch?v=8_DaCcRMp5I)
+
+* [Operator Framework Training By OpenShift](https://www.katacoda.com/openshift/courses/operatorframework)
+
+* [Operator SDK Tutorial for Go](https://sdk.operatorframework.io/docs/building-operators/golang/tutorial/)
+
[dep_tool]:https://golang.github.io/dep/docs/installation.html
[git_tool]:https://git-scm.com/downloads
[go_tool]:https://golang.org/dl/
@@ -293,9 +315,3 @@ kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.pa
[virtualbox]:https://www.virtualbox.org/wiki/Downloads
[install_dev_tools]:https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/
-## Self-learning
-
-* [Tutorial: Deep Dive into the Operator Framework for... Melvin Hillsman, Michael Hrivnak, & Matt Dorn
-](https://www.youtube.com/watch?v=8_DaCcRMp5I)
-
-* [Operator Framework Training By OpenShift](https://www.katacoda.com/openshift/courses/operatorframework)
diff --git a/website/content/en/docs/Getting Started/latest/configuration.md b/website/content/en/docs/Getting Started/latest/configuration.md
index f3c4b8a7..e543e544 100644
--- a/website/content/en/docs/Getting Started/latest/configuration.md
+++ b/website/content/en/docs/Getting Started/latest/configuration.md
@@ -163,7 +163,7 @@ spec:
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
- repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git
+ repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git
```
and create a Kubernetes Secret (name of secret should be the same from `credentialID` field):
diff --git a/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md b/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
index d4df095c..fbc5bccc 100644
--- a/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
+++ b/website/content/en/docs/Getting Started/latest/configure-backup-and-restore.md
@@ -7,6 +7,10 @@ description: >
Prevent loss of job history
---
+> Because of Jenkins Operator's architecture, the configuration of Jenkins should be done using ConfigurationAsCode
+> or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration
+> up. Therefore, the backup script makes a copy of jobs history only.
+
Backup and restore is done by a container sidecar.
### PVC
@@ -77,7 +81,7 @@ spec:
getLatestAction:
exec:
command:
- - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data
+ - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data
interval: 30 # how often make backup in seconds
makeBackupBeforePodDeletion: true # make a backup before pod deletion
restore:
diff --git a/website/content/en/docs/Getting Started/latest/customization.md b/website/content/en/docs/Getting Started/latest/customization.md
index 76b12e10..167c556f 100644
--- a/website/content/en/docs/Getting Started/latest/customization.md
+++ b/website/content/en/docs/Getting Started/latest/customization.md
@@ -13,13 +13,14 @@ Plugin's configuration is applied as groovy scripts or the [configuration as cod
Any plugin working for Jenkins can be installed by the Jenkins Operator.
Pre-installed plugins:
-* configuration-as-code v1.47
-* git v4.5.0
+
+* configuration-as-code v1.51
+* git v4.7.2
* job-dsl v1.77
-* kubernetes-credentials-provider v0.15
-* kubernetes v1.29.0
+* kubernetes-credentials-provider v0.18-1
+* kubernetes v1.30.0
* workflow-aggregator v2.6
-* workflow-job v2.40
+* workflow-job v2.41
Rest of the plugins can be found in [plugins repository](https://plugins.jenkins.io/).
@@ -51,19 +52,19 @@ spec:
master:
basePlugins:
- name: kubernetes
- version: "1.28.6"
+ version: "1.30.0"
- name: workflow-job
version: "2.40"
- name: workflow-aggregator
version: "2.6"
- name: git
- version: "4.5.0"
+ version: "4.7.2"
- name: job-dsl
version: "1.77"
- name: configuration-as-code
- version: "1.46"
+ version: "1.51"
- name: kubernetes-credentials-provider
- version: "0.15"
+ version: "0.18-1"
```
You can change their versions.
diff --git a/website/content/en/docs/Getting Started/latest/schema.md b/website/content/en/docs/Getting Started/latest/schema.md
index 2a1444c7..58638cbd 100644
--- a/website/content/en/docs/Getting Started/latest/schema.md
+++ b/website/content/en/docs/Getting Started/latest/schema.md
@@ -661,7 +661,12 @@ Values defined by an Env with a duplicate key will take precedence.
(Optional)
-Pod volumes to mount into the container’s filesystem.
+
+Pod volumes to mount into the container’s filesystem. More info:
+
+https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts
+
+
Installation @@ -832,6 +828,10 @@ + + + + diff --git a/docs/docs/index.xml b/docs/docs/index.xml index 6074c840..5f1c71cc 100644 --- a/docs/docs/index.xml +++ b/docs/docs/index.xml @@ -651,7 +651,7 @@ spec: targets: "cicd/jobs/*.jenkins" description: "Jenkins Operator repository" repositoryBranch: master - repositoryUrl: ssh://git@github.com:jenkinsci/kubernetes-operator.git</code></pre> + repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git</code></pre> <p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p> <pre><code>apiVersion: v1 kind: Secret @@ -2167,14 +2167,17 @@ stringData: Plugin’s configuration is applied as groovy scripts or the <a href="https://github.com/jenkinsci/configuration-as-code-plugin">configuration as code plugin</a>. Any plugin working for Jenkins can be installed by the Jenkins Operator.</p> -<p>Pre-installed plugins: -* configuration-as-code v1.47 -* git v4.5.0 -* job-dsl v1.77 -* kubernetes-credentials-provider v0.15 -* kubernetes v1.29.0 -* workflow-aggregator v2.6 -* workflow-job v2.40</p> +<p>Pre-installed plugins:</p> + +<ul> +<li>configuration-as-code v1.51</li> +<li>git v4.7.2</li> +<li>job-dsl v1.77</li> +<li>kubernetes-credentials-provider v0.18-1</li> +<li>kubernetes v1.30.0</li> +<li>workflow-aggregator v2.6</li> +<li>workflow-job v2.41</li> +</ul> <p>Rest of the plugins can be found in <a href="https://plugins.jenkins.io/">plugins repository</a>.</p> @@ -2199,19 +2202,19 @@ Any plugin working for Jenkins can be installed by the Jenkins Operator.</p&g </span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>basePlugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.28.6"</span><span style="color:#f8f8f8;text-decoration:underline"> +</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.30.0"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.40"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"2.6"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.5.0"</span><span style="color:#f8f8f8;text-decoration:underline"> +</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"4.7.2"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.77"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.46"</span><span style="color:#f8f8f8;text-decoration:underline"> +</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.51"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.15"</span></code></pre></div> +</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"0.18-1"</span></code></pre></div> <p>You can change their versions.</p> <p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restart.</p> @@ -3123,6 +3126,12 @@ spec: +<blockquote> +<p>Because of Jenkins Operator’s architecture, the configuration of Jenkins should be done using ConfigurationAsCode +or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration +up. Therefore, the backup script makes a copy of jobs history only.</p> +</blockquote> + <p>Backup and restore is done by a container sidecar.</p> <h3 id="pvc">PVC</h3> @@ -3185,7 +3194,7 @@ spec: </span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline"> +</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make a backup before pod deletion</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -3279,7 +3288,7 @@ spec: </span><span style="color:#f8f8f8;text-decoration:underline"> </span>getLatestAction<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion. If you don't omit it in CR, you can lose data</span><span style="color:#f8f8f8;text-decoration:underline"> +</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/get-latest.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div> @@ -6185,7 +6194,12 @@ Values defined by an Env with a duplicate key will take precedence.</p> </td> <td> <em>(Optional)</em> -<p>Pod volumes to mount into the container’s filesystem.</p> +<p> +Pod volumes to mount into the container’s filesystem. More info: +<a href="https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts"> +https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts +</a> +</p> </td> </tr> <tr> diff --git a/docs/docs/installation/index.html b/docs/docs/installation/index.html index eb637236..728a3edb 100644 --- a/docs/docs/installation/index.html +++ b/docs/docs/installation/index.html @@ -26,7 +26,7 @@ " /> - + @@ -766,6 +766,8 @@ +
This document describes installation procedure for Jenkins Operator. -All container images can be found at virtuslab/jenkins-operator
+All container images can be found at virtuslab/jenkins-operator Docker Hub repository.Requirements
-To run Jenkins Operator, you will need:
-- access to a Kubernetes cluster version 1.17+
-- kubectl version 1.17+
To run Jenkins Operator, you will need:
-Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started
+-
+
- access to a Kubernetes cluster version
1.17+
+ kubectlversion1.17+
+
Listed below are the two ways to deploy Jenkins Operator. For details on how to customize your Jenkins instance, refer to Getting Started.
Deploy Jenkins Operator using YAML’s
@@ -1649,6 +1654,32 @@ Example:+
Note on Operator’s nightly built images
+ +If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability.
+ +You can find nightly built images by heading to virtuslab/jenkins-operator Docker Hub repository and looking for images with tag in the form of “{git-hash}”, {git-hash} being the hash of master branch commit that you want to use snapshot of.
+ +Note on restricted Jenkins controller pod volumeMounts
+ +Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users. +One of the key points of this design is maintaining an immutable state of Jenkins.
+ +One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume +(jenkins-home) as Jenkins home directory. +It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory, +as attempting to do so will result in Operator error.
+ +jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator, +below is the full list of those volumeMounts:
+ +-
+
- jenkins-home +
- scripts +
- init-configuration +
- operator-credentials +
-
Pod volumes to mount into the container’s filesystem.
++Pod volumes to mount into the container’s filesystem. More info: + +https://jenkinsci.github.io/kubernetes-operator/docs/installation/#note-on-restricted-jenkins-controller-pod-volumemounts + +
+## Note on Operator's nightly built images +If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability. + +You can find nightly built images by heading to [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator) Docker Hub repository and looking for images with tag in the form of "{git-hash}", {git-hash} being the hash of master branch commit that you want to use snapshot of. + +## Note on restricted Jenkins controller pod volumeMounts +Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users. +One of the key points of this design is maintaining an immutable state of Jenkins. + +One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume +(jenkins-home) as Jenkins home directory. +It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory, +as attempting to do so will result in Operator error. + +jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator, +below is the full list of those volumeMounts: + +* jenkins-home +* scripts +* init-configuration +* operator-credentials \ No newline at end of file diff --git a/website/package-lock.json b/website/package-lock.json index 67bfa179..334ea961 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -288,16 +288,16 @@ } }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.16.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz", + "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", + "caniuse-lite": "^1.0.30001248", "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "electron-to-chromium": "^1.3.793", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^1.1.73" } }, "cache-base": { @@ -330,9 +330,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001237", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz", - "integrity": "sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw==", + "version": "1.0.30001249", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz", + "integrity": "sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw==", "dev": true }, "chalk": { @@ -568,9 +568,9 @@ } }, "electron-to-chromium": { - "version": "1.3.752", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz", - "integrity": "sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A==", + "version": "1.3.798", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.798.tgz", + "integrity": "sha512-fwsr6oXAORoV9a6Ak2vMCdXfmHIpAGgpOGesulS1cbGgJmrMl3H+GicUyRG3t+z9uHTMrIuMTleFDW+EUFYT3g==", "dev": true }, "end-of-stream": { @@ -925,9 +925,9 @@ } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "dev": true }, "has-flag": { @@ -1338,9 +1338,9 @@ "dev": true }, "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", "dev": true, "optional": true },