
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jenkins China</title>
    <description>Anything can be automated</description>
    <link>https://www.jenkinschina.com/en/</link>
    <language>en</language>
    <atom:link href="https://www.jenkinschina.com/en/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Mon, 12 Oct 2026 10:30:21 +0000</pubDate>
    <lastBuildDate>Mon, 12 Oct 2026 10:30:21 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
    
      <item>
        <title>The Jenkins AI expert is live!</title>
        <description>
&lt;p&gt;&lt;a href=&quot;/ai.html&quot;&gt;Jenkins AI expert&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Screenshots:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/static/img/2025/05/JenkinsAI1.png&quot; alt=&quot;Jenkins AI&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/static/img/2025/05/JenkinsAI2.png&quot; alt=&quot;Jenkins AI&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/jenkins-ai</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/jenkins-ai</guid>
        
        <category>AI</category>
        
        
        <category>Jenkins</category>
        
      </item>
    
      <item>
        <title>Using the Latest Version of a Gradle Dependency</title>
        <description>
&lt;p&gt;If you configure a dependency in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Gradle&lt;/code&gt; without specifying a version, the build fails with an error saying the dependency cannot be found.
But when you have a lot of dependencies, you also have to trawl the repository one by one to see what the latest version of each library is.&lt;/p&gt;

&lt;p&gt;So does Gradle support using the latest version of a dependency directly?&lt;/p&gt;

&lt;p&gt;The answer is yes, though &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gradle&lt;/code&gt;’s documentation doesn’t flag it in any prominent place.&lt;/p&gt;

&lt;p&gt;The trick is to put a plus sign &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;+&lt;/code&gt; in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;version&lt;/code&gt; field, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gradle&lt;/code&gt; will work out the latest version automatically and download it.&lt;/p&gt;

&lt;p&gt;Once everything is pointed at the latest version, you can then work through the few remaining dependency-conflict errors from the log, which saves a great deal of effort.&lt;/p&gt;
</description>
        <pubDate>Sat, 04 Nov 2023 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/gradle-dependency-use-latest-version</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/gradle-dependency-use-latest-version</guid>
        
        <category>Gradle</category>
        
        
        <category>Gradle</category>
        
      </item>
    
      <item>
        <title>Distinguishing the three different levels of dependencies in Gradle</title>
        <description>
&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Gradle&lt;/code&gt; is a very flexible and powerful build system, but its concepts are relatively complex. As long as you grasp the core and keep the distinctions straight, it will not feel confusing.&lt;/p&gt;

&lt;p&gt;Does the build script below look hard to understand?&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;buildscript {
    repository for build script dependencies
    repositories {
        mavenCentral()
    }
    // build script dependencies
    dependencies {
        classpath &apos;com.android.tools.build:gradle:4.2.0&apos;
    }
}
repositories {
    mavenCentral()
    jcenter()
    google()
}
dependencies {
    implementation &apos;com.google.guava:guava:30.1-jre&apos;
    testImplementation &apos;junit:junit:4.13.2&apos;
}  
plugins {
      id &apos;com.android.application&apos;
      id &apos;org.jetbrains.kotlin.jvm&apos; version &apos;1.5.10&apos;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;!--以上为摘要内容--&gt;

&lt;p&gt;DevOps involves a great many tools, and every one of them comes with lengthy documentation; rote memorization will not get you anywhere. The right path is to understand the terminology of the core concepts, tell the different objects apart, and grasp what the designers had in mind, until you reach the point where it all feels “a matter of course” and “naturally so”.&lt;/p&gt;

&lt;p&gt;There are three principal entities in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Gradle&lt;/code&gt;: gradle itself, the project (the one to be built with gradle), and the build script (the one written with gradle).&lt;/p&gt;

&lt;p&gt;Because &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Gradle&lt;/code&gt; is an extensible build system, its build scripts are executable scripts as well, rather than the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xml&lt;/code&gt; markup language used by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ant&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Maven&lt;/code&gt;; so both of them have dependencies.&lt;/p&gt;

&lt;p&gt;Of course, the project has dependencies too.&lt;/p&gt;

&lt;p&gt;gradle’s own dependencies are called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;plugins&lt;/code&gt;: they extend gradle’s own functionality, just as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;IDEA&lt;/code&gt; has plugins and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Jenkins&lt;/code&gt; has plugins. They are declared with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;plugins&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The project’s dependencies do not directly provide functionality; rather, the code you write in the project needs to rely on these libraries. They are declared with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dependencies&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gradle&lt;/code&gt; build script is declared with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;buildscript&lt;/code&gt; — the name says it all.&lt;/p&gt;

&lt;p&gt;Once these concepts are clear, take another look at the build script below with comments added, and it becomes very easy to understand!&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;// build script configuration  
buildscript {
    repository for build script dependencies
    repositories {
        mavenCentral()
    }
    // build script dependencies
    dependencies {
        classpath &apos;com.android.tools.build:gradle:4.2.0&apos;
    }
}
// repository for project dependencies
repositories {
    mavenCentral()
    jcenter()
    google()
}
// project dependencies configuration
dependencies {
    implementation &apos;com.google.guava:guava:30.1-jre&apos;
    testImplementation &apos;junit:junit:4.13.2&apos;
}  
// plugins that the gradle build tool depends on
plugins {
      id &apos;com.android.application&apos;
      id &apos;org.jetbrains.kotlin.jvm&apos; version &apos;1.5.10&apos;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Sat, 04 Nov 2023 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/gradle-dependencies-plugins-buildscript</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/gradle-dependencies-plugins-buildscript</guid>
        
        <category>dependencies</category>
        
        
        <category>Gradle</category>
        
      </item>
    
      <item>
        <title>Should Creating a Pipeline Be Called Setting Up, Configuring, or Developing?</title>
        <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#setting-up&quot; id=&quot;markdown-toc-setting-up&quot;&gt;Setting Up&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#configuring&quot; id=&quot;markdown-toc-configuring&quot;&gt;Configuring&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#developing&quot; id=&quot;markdown-toc-developing&quot;&gt;Developing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#summary&quot; id=&quot;markdown-toc-summary&quot;&gt;Summary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the field of software development and continuous integration/delivery, Jenkins is a very popular tool for automating build, test and deployment processes. A Jenkins pipeline is a powerful mechanism that can automate the entire software delivery process by defining a series of stages, steps and conditions. However, when describing the process of creating a pipeline, which word should we use to describe it: setting up, configuring, or developing?&lt;/p&gt;

&lt;!--以上为摘要内容--&gt;

&lt;h2 id=&quot;setting-up&quot;&gt;Setting Up&lt;/h2&gt;

&lt;p&gt;First, let’s look at the word “setting up”. Setting up is usually used to describe the process of building a framework or infrastructure. In this case, using “setting up” to describe the creation of a Jenkins pipeline is appropriate. The process of creating a pipeline is like setting up a framework: you need to define the pipeline’s structure, stages and steps. By choosing the right plugins and configuration options, you can set up a complete pipeline for automated software delivery. This process is similar to building the frame of a house and then filling it in with concrete content and logic.&lt;/p&gt;

&lt;h2 id=&quot;configuring&quot;&gt;Configuring&lt;/h2&gt;

&lt;p&gt;On the other hand, the word “configuring” emphasizes the process of defining a pipeline by filling in forms, selecting options and setting parameters. Through Jenkins’ graphical interface, you can configure each stage, step and condition, as well as define the rules for building and deploying. This process is more like configuring a system than building one from scratch. Therefore, using “configuring” to describe the creation of a Jenkins pipeline is accurate as well.&lt;/p&gt;

&lt;h2 id=&quot;developing&quot;&gt;Developing&lt;/h2&gt;
&lt;p&gt;Finally, the word “developing” emphasizes the process of defining a pipeline with code. Jenkins provides support for a DSL (Domain Specific Language) and other programming languages, enabling you to define pipelines programmatically. By writing pipeline scripts, you can implement more complex logic and custom flow control. This process is similar to developing an application or software, so using “developing” to describe the creation of a pipeline is appropriate too.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;In summary, we can draw the conclusion that the creation of a pipeline can be called “setting up”, can be called “configuring”, and can even be called “developing”. Which word you choose depends on which aspect you want to emphasize. If you care more about the technical nature of the creation process and the code-writing side of it, then “developing” or “setting up” may be more appropriate. If you care more about the configuration and settings side of the creation process, then “configuring” may be more appropriate.&lt;/p&gt;

&lt;p&gt;Whichever word you choose, what matters is understanding the process of creating a Jenkins pipeline and how to achieve automated software delivery by defining pipelines. Whether you set up, configure or develop pipelines, Jenkins’ powerful features and flexibility will bring a more efficient and reliable delivery process to your project.&lt;/p&gt;
</description>
        <pubDate>Sat, 05 Aug 2023 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/jenkins-pipeline-creation</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/jenkins-pipeline-creation</guid>
        
        <category>Jenkins</category>
        
        <category>Pipeline</category>
        
        
        <category>Jenkins</category>
        
      </item>
    
      <item>
        <title>Jenkins Release Types and How to Choose One</title>
        <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#introduction-to-jenkins&quot; id=&quot;markdown-toc-introduction-to-jenkins&quot;&gt;Introduction to Jenkins&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#jenkins-releases&quot; id=&quot;markdown-toc-jenkins-releases&quot;&gt;Jenkins releases&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#how-to-choose-a-jenkins-release&quot; id=&quot;markdown-toc-how-to-choose-a-jenkins-release&quot;&gt;How to choose a Jenkins release&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;introduction-to-jenkins&quot;&gt;Introduction to Jenkins&lt;/h1&gt;
&lt;p&gt;Jenkins is a popular open-source continuous integration and delivery tool. It provides an extensible plugin ecosystem and can be used to automate the building, testing and deployment of software projects.&lt;/p&gt;

&lt;h1 id=&quot;jenkins-releases&quot;&gt;Jenkins releases&lt;/h1&gt;
&lt;p&gt;Jenkins releases fall into the following types:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;LTS release: a Long-Term Support (LTS) release, published once every 12 weeks. These releases are extensively tested and validated and come with long-term support, and they are usually used in production environments. The LTS release cycle is relatively long, so LTS releases are comparatively stable and reliable.&lt;/li&gt;
&lt;/ol&gt;

&lt;!--以上为摘要内容--&gt;

&lt;ol&gt;
  &lt;li&gt;Weekly release: a release published on a regular (weekly) basis. These releases contain the latest features and improvements, but may not be as stable as LTS releases. Weekly releases suit users who want to try out the newest features, but they are not recommended for production environments.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;how-to-choose-a-jenkins-release&quot;&gt;How to choose a Jenkins release&lt;/h1&gt;
&lt;p&gt;Which Jenkins release you choose depends on your needs and your use case:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;If you want to use Jenkins in a production environment and have high requirements for stability and reliability, choose an LTS release. These releases have been tested and validated over a long period and have been widely adopted and used, so they offer better stability and reliability.&lt;/li&gt;
  &lt;li&gt;If you want to try the latest features and improvements and are less concerned about stability, you can choose a Weekly release. These releases contain the newest features and improvements, but there may be some unknown issues.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Whichever release you choose, it is advisable to validate and evaluate it in a test environment to make sure it meets your needs and expectations. In addition, upgrading to the latest release regularly is good practice, as it gives you the latest features and improvements and keeps the system secure and stable.&lt;/p&gt;
</description>
        <pubDate>Thu, 29 Jun 2023 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/jenkins-install</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/jenkins-install</guid>
        
        <category>Jenkins</category>
        
        <category>Install</category>
        
        
        <category>Jenkins</category>
        
      </item>
    
      <item>
        <title>Jenkins FAQ Collection (Part 8)</title>
        <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#question-36-what-is-the-relationship-between-hudson-and-jenkins&quot; id=&quot;markdown-toc-question-36-what-is-the-relationship-between-hudson-and-jenkins&quot;&gt;Question 36: What is the relationship between Hudson and Jenkins?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#question-37-what-are-the-similarities-and-differences-between-jenkins-plugins-and-shared-libraries-when-should-i-use-a-plugin-and-when-should-i-use-a-shared-library&quot; id=&quot;markdown-toc-question-37-what-are-the-similarities-and-differences-between-jenkins-plugins-and-shared-libraries-when-should-i-use-a-plugin-and-when-should-i-use-a-shared-library&quot;&gt;Question 37: What are the similarities and differences between Jenkins plugins and shared libraries? When should I use a plugin and when should I use a shared library?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#question-38-can-jenkins-do-everything&quot; id=&quot;markdown-toc-question-38-can-jenkins-do-everything&quot;&gt;Question 38: Can Jenkins do everything?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#question-39-what-is-the-relationship-between-slave-node-and-agent-and-are-there-any-differences&quot; id=&quot;markdown-toc-question-39-what-is-the-relationship-between-slave-node-and-agent-and-are-there-any-differences&quot;&gt;Question 39: What is the relationship between slave, node, and agent, and are there any differences?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#question-40-how-does-jenkins-integrate-with-tools-such-as-ant-and-maven&quot; id=&quot;markdown-toc-question-40-how-does-jenkins-integrate-with-tools-such-as-ant-and-maven&quot;&gt;Question 40: How does Jenkins integrate with tools such as Ant and Maven?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;question-36-what-is-the-relationship-between-hudson-and-jenkins&quot;&gt;Question 36: What is the relationship between Hudson and Jenkins?&lt;/h1&gt;

&lt;p&gt;Answer: Both are open-source continuous integration tools written in Java.&lt;/p&gt;

&lt;p&gt;In fact, Jenkins is a fork of Hudson.&lt;/p&gt;

&lt;!--以上为摘要内容--&gt;

&lt;p&gt;Hudson was started by Sun Microsystems in 2004, and its first version was released on java.net in 2005.&lt;/p&gt;

&lt;p&gt;Starting in 2007, Hudson gradually took over the leading position held by CruiseControl and other open-source build tools.&lt;/p&gt;

&lt;p&gt;At the 2008 JavaOne conference, it won the Duke’s Choice Award in the developer solutions category.&lt;/p&gt;

&lt;p&gt;In November 2010, Oracle’s acquisition of Sun brought up the question of Hudson’s ownership.&lt;/p&gt;

&lt;p&gt;Between the main project contributors and Oracle, although many agreements were reached, one key issue was the trademark name “Hudson”.&lt;/p&gt;

&lt;p&gt;In December 2010, Oracle asserted that it owned the name and the right to apply for the trademark.&lt;/p&gt;

&lt;p&gt;Therefore, on January 11, 2011, a vote was called to change the project name from “Hudson” to “Jenkins”.&lt;/p&gt;

&lt;p&gt;On January 29, 2011, the proposal was approved by a community vote, and the Jenkins project was created.&lt;/p&gt;

&lt;p&gt;On February 1, 2011, Oracle stated that it intended to continue developing Hudson, and considered Jenkins merely a branch rather than a rename.&lt;/p&gt;

&lt;p&gt;As a result, Jenkins and Hudson went on as two independent projects, each considering the other a branch of itself.&lt;/p&gt;

&lt;p&gt;By December 2013, Jenkins on GitHub had 567 project members and about 1,100 public repositories, compared with 32 project members and 17 public repositories for Hudson.&lt;/p&gt;

&lt;p&gt;Today the differences between the two are greater still; Jenkins has clearly surpassed Hudson across the board.&lt;/p&gt;

&lt;p&gt;In addition, perhaps out of a dislike of Oracle, as Java developers we naturally ought to support and use Jenkins.&lt;/p&gt;

&lt;p&gt;From the logos of the two projects you can also see the kinship between them — both are two old men. Later Hudson was donated by Oracle to the Eclipse Foundation, so the Hudson old man has an Eclipse halo.&lt;/p&gt;

&lt;p&gt;Hudson has stopped development and has not released a new version for years (the latest version was released in 2016), while the Jenkins community and development are exceptionally active, and Jenkins 2.x has extended it into the CD domain.&lt;/p&gt;

&lt;p&gt;Jenkins 1 is already the most widely used CI/CD tool on the market today.&lt;/p&gt;

&lt;h1 id=&quot;question-37-what-are-the-similarities-and-differences-between-jenkins-plugins-and-shared-libraries-when-should-i-use-a-plugin-and-when-should-i-use-a-shared-library&quot;&gt;Question 37: What are the similarities and differences between Jenkins plugins and shared libraries? When should I use a plugin and when should I use a shared library?&lt;/h1&gt;

&lt;p&gt;Answer: A shared library is a feature that only Pipeline-type jobs can use.&lt;/p&gt;

&lt;p&gt;Plugins focus on extending the functionality of the Jenkins system itself, and their scope is broader. For example, defining new job types (Pipeline itself is implemented through a plugin), new parameter types, new trigger types, new SCM types, new notification types, new authorization strategies, new cloud types, and so on.&lt;/p&gt;

&lt;p&gt;Plugins can also define new build steps, which can be configured graphically in freestyle jobs and invoked through a DSL by optimizing compatibility with Pipeline jobs.&lt;/p&gt;

&lt;p&gt;Pipeline also has a dedicated API for defining new DSL steps (which can only be invoked through code).&lt;/p&gt;

&lt;p&gt;Plugins are written in Java and shared libraries are written in Groovy, and a shared library can in turn call the DSL steps provided by plugins.&lt;/p&gt;

&lt;p&gt;Using a plugin requires installing the plugin package on the Jenkins master before it takes effect; to upgrade it, you also need to restart the master.&lt;/p&gt;

&lt;p&gt;A shared library, by contrast, only needs its address to be configured in Jenkins before it can be used, and you can specify different branches to use. Changes to shared library code take effect in real time.&lt;/p&gt;

&lt;p&gt;As a best practice, plugins provide generic tool-level steps (the building blocks), and shared libraries implement functional steps (assembling the blocks), combining steps and sharing them across multiple Jenkins jobs. It is similar to the relationship between an API and an APP.&lt;/p&gt;

&lt;h1 id=&quot;question-38-can-jenkins-do-everything&quot;&gt;Question 38: Can Jenkins do everything?&lt;/h1&gt;

&lt;p&gt;Answer: Be clear that Jenkins is an automation server. It can automate your operations, and automation mainly consists of three parts. The first is trigger automation: a Jenkins job can be triggered automatically according to certain rules,
for example on a schedule, or when a change is committed to the code repository, or when the contents of the code repository change, and so on. The second is execution automation; the third is notification automation. The second part is defined by users themselves, and what makes Jenkins convenient is that it supports
various ways of invoking automation scripts, such as ant, maven, sh, bat, powershell, python, groovy, and so on. The automation scripts themselves are something users have to write.
Only after your operations have been reworked so that they can be carried out by automation scripts can you connect them to Jenkins and have it run them automatically. So a Jenkins engineer should be very familiar with automation principles and with the various automation scripting languages and automation tools, and should provide suggestions and guidance for the team’s automation work.&lt;/p&gt;

&lt;h1 id=&quot;question-39-what-is-the-relationship-between-slave-node-and-agent-and-are-there-any-differences&quot;&gt;Question 39: What is the relationship between slave, node, and agent, and are there any differences?&lt;/h1&gt;

&lt;p&gt;Answer: Conceptually they are basically the same. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agent&lt;/code&gt; can be seen as the new name for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;slave&lt;/code&gt; (because slave carries the meaning of “slave”…). In terms of usage, as Pipeline keywords they differ slightly.
In scripted pipeline, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node&lt;/code&gt; is used to specify the execution node; in declarative pipeline, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agent&lt;/code&gt; keyword is used, and under the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agent&lt;/code&gt; keyword there are further keywords such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kubernetes&lt;/code&gt;.&lt;/p&gt;

&lt;h1 id=&quot;question-40-how-does-jenkins-integrate-with-tools-such-as-ant-and-maven&quot;&gt;Question 40: How does Jenkins integrate with tools such as Ant and Maven?&lt;/h1&gt;

&lt;p&gt;Answer: There are two ways to use this kind of build tool in Jenkins.&lt;/p&gt;

&lt;p&gt;One is to pre-configure it in the Jenkins Global Tool Configuration, setting the tool name and path, and specifying the name when using it.
The advantage of this approach is that Jenkins can automatically install the build tool on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agent&lt;/code&gt; machine and add the executable file to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PATH&lt;/code&gt; directory.
The inconvenient part is that it requires pre-configuration, and when using it you need to explicitly specify the name; automatic installation also requires the machine to be able to access the external network.&lt;/p&gt;

&lt;p&gt;The other approach is to install the corresponding tool in advance directly on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agent&lt;/code&gt; machine and configure its executable file into the system &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PATH&lt;/code&gt; directory.
The advantage of this approach is that you can use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ant&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mvn&lt;/code&gt; commands directly. The disadvantage is that it requires pre-installation, but it can also avoid job execution failures caused by a machine being unable to access the external network.
Pre-installation also makes the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agent&lt;/code&gt; environment more controllable. In practice, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agent&lt;/code&gt; machines need a number of tools installed anyway, and this has been automated. Adding one more tool makes little difference to the workload.&lt;/p&gt;

&lt;p&gt;If the Jenkins environment has external network access and Ant and Maven both use the default configuration (repository addresses, etc.), you can use the first approach. In other cases, the second approach is recommended.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This article was first published on the WeChat public account “DevOps持续交付” (DevOps Continuous Delivery), account ID: devopscd. You are welcome to follow.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        <pubDate>Wed, 20 May 2020 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/jenkins-faq-eight</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/jenkins-faq-eight</guid>
        
        <category>Jenkins</category>
        
        <category>Pipeline</category>
        
        
        <category>Jenkins</category>
        
      </item>
    
      <item>
        <title>Jenkinsclient Tutorial Series: Viewing Basic Information (Part 2)</title>
        <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#1-easter-egg--app-mode&quot; id=&quot;markdown-toc-1-easter-egg--app-mode&quot;&gt;1. Easter Egg — APP Mode&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#2-show-the-jenkins-server-version&quot; id=&quot;markdown-toc-2-show-the-jenkins-server-version&quot;&gt;2. Show the Jenkins Server Version&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#3-show-the-current-user&quot; id=&quot;markdown-toc-3-show-the-current-user&quot;&gt;3. Show the Current User&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#4-show-the-plugin-list&quot; id=&quot;markdown-toc-4-show-the-plugin-list&quot;&gt;4. Show the Plugin List&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#5-show-the-job-list&quot; id=&quot;markdown-toc-5-show-the-job-list&quot;&gt;5. Show the Job List&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#6-show-the-queue-list&quot; id=&quot;markdown-toc-6-show-the-queue-list&quot;&gt;6. Show the Queue List&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#7-show-the-node-list&quot; id=&quot;markdown-toc-7-show-the-node-list&quot;&gt;7. Show the Node List&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#8-show-the-credentials-list&quot; id=&quot;markdown-toc-8-show-the-credentials-list&quot;&gt;8. Show the Credentials List&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once Jenkinsclient is configured, you can operate Jenkins through commands.&lt;/p&gt;

&lt;p&gt;The command format of jenkinsclient is:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins GROUP | COMMAND&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GROUP&lt;/code&gt; refers to a group of commands. For example, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;job&lt;/code&gt; is a group command, and it provides the following commands:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jenkins job build   //build a job
jenkins job copy    //copy a job
jenkins job create  //create a job
jenkins job delete  //delete a job
jenkins job disable //disable a job
jenkins job enable  //enable a job
jenkins job has     //check whether a job already exists
jenkins job info    //show job information
jenkins job ls      //show the job list
jenkins job rename  //rename a job
jenkins job xml     //show the contents of a job&apos;s config.xml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Today we’ll skip group commands for now and start with the top-level &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;COMMAND&lt;/code&gt;s. These commands are mostly used to view various kinds of information.&lt;/p&gt;

&lt;h1 id=&quot;1-easter-egg--app-mode&quot;&gt;1. Easter Egg — APP Mode&lt;/h1&gt;

&lt;p&gt;APP mode lets you operate Jenkins in a standalone window. It feels just like using an app.&lt;/p&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Video demo:&lt;/p&gt;

&lt;video width=&quot;400&quot; controls=&quot;&quot;&gt;
  &lt;source src=&quot;/assets/video/jenkinsclient_app模式.mov&quot; type=&quot;video/mp4&quot; /&gt;
&lt;/video&gt;

&lt;!--以上为摘要内容--&gt;

&lt;h1 id=&quot;2-show-the-jenkins-server-version&quot;&gt;2. Show the Jenkins Server Version&lt;/h1&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ming@tangmingdeMacBook-Pro:~$ jenkins version
Jenkins server version: 2.234
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;3-show-the-current-user&quot;&gt;3. Show the Current User&lt;/h1&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ming@tangmingdeMacBook-Pro:~$ jenkins whoami
ming
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;4-show-the-plugin-list&quot;&gt;4. Show the Plugin List&lt;/h1&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins plugins&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ming@tangmingdeMacBook-Pro:~$ jenkins plugins
Plugin name                         Type                                                                  Version
--------                            --------                                                              --------
pam-auth                            PAM Authentication plugin                                             1.6
blueocean-i18n                      i18n for Blue Ocean                                                   1.23.2
blueocean-events                    Events API for Blue Ocean                                             1.23.2
authentication-tokens               Authentication Tokens API Plugin                                      1.3
matrix-auth                         Matrix Authorization Strategy Plugin                                  2.6.1
jquery-detached                     JavaScript GUI Lib: jQuery bundles (jQuery and jQuery UI) plugin      1.2.1
workflow-api                        Pipeline: API                                                         2.40
token-macro                         Token Macro Plugin                                                    2.12
pipeline-utility-steps              Pipeline Utility Steps                                                2.5.0
pipeline-model-definition           Pipeline: Declarative                                                 1.6.0
blueocean-pipeline-api-impl         Pipeline implementation for Blue Ocean                                1.23.2
pipeline-model-declarative-agent    Pipeline: Declarative Agent API                                       1.1.1
pipeline-config-history             Pipeline Configuration History Plugin                                 1.6
credentials                         Credentials Plugin                                                    2.3.7
workflow-multibranch                Pipeline: Multibranch                                                 2.21
bouncycastle-api                    bouncycastle API Plugin                                               2.18
htmlpublisher                       HTML Publisher plugin                                                 1.23
jackson2-api                        Jackson 2 API Plugin                                                  2.11.0
workflow-scm-step                   Pipeline: SCM Step                                                    2.11
git-client                          Jenkins Git client plugin                                             3.2.1
windows-slaves                      WMI Windows Agents Plugin                                             1.6
ui-samples-plugin                   Jenkins UI sample plugin                                              2.0
handlebars                          JavaScript GUI Lib: Handlebars bundle plugin                          1.1.1
pipeline-model-extensions           Pipeline: Declarative Extension Points API                            1.6.0
lockable-resources                  Lockable Resources plugin                                             2.8
ace-editor                          JavaScript GUI Lib: ACE Editor bundle plugin                          1.1
cloudbees-folder                    Folders Plugin                                                        6.12
handy-uri-templates-2-api           Handy Uri Templates 2.x API Plugin                                    2.1.8-1.0
pipeline-input-step                 Pipeline: Input Step                                                  2.11
pipeline-milestone-step             Pipeline: Milestone Step                                              1.3.1
workflow-cps                        Pipeline: Groovy                                                      2.80
workflow-job                        Pipeline: Job                                                         2.39
blueocean-jwt                       JWT for Blue Ocean                                                    1.23.2
mailer                              Jenkins Mailer Plugin                                                 1.32
docker-java-api                     Docker API Plugin                                                     3.1.5.2
pipeline-graph-analysis             Pipeline Graph Analysis Plugin                                        1.10
ws-cleanup                          Jenkins Workspace Cleanup Plugin                                      0.38
pipeline-stage-step                 Pipeline: Stage Step                                                  2.3
github-branch-source                GitHub Branch Source Plugin                                           2.7.1
blueocean                           Blue Ocean                                                            1.23.2
blueocean-display-url               Display URL for Blue Ocean                                            2.3.1
blueocean-core-js                   Blue Ocean Core JS                                                    1.23.2
blueocean-commons                   Common API for Blue Ocean                                             1.23.2
pubsub-light                        Jenkins Pub-Sub &quot;light&quot; Bus                                           1.13
jira                                Jenkins Jira plugin                                                   3.0.15
docker-commons                      Docker Commons Plugin                                                 1.16
blueocean-dashboard                 Dashboard for Blue Ocean                                              1.23.2
blueocean-jira                      JIRA Integration for Blue Ocean                                       1.23.2
git-server                          Jenkins GIT server Plugin                                             1.9
blueocean-git-pipeline              Git Pipeline for Blue Ocean                                           1.23.2
ldap                                LDAP Plugin                                                           1.24
workflow-basic-steps                Pipeline: Basic Steps                                                 2.20
blueocean-bitbucket-pipeline        Bitbucket Pipeline for Blue Ocean                                     1.23.2
kubernetes-credentials              Kubernetes Credentials Plugin                                         0.6.2
resource-disposer                   Resource Disposer Plugin                                              0.14
google-oauth-plugin                 Google OAuth Credentials plugin                                       1.0.0
subversion                          Jenkins Subversion Plug-in                                            2.13.1
display-url-api                     Display URL API                                                       2.3.2
http_request                        HTTP Request Plugin                                                   1.8.26
apache-httpcomponents-client-4-api  Jenkins Apache HttpComponents Client 4.x API Plugin                   4.5.10-2.0
git                                 Jenkins Git plugin                                                    4.2.2
workflow-step-api                   Pipeline: Step API                                                    2.22
pipeline-rest-api                   Pipeline: REST API Plugin                                             2.13
plain-credentials                   Plain Credentials Plugin                                              1.7
kubernetes-client-api               Kubernetes Client API Plugin                                          4.9.1-1
github                              GitHub plugin                                                         1.30.0
sse-gateway                         Server Sent Events (SSE) Gateway Plugin                               1.23
email-ext                           Email Extension Plugin                                                2.69
pipeline-github-lib                 Pipeline: GitHub Groovy Libraries                                     1.0
pipeline-model-api                  Pipeline: Model API                                                   1.6.0
variant                             Variant Plugin                                                        1.3
log-file-filter                     Log File Filter Plugin                                                1.11
momentjs                            JavaScript GUI Lib: Moment.js bundle plugin                           1.1.1
branch-api                          Branch API Plugin                                                     2.5.6
durable-task                        Durable Task Plugin                                                   1.34
blueocean-config                    Config API for Blue Ocean                                             1.23.2
kubernetes                          Kubernetes plugin                                                     1.25.7
ssh-slaves                          SSH Build Agents plugin                                               1.31.2
workflow-cps-global-lib             Pipeline: Shared Groovy Libraries                                     2.16
pipeline-stage-view                 Pipeline: Stage View Plugin                                           2.13
pipeline-type-parser-steps          Pipeline Type Parser Steps                                            1.0
command-launcher                    Command Agent Launcher Plugin                                         1.4
favorite                            Favorite                                                              2.3.2
localization-support                Localization Support Plugin                                           1.1
timestamper                         Timestamper                                                           1.11.3
workflow-aggregator                 Pipeline                                                              2.6
jdk-tool                            Oracle Java SE Development Kit Installer Plugin                       1.4
pipeline-keep-running-step          Pipeline Keep Running Step                                            1.0
github-api                          GitHub API Plugin                                                     1.111
blueocean-pipeline-editor           Blue Ocean Pipeline Editor                                            1.23.2
oauth-credentials                   OAuth Credentials plugin                                              0.4
blueocean-web                       Web for Blue Ocean                                                    1.23.2
ant                                 Ant Plugin                                                            1.11
junit                               JUnit Plugin                                                          1.29
docker-workflow                     Docker Pipeline                                                       1.23
blueocean-rest-impl                 REST Implementation for Blue Ocean                                    1.23.2
ssh-credentials                     SSH Credentials Plugin                                                1.18.1
blueocean-personalization           Personalization for Blue Ocean                                        1.23.2
build-timeout                       Build Timeout                                                         1.19.1
mercurial                           Jenkins Mercurial plugin                                              2.10
docker-plugin                       Docker plugin                                                         1.2.0
jsch                                Jenkins JSch dependency plugin                                        0.1.55.2
matrix-project                      Matrix Project Plugin                                                 1.14
blueocean-rest                      REST API for Blue Ocean                                               1.23.2
cloudbees-bitbucket-branch-source   Bitbucket Branch Source Plugin                                        2.8.0
trilead-api                         Trilead API Plugin                                                    1.0.6
script-security                     Script Security Plugin                                                1.72
workflow-durable-task-step          Pipeline: Nodes and Processes                                         2.35
scm-api                             SCM API Plugin                                                        2.6.3
mapdb-api                           MapDB API Plugin                                                      1.0.9.0
blueocean-github-pipeline           GitHub Pipeline for Blue Ocean                                        1.23.2
structs                             Structs Plugin                                                        1.20
jenkins-design-language             Jenkins Design Language                                               1.23.2
pipeline-stage-tags-metadata        Pipeline: Stage Tags Metadata                                         1.6.0
antisamy-markup-formatter           OWASP Markup Formatter Plugin                                         2.0
credentials-binding                 Credentials Binding Plugin                                            1.23
gradle                              Gradle Plugin                                                         1.36
workflow-support                    Pipeline: Supporting APIs                                             3.4
pipeline-build-step                 Pipeline: Build Step                                                  2.12
blueocean-autofavorite              Autofavorite for Blue Ocean                                           1.2.4
blueocean-pipeline-scm-api          Pipeline SCM API for Blue Ocean                                       1.23.2
localization-zh-cn                  Localization: Chinese (Simplified)                                    1.0.14
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;5-show-the-job-list&quot;&gt;5. Show the Job List&lt;/h1&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins jobs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ming@tangmingdeMacBook-Pro:~$ jenkins jobs
Job name                      Type                          Link
--------                      --------                      --------
f1                            Folder                        http://localhost:83/job/f1/
f2                            Folder                        http://localhost:83/job/f2/
freestyle-job                 FreeStyleProject              http://localhost:83/job/freestyle-job/
job2                          FreeStyleProject              http://localhost:83/job/job2/
pipeline-project              WorkflowJob                   http://localhost:83/job/pipeline-project/
test_toFloat                  WorkflowJob                   http://localhost:83/job/test_toFloat/
test_toJson                   WorkflowJob                   http://localhost:83/job/test_toJson/
f1/job1                       WorkflowJob                   http://localhost:83/job/f1/job/job1/
f1/job2                       WorkflowJob                   http://localhost:83/job/f1/job/job2/
f2/job2                       WorkflowJob                   http://localhost:83/job/f2/job/job2/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h1 id=&quot;6-show-the-queue-list&quot;&gt;6. Show the Queue List&lt;/h1&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins queues&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Job ID	Job link                                              	Cause

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h1 id=&quot;7-show-the-node-list&quot;&gt;7. Show the Node List&lt;/h1&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins nodes&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Node name                     Architecture        Swap space          Memory space        Temp space          Disk space
--------                      --------            --------            --------            --------            --------            
(master)                      Linux (amd64)       1024.0/1024.0 MB    1872.38/3938.3 MB   43664 MB            43664 MB
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;8-show-the-credentials-list&quot;&gt;8. Show the Credentials List&lt;/h1&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins creds&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ID                                       Name                           Type                                                         Description
94e00416-20d6-4fdf-8a38-8d799684a7ee     user1/******                   &amp;lt;class &apos;jenkinsapi.credential.UsernamePasswordCredential&apos;&amp;gt;   
6d369c60-67b1-4820-ba7e-ab640df1eac1     user2/****** (user2 describe)  &amp;lt;class &apos;jenkinsapi.credential.UsernamePasswordCredential&apos;&amp;gt;   user2 describe
user3                                    user3/******                   &amp;lt;class &apos;jenkinsapi.credential.UsernamePasswordCredential&apos;&amp;gt;   
ming                                     ming (ming)                    &amp;lt;class &apos;jenkinsapi.credential.SSHKeyCredential&apos;&amp;gt;             ming
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This tutorial series will cover these commands in detail, so stay tuned!&lt;/p&gt;
</description>
        <pubDate>Sun, 17 May 2020 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/jenkinsclient-tutorial-02</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/jenkinsclient-tutorial-02</guid>
        
        <category>Jenkinsclient</category>
        
        
        <category>Jenkinsclient</category>
        
      </item>
    
      <item>
        <title>Jenkinsclient Tutorial Series: Introduction and Installation (Part 1)</title>
        <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#introduction-to-jenkinsclient&quot; id=&quot;markdown-toc-introduction-to-jenkinsclient&quot;&gt;Introduction to jenkinsclient&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#jenkinsclient-features&quot; id=&quot;markdown-toc-jenkinsclient-features&quot;&gt;Jenkinsclient features&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#feature-1-open-source&quot; id=&quot;markdown-toc-feature-1-open-source&quot;&gt;Feature 1: Open source&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#feature-2-cross-platform&quot; id=&quot;markdown-toc-feature-2-cross-platform&quot;&gt;Feature 2: Cross-platform&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#feature-3-multi-instance-support&quot; id=&quot;markdown-toc-feature-3-multi-instance-support&quot;&gt;Feature 3: Multi-instance support&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#feature-4-simple-and-easy-to-use&quot; id=&quot;markdown-toc-feature-4-simple-and-easy-to-use&quot;&gt;Feature 4: Simple and easy to use&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#feature-5-powerful&quot; id=&quot;markdown-toc-feature-5-powerful&quot;&gt;Feature 5: Powerful&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#installation&quot; id=&quot;markdown-toc-installation&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#upgrade&quot; id=&quot;markdown-toc-upgrade&quot;&gt;Upgrade&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#quick-start&quot; id=&quot;markdown-toc-quick-start&quot;&gt;Quick start&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#configure-server-information&quot; id=&quot;markdown-toc-configure-server-information&quot;&gt;Configure server information&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#view-help-information&quot; id=&quot;markdown-toc-view-help-information&quot;&gt;View help information&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;introduction-to-jenkinsclient&quot;&gt;Introduction to jenkinsclient&lt;/h1&gt;

&lt;p&gt;Jenkinsclient is a powerful, open-source, cross-platform Jenkins command-line client. It provides a Docker-style command line for users to operate Jenkins.&lt;/p&gt;

&lt;p&gt;Jenkinsclient is written in Python, and the project source code is open-sourced under China’s Mulan Open Source License. You can view it on Gitee and Github.&lt;/p&gt;

&lt;p&gt;Gitee: &lt;a href=&quot;https://gitee.com/hummerstudio/jenkinsclient&quot;&gt;https://gitee.com/hummerstudio/jenkinsclient&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href=&quot;https://github.com/hummerstudio/jenkinsclient&quot;&gt;https://github.com/hummerstudio/jenkinsclient&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Project homepage: &lt;a href=&quot;https://pypi.org/project/jenkinsclient&quot;&gt;https://pypi.org/project/jenkinsclient&lt;/a&gt;&lt;/p&gt;

&lt;!--以上为摘要内容--&gt;

&lt;h1 id=&quot;jenkinsclient-features&quot;&gt;Jenkinsclient features&lt;/h1&gt;

&lt;h2 id=&quot;feature-1-open-source&quot;&gt;Feature 1: Open source&lt;/h2&gt;

&lt;p&gt;As mentioned above, the Jenkinsclient project source code is open-sourced under China’s Mulan Open Source License. Contributions, code submissions, issue reports, documentation, spreading the word, and sharing are all very welcome.&lt;/p&gt;

&lt;h2 id=&quot;feature-2-cross-platform&quot;&gt;Feature 2: Cross-platform&lt;/h2&gt;

&lt;p&gt;From the very beginning of development, Jenkinsclient was positioned as cross-platform, and in the end Python was chosen for the implementation.&lt;/p&gt;

&lt;p&gt;Windows, Linux, Mac, and Unix all have Python runtime environments, which guarantees that Jenkinsclient can be used across platforms.&lt;/p&gt;

&lt;h2 id=&quot;feature-3-multi-instance-support&quot;&gt;Feature 3: Multi-instance support&lt;/h2&gt;

&lt;p&gt;Jenkinsclient supports multiple Jenkins instances.&lt;/p&gt;

&lt;p&gt;You can use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins config generate&lt;/code&gt; command to generate a configuration file, configure information for multiple Jenkins servers in it, and use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;use&lt;/code&gt; field to specify the server operated on by default.&lt;/p&gt;

&lt;h2 id=&quot;feature-4-simple-and-easy-to-use&quot;&gt;Feature 4: Simple and easy to use&lt;/h2&gt;

&lt;p&gt;To achieve simple and easy-to-use command-line operations, Jenkinsclient did a great deal of technology selection work at the design stage.&lt;/p&gt;

&lt;p&gt;My goal was to design a Docker-style command line. Put simply, operations are expressed with commands/keywords rather than the traditional approach of operating through arguments/options.&lt;/p&gt;

&lt;p&gt;For example, to start a docker container, we use:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;docker container start CONTAINER
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For jenkinsclient, for something like triggering a job, I wanted the command line to look like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jenkins job build JOB_NAME
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;By contrast, a traditional-style command-line implementation would look like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jenkins job -b JOB_NAME
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Or like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jenkins-job build JOB_NAME
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Python has several libraries for developing command-line tools, but most of them can only produce traditional-style command-line tools. After careful screening and writing demos, I chose Fire. Fire fully meets the requirements above.&lt;/p&gt;

&lt;p&gt;Now, with Jenkinsclient, you can perform Jenkins operations with natural command-line syntax like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jenkins jobs                          // show the job list
jenkins job build JOB_NAME            // trigger a Jenkins job
jenkins job disable JOB_NAME          // disable a Jenkins job
jenkins job enable JOB_NAME           // enable a Jenkins job

jenkins plugins                       // show the plugin list
jenkins plugin install PLUGIN_NAME    // install a plugin
jenkins plugin uninstall PLUGIN_NAME  // uninstall a plugin
jenkins plugin search KEY_WORD        // search for a plugin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;feature-5-powerful&quot;&gt;Feature 5: Powerful&lt;/h2&gt;

&lt;p&gt;The architecture of Jenkinsclient is designed to give it the ability to implement every Jenkins-related operation. The major features implemented so far are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Configure Jenkins server information&lt;/li&gt;
  &lt;li&gt;Manage Jenkins nodes&lt;/li&gt;
  &lt;li&gt;Manage Jenkins plugins&lt;/li&gt;
  &lt;li&gt;Manage Jenkins credentials&lt;/li&gt;
  &lt;li&gt;Manage Jenkins jobs&lt;/li&gt;
  &lt;li&gt;Manage Jenkins queues&lt;/li&gt;
  &lt;li&gt;Manage Jenkins executors&lt;/li&gt;
  &lt;li&gt;Manage Jenkins builds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This covers essentially every kind of operable Jenkins resource.&lt;/p&gt;

&lt;h1 id=&quot;installation&quot;&gt;Installation&lt;/h1&gt;

&lt;p&gt;The simplest way is to install jenkinsclient, which is hosted on PyPI, with pip. Just use the following command:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pip3 install jenkinsclient
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can also download the source code, unzip it, enter the root directory, and install it manually with the setuptools tool:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;python setup.py install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;upgrade&quot;&gt;Upgrade&lt;/h1&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pip3 install -U jenkinsclient
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;quick-start&quot;&gt;Quick start&lt;/h1&gt;

&lt;h2 id=&quot;configure-server-information&quot;&gt;Configure server information&lt;/h2&gt;

&lt;p&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins config generate&lt;/code&gt; to configure Jenkins server information.&lt;/p&gt;

&lt;p&gt;This command generates a template configuration file for jenkinsclient, and then you need to fill in the actual values.&lt;/p&gt;

&lt;h2 id=&quot;view-help-information&quot;&gt;View help information&lt;/h2&gt;

&lt;p&gt;Try typing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins jobs&lt;/code&gt; to view all jobs on the Jenkins server.&lt;/p&gt;

&lt;p&gt;Try typing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins plugins&lt;/code&gt; to view all plugins on the Jenkins server.&lt;/p&gt;

&lt;p&gt;For more commands, you can type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Or type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jenkins &amp;lt;command-group&amp;gt;&lt;/code&gt; to display the help information for a command group. For example, to view the help information for the Jenkins job management commands:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jenkins job
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To view the help information for the Jenkins plugin management commands:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jenkins plugin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This tutorial series will introduce these commands in detail, so stay tuned!&lt;/p&gt;
</description>
        <pubDate>Sun, 17 May 2020 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/jenkinsclient-tutorial-01</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/jenkinsclient-tutorial-01</guid>
        
        <category>Jenkinsclient</category>
        
        
        <category>Jenkinsclient</category>
        
      </item>
    
      <item>
        <title>Processes Started by Jenkins Always Exit After the Build? Use the keepRunning Step for an Elegant Fix</title>
        <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#background&quot; id=&quot;markdown-toc-background&quot;&gt;Background&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#solution&quot; id=&quot;markdown-toc-solution&quot;&gt;Solution&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#project-information&quot; id=&quot;markdown-toc-project-information&quot;&gt;Project Information&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;background&quot;&gt;Background&lt;/h1&gt;

&lt;p&gt;Starting a process through Jenkins is a fairly common scenario in real-world work.&lt;/p&gt;

&lt;p&gt;But under normal circumstances, a process started by a Jenkins job is killed by Jenkins once the build finishes.&lt;/p&gt;

&lt;!--以上为摘要内容--&gt;

&lt;p&gt;This is determined by Jenkins’ process tree management mechanism.&lt;/p&gt;

&lt;p&gt;We can work around it by changing the value of a variable, but that approach has a few drawbacks:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;It is not intuitive — even after it works, you cannot tell how the problem was solved;&lt;/li&gt;
  &lt;li&gt;It is hard to think of solving the problem this way.&lt;/li&gt;
  &lt;li&gt;Poor readability is in fact a problem that should be avoided as much as possible while writing code.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;solution&quot;&gt;Solution&lt;/h1&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/hummerstudio/pipeline-keep-running-step-plugin&quot;&gt;pipeline-keep-running-step-plugin&lt;/a&gt; plugin provides a more intuitive &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;keepRunning&lt;/code&gt; step, offering an elegant solution to this problem.&lt;/p&gt;

&lt;p&gt;With the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;keepRunning&lt;/code&gt; step, the name tells you exactly what it does, so the readability problem is solved.&lt;/p&gt;

&lt;p&gt;Using it is simple as well. To start tomcat, for example, this is all you need:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;keepRunning {
    sh &apos;/usr/local/apache-tomact/bin/startup.sh
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;project-information&quot;&gt;Project Information&lt;/h1&gt;

&lt;p&gt;Open source project home page: &lt;a href=&quot;https://github.com/hummerstudio/pipeline-keep-running-step-plugin&quot;&gt;https://github.com/hummerstudio/pipeline-keep-running-step-plugin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;hpi plugin package download: &lt;a href=&quot;https://github.com/hummerstudio/pipeline-keep-running-step-plugin/release&quot;&gt;https://github.com/hummerstudio/pipeline-keep-running-step-plugin/releases&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 04 May 2020 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/pipeline-keep-running-step-plugin-1.0</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/pipeline-keep-running-step-plugin-1.0</guid>
        
        <category>SonarQube</category>
        
        
        <category>SonarQube</category>
        
      </item>
    
      <item>
        <title>The Automation Revolution and DevOps</title>
        <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#first-generation-automation&quot; id=&quot;markdown-toc-first-generation-automation&quot;&gt;First-Generation Automation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#second-generation-automation&quot; id=&quot;markdown-toc-second-generation-automation&quot;&gt;Second-Generation Automation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#third-generation-automation&quot; id=&quot;markdown-toc-third-generation-automation&quot;&gt;Third-Generation Automation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-is-the-fourth-generation-of-automation&quot; id=&quot;markdown-toc-what-is-the-fourth-generation-of-automation&quot;&gt;What Is the Fourth Generation of Automation?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#back-to-devops&quot; id=&quot;markdown-toc-back-to-devops&quot;&gt;Back to DevOps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automation is a revolutionary concept and technology.&lt;/p&gt;

&lt;h1 id=&quot;first-generation-automation&quot;&gt;First-Generation Automation&lt;/h1&gt;

&lt;p&gt;The first generation of automation is the automation of the heaven-and-earth system: the growth of all things.&lt;/p&gt;

&lt;p&gt;Heaven supplies energy as yang, earth takes form as yin; the ancient sages observed this and put it to use. Following the four seasons and adapting to local conditions is what is called wu wei (non-action). Wu wei is not inaction — it is acting in accordance with nature.&lt;/p&gt;

&lt;p&gt;The automation of this generation has three elements: heaven, earth and man.&lt;/p&gt;

&lt;p&gt;Weather reflects the intensity and total amount of the solar energy supplied. The changes of weather divide broadly into the four seasons and finely into the twenty-four solar terms. Terrain differs from place to place, so one adapts to local conditions; and people must sow, water, fertilize and feed at the right time and in the right place, as if playing in concert with heaven and earth — hence human harmony.&lt;/p&gt;

&lt;p&gt;Although heaven and earth are already automated, from the human point of view it still takes the right action at the right moment for all things to grow as humans intend.&lt;/p&gt;

&lt;!--以上为摘要内容--&gt;

&lt;h1 id=&quot;second-generation-automation&quot;&gt;Second-Generation Automation&lt;/h1&gt;

&lt;p&gt;The second generation of automation is machine automation. From this generation onward, automation is man-made.&lt;/p&gt;

&lt;p&gt;Machine automation did not begin in modern times; the ancient waterwheel, for instance, was an automated machine powered by water.&lt;/p&gt;

&lt;p&gt;But what brought a truly revolutionary change in efficiency was the arrival of industrial machines powered by electricity in the modern era.&lt;/p&gt;

&lt;p&gt;Electricity is man-made, produced at first mainly by burning coal and oil; only then did humanity truly have a concept and awareness of energy.&lt;/p&gt;

&lt;p&gt;It was also at this point that humanity went from submitting to nature and opening up wasteland to destroying nature and extracting minerals.&lt;/p&gt;

&lt;p&gt;Speaking of the human being, the body is yin and consciousness is yang. When yang reaches its extreme, yin is born; when intellect reaches its extreme, ingenious devices are born.&lt;/p&gt;

&lt;p&gt;Coal mines and oil wells burn to generate and supply power, and iron and metals are smelted into form: this is the yin and yang of the “heaven and earth” of second-generation automation.&lt;/p&gt;

&lt;p&gt;The second generation of automation does not replace the first; rather, it plays two major roles.&lt;/p&gt;

&lt;p&gt;First, it acts on the products of first-generation automation, reprocessing them;&lt;/p&gt;

&lt;p&gt;second, it in turn upgrades first-generation automation, using machines to create small local natures.&lt;/p&gt;

&lt;h1 id=&quot;third-generation-automation&quot;&gt;Third-Generation Automation&lt;/h1&gt;

&lt;p&gt;The third generation of automation is logic automation. From this generation onward, automation moves from the concrete into the abstract.&lt;/p&gt;

&lt;p&gt;The automation of logic is the automation of the capacity to judge, and its product is software.&lt;/p&gt;

&lt;p&gt;Likewise, the third generation of automation does not replace the second; it too plays two major roles.&lt;/p&gt;

&lt;p&gt;First, on the basis of the products of second-generation automation (hardware), it builds a vast new world of software;&lt;/p&gt;

&lt;p&gt;second, it in turn upgrades second-generation automation, making hardware programmable.&lt;/p&gt;

&lt;p&gt;In the distinction between form and intent, form is yin and intent is yang. When yin reaches its extreme, yang is born. When matter reaches its extreme, intelligence and ingenuity are born.&lt;/p&gt;

&lt;p&gt;It is also from this generation onward that automation moves from things to people. The journey of “creating humans” begins.&lt;/p&gt;

&lt;p&gt;The second generation of automation replaced human physical labor; the third generation is beginning to replace human consciousness itself. Note the two kinds of “action”: one is the body’s outward “action”, the other is the body’s inward “action”.&lt;/p&gt;

&lt;h1 id=&quot;what-is-the-fourth-generation-of-automation&quot;&gt;What Is the Fourth Generation of Automation?&lt;/h1&gt;

&lt;p&gt;Think about it differently: what does the next generation of automation begin to replace in humans? It should be replacing human sensation. Put them in order of precedence, and it should first replace human “perception”.&lt;/p&gt;

&lt;p&gt;“Feeling” and “perception” are not the same thing; only with perception is there feeling. For example, perception covers sight, hearing, smell, taste and touch, while feeling covers spatial sense, the sense of cold and heat, emotion, the sense of pain and so on.&lt;/p&gt;

&lt;p&gt;Perception is reception; feeling is response.&lt;/p&gt;

&lt;p&gt;Among the five perceptions, put them in order of precedence again, and it should be human “sight” that is replaced. This is machine vision, a branch of artificial intelligence. Progress on “hearing” is good as well — that is, “speech recognition”.&lt;/p&gt;

&lt;p&gt;Self-driving cars are an attempt to generate “feeling” on top of machine vision; voice assistants, for now, only respond to commands or vague commands, and still have a long way to go before true “feeling”.&lt;/p&gt;

&lt;p&gt;It is foreseeable that completely covering the five perceptions will still take a very long time.&lt;/p&gt;

&lt;p&gt;Completely covering the five feelings, on the other hand, means the birth of “human-like” robots. That will take even longer.&lt;/p&gt;

&lt;h1 id=&quot;back-to-devops&quot;&gt;Back to DevOps&lt;/h1&gt;

&lt;p&gt;DevOps is a form of automation too: automation for the entire software lifecycle. It arose out of third-generation automation and will drive humanity more quickly into the fourth generation of automation; it can be compared to second-generation automation.&lt;/p&gt;

&lt;p&gt;The difference is that one acts on the virtual space of software, the other on the physical space of reality.&lt;/p&gt;

&lt;p&gt;For a software development company, a fully realized DevOps platform is like an internal industrial revolution and efficiency revolution.&lt;/p&gt;

</description>
        <pubDate>Mon, 20 Apr 2020 00:00:00 +0000</pubDate>
        <link>https://www.jenkinschina.com/en/post/automation-revolution-and-devops</link>
        <guid isPermaLink="true">https://www.jenkinschina.com/en/post/automation-revolution-and-devops</guid>
        
        <category>Automation</category>
        
        <category>DevOps</category>
        
        
        <category>Automation</category>
        
        <category>DevOps</category>
        
      </item>
    
  </channel>
</rss>
