GVKun编程网logo

如果Docker Pipeline Plugin withRun命令返回非零退出代码,如何使Jenkins构建失败?

15

如果您想了解如果DockerPipelinePluginwithRun命令返回非零退出代码,如何使Jenkins构建失败?的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于appengine

如果您想了解如果Docker Pipeline Plugin withRun命令返回非零退出代码,如何使Jenkins构建失败?的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于appengine-maven-plugin:1.3.1运行失败,非零退出、docker – 如何使用Jenkins Pipeline插件启用SCM轮询、Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目、docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images的有价值的信息。

本文目录一览:

如果Docker Pipeline Plugin withRun命令返回非零退出代码,如何使Jenkins构建失败?

如果Docker Pipeline Plugin withRun命令返回非零退出代码,如何使Jenkins构建失败?

我正在使用Docker Pipeline插件通过Docker容器执行构建脚本。我注意到,如果让脚本在inside()命令中执行时返回非零退出代码,Jenkins会将管道执行标记为失败。此示例Jenkinsfile演示了这种情况:

docker.image(''alpine'').inside() {  sh ''exit 1''}

但是,如果使用withRun()命令,即使命令显示容器以非零状态退出,类似的Jenkinsfile也 不会 导致构建失败docker ps-l

node() {  sh ''touch ./test.sh''  sh ''echo "exit 1" >> ./test.sh''  sh ''chmod 755 ./test.sh''  docker.image(''alpine'').withRun("-v ${WORKSPACE}:/newDir", ''/bin/sh /newDir/test.sh'') {container ->    sh "docker logs ${container.id} -f"    sh ''docker ps -l''  }}

withRun()如果容器以非零代码退出,是否有办法使构建失败?

答案1

小编典典

我从withRun()命令中找不到有关退出代码的更多信息,所以我最终只是docker run从一个sh步骤执行了一个命令:

node() {  sh ''touch ./test.sh''  sh ''echo "exit 1" >> ./test.sh''  sh ''chmod 755 ./test.sh''  sh "docker run --rm -v ${WORKSPACE}:/newDir alpine /bin/sh /newDir/test.sh"}

appengine-maven-plugin:1.3.1运行失败,非零退出

appengine-maven-plugin:1.3.1运行失败,非零退出

我试图创建hello-endpoint-framework使用maven archetype
我用这个命令来构建项目。

mvn archetype:generate -Dappengine-version=1.9.63 -Djava8=true -DCloudSDK_Tooling=false -Dapplication-id=your-app-id -Dfilter=com.google.appengine.archetypes:

我设置-Djava8=true是因为我想在 java8中 运行它。

这是pom.xml文件。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <packaging>war</packaging>    <version>1.0-SNAPSHOT</version>    <groupId>org.azeem.endpoints</groupId>    <artifactId>endpoints</artifactId>    <properties>        <maven.compiler.source>1.7</maven.compiler.source>        <maven.compiler.target>1.7</maven.compiler.target>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties>    <dependencies>        <!-- Compile/runtime dependencies -->        <!-- Uncomment to use Endpoints Frameworks v1.0 and comment the v2.0 section -->        <!--<dependency>              <groupId>com.google.appengine</groupId>              <artifactId>appengine-endpoints</artifactId>              <version>1.9.53</version>        </dependency>-->        <!-- End of Endpoints Frameworks v1.0 -->        <!-- Endpoints Frameworks v2.0 -->        <dependency>            <groupId>com.google.endpoints</groupId>            <artifactId>endpoints-framework</artifactId>            <version>2.0.7</version>        </dependency>        <!-- End of Endpoints Frameworks v2.0 -->        <dependency>            <groupId>com.google.appengine</groupId>            <artifactId>appengine-api-1.0-sdk</artifactId>            <version>1.9.53</version>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>servlet-api</artifactId>            <version>2.5</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>javax.inject</groupId>            <artifactId>javax.inject</artifactId>            <version>1</version>        </dependency>    </dependencies>    <build>        <!-- for hot reload of the web application-->        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>        <plugins>            <plugin>                <groupId>com.google.cloud.tools</groupId>                <artifactId>appengine-maven-plugin</artifactId>                <version>1.3.1</version>                <configuration>                    <!-- deploy configuration -->                </configuration>            </plugin>            <plugin>                <groupId>com.google.cloud.tools</groupId>                <artifactId>endpoints-framework-maven-plugin</artifactId>                <version>1.0.0</version>                <configuration>                    <!-- plugin configuration -->                    <hostname>YOUR-PROJECT-ID.appspot.com</hostname>                </configuration>            </plugin>            <plugin>                <groupId>org.codehaus.mojo</groupId>                <artifactId>versions-maven-plugin</artifactId>                <version>2.1</version>                <executions>                    <execution>                        <phase>compile</phase>                        <goals>                            <goal>display-dependency-updates</goal>                            <goal>display-plugin-updates</goal>                        </goals>                    </execution>                </executions>            </plugin>        </plugins>    </build></project>

之后,我运行此命令mvn clean package来构建项目。然后我运行,mvn appengine:run但出现此错误。
appengine-maven-plugin:1.3.1运行失败,非零退出

我用 -e 重新运行命令,这就是我得到的。

[INFO]   com.google.cloud.tools:appengine-maven-plugin ........ 1.3.1 -> 1.3.2[INFO]   com.google.cloud.tools:endpoints-framework-maven-plugin  1.0.0 -> 1.0.3[INFO][WARNING] The following plugins do not have their version specified:[WARNING]   maven-clean-plugin ........................ (from super-pom) 3.1.0[WARNING]   maven-compiler-plugin ..................... (from super-pom) 3.7.0[WARNING]   maven-deploy-plugin ....................... (from super-pom) 2.8.2[WARNING]   maven-install-plugin ...................... (from super-pom) 2.5.2[WARNING]   maven-resources-plugin .................... (from super-pom) 3.1.0[WARNING]   maven-site-plugin ......................... (from super-pom) 3.7.1[WARNING]   maven-surefire-plugin .................... (from super-pom) 2.21.0[WARNING]   maven-war-plugin .......................... (from super-pom) 3.2.0[INFO][WARNING] Project does not define minimum Maven version, default is: 2.0[INFO] Plugins require minimum Maven version of: 3.0[INFO] Note: the super-pom from Maven 3.5.3 defines some of the plugin[INFO]       versions and may be influencing the plugins required minimum Maven[INFO]       version.[INFO][ERROR] Project does not define required minimum version of Maven.[ERROR] Update the pom.xml to contain[ERROR]     <prerequisites>[ERROR]       <maven>3.0</maven>[ERROR]     </prerequisites>[INFO][INFO] Require Maven 2.0.1 to use the following plugin updates:[INFO]   maven-war-plugin .............................................. 2.0.2[INFO][INFO] Require Maven 2.0.2 to use the following plugin updates:[INFO]   maven-site-plugin ........................................ 2.0-beta-7[INFO][INFO] Require Maven 2.0.6 to use the following plugin updates:[INFO]   maven-clean-plugin .............................................. 2.5[INFO]   maven-deploy-plugin ........................................... 2.8.1[INFO]   maven-install-plugin .......................................... 2.5.1[INFO]   maven-resources-plugin .......................................... 2.6[INFO]   maven-site-plugin ............................................. 2.0.1[INFO]   maven-surefire-plugin ......................................... 2.4.3[INFO]   maven-war-plugin ................................................ 2.4[INFO][INFO] Require Maven 2.0.9 to use the following plugin updates:[INFO]   maven-compiler-plugin ........................................... 3.1[INFO]   maven-surefire-plugin .......................................... 2.17[INFO][INFO] Require Maven 2.1.0 to use the following plugin updates:[INFO]   maven-site-plugin ............................................. 2.1.1[INFO][INFO] Require Maven 2.2.0 to use the following plugin updates:[INFO]   maven-site-plugin ............................................... 3.0[INFO][INFO] Require Maven 2.2.1 to use the following plugin updates:[INFO]   maven-clean-plugin ............................................ 2.6.1[INFO]   maven-compiler-plugin ........................................... 3.3[INFO]   maven-deploy-plugin ........................................... 2.8.2[INFO]   maven-install-plugin .......................................... 2.5.2[INFO]   maven-resources-plugin .......................................... 2.7[INFO]   maven-site-plugin ............................................. 3.7.1[INFO]   maven-surefire-plugin .......................................... 2.20[INFO]   maven-war-plugin ................................................ 2.6[INFO]   org.codehaus.mojo:versions-maven-plugin ......................... 2.2[INFO][INFO] Require Maven 3.0 to use the following plugin updates:[INFO]   maven-clean-plugin ............................................ 3.1.0[INFO]   maven-compiler-plugin ......................................... 3.7.0[INFO]   maven-resources-plugin ........................................ 3.1.0[INFO]   maven-surefire-plugin ........................................ 2.21.0[INFO]   maven-war-plugin .............................................. 3.2.0[INFO]   org.codehaus.mojo:versions-maven-plugin ......................... 2.5[INFO][INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ endpoints ---[INFO] Using ''UTF-8'' encoding to copy filtered resources.[INFO] skip non existing resourceDirectory C:\Users\DELL\Downloads\Test\endpoints\src\test\resources[INFO][INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ endpoints ---[INFO] No sources to compile[INFO][INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ endpoints ---[INFO] No tests to run.[INFO][INFO] --- maven-war-plugin:2.2:war (default-war) @ endpoints ---WARNING: An illegal reflective access operation has occurredWARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields(file:/C:/Users/DELL/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar) to field java.util.Properties.defaultsWARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.FieldsWARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operationsWARNING: All illegal access operations will be denied in a future release[INFO] Packaging webapp[INFO] Assembling webapp [endpoints] in [C:\Users\DELL\Downloads\Test\endpoints\target\endpoints-1.0-SNAPSHOT][INFO] Processing war project[INFO] Copying webapp resources [C:\Users\DELL\Downloads\Test\endpoints\src\main\webapp][INFO] Webapp assembled in [187 msecs][INFO] Building war: C:\Users\DELL\Downloads\Test\endpoints\target\endpoints-1.0-SNAPSHOT.war[INFO] WEB-INF\web.xml already added, skipping[INFO][INFO] <<< appengine-maven-plugin:1.3.1:run (default-cli) < package @ endpoints<<<[INFO][INFO][INFO] --- appengine-maven-plugin:1.3.1:run (default-cli) @ endpoints ---May 10, 2018 6:25:00 AM com.google.cloud.tools.appengine.cloudsdk.CloudSdk logCommandINFO: submitting command: C:\Program Files\Java\jdk-10.0.1\bin\java.exe -javaagent:C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\java\lib\agent\appengine-agent.jar -Dappengine.sdk.root=C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\java -cp C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\java\lib\appengine-tools-api.jar com.google.appengine.tools.development.DevAppServerMain --allow_remote_shutdown --disable_update_check C:\Users\DELL\Downloads\Test\endpoints\target\endpoints-1.0-SNAPSHOT[INFO] GCLOUD: Warning: Google App Engine Java 7 runtime is deprecated.[INFO] GCLOUD: Warning: See https://cloud.google.com/appengine/docs/deprecations/java7[INFO] GCLOUD: java.lang.RuntimeException: Unable to create a DevAppServer[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:352)[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerFactory.access$000(DevAppServerFactory.java:31)[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerFactory$1.run(DevAppServerFactory.java:285)[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerFactory$1.run(DevAppServerFactory.java:282)[INFO] GCLOUD:  at java.base/java.security.AccessController.doPrivileged(NativeMethod)[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:281)[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:348)[INFO] GCLOUD:  at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:45)[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:223)[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:214)[INFO] GCLOUD: Caused by: java.lang.ClassCastException: ClassLoader is jdk.internal.loader.ClassLoaders$AppClassLoader@7591083d, not a URLClassLoader.[INFO] GCLOUD:  at com.google.apphosting.utils.security.SecurityManagerInstaller.generatePolicyFile(SecurityManagerInstaller.java:139)[INFO] GCLOUD:  at com.google.apphosting.utils.security.SecurityManagerInstaller.install(SecurityManagerInstaller.java:94)[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:329)[INFO] GCLOUD:  ... 9 more[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 7.857 s[INFO] Finished at: 2018-05-10T06:25:01+05:00[INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal com.google.cloud.tools:appengine-maven-plugin:1.3.1:run (default-cli) on project endpoints: Execution default-cli of goal com.google.cloud.tools:appengine-maven-plugin:1.3.1:run failed: Non zero exit: 1 -> [Help 1]org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.google.cloud.tools:appengine-maven-plugin:1.3.1:run (default-cli) on projectendpoints: Execution default-cli of goal com.google.cloud.tools:appengine-maven-plugin:1.3.1:run failed: Non zero exit: 1    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke (Method.java:564)    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal com.google.cloud.tools:appengine-maven-plugin:1.3.1:run failed: Non zero exit: 1    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke (Method.java:564)    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)Caused by: com.google.cloud.tools.appengine.api.AppEngineException: Non zero exit: 1    at com.google.cloud.tools.appengine.cloudsdk.process.NonZeroExceptionExitListener.onExit (NonZeroExceptionExitListener.java:30)    at com.google.cloud.tools.appengine.cloudsdk.internal.process.DefaultProcessRunner.syncRun (DefaultProcessRunner.java:211)    at com.google.cloud.tools.appengine.cloudsdk.internal.process.DefaultProcessRunner.run (DefaultProcessRunner.java:137)    at com.google.cloud.tools.appengine.cloudsdk.CloudSdk.runDevAppServer1Command (CloudSdk.java:300)    at com.google.cloud.tools.appengine.cloudsdk.CloudSdkAppEngineDevServer1.run (CloudSdkAppEngineDevServer1.java:131)    at com.google.cloud.tools.maven.RunMojo.runServer (RunMojo.java:286)    at com.google.cloud.tools.maven.RunMojo.execute (RunMojo.java:282)    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke (Method.java:564)    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)[ERROR][ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR][ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionExceptionC:\Users\DELL\Downloads\Test\endpoints>

我了解只有一个错误 项目未定义Maven所需的最低版本。 我在pom中设置了最低版本,但仍然存在相同的错误。

在此之后,我还尝试更新gcloud组件,gcloud components update但无法解决此错误。

我正在使用 JDK10

我还有另一个问题,这个项目是针对 java7 还是针对 java8 。我想在 java8
中运行该项目,这就是为什么要设置它,-Djava8=true但是我不认为该项目是为java8环境创建的,不是吗?如果没有,我该怎么办?

appengine-maven-plugin 错误呢?我该如何解决?而且为什么我会看到此消息, Cloud SDK中
是否有任何问题?或还有其他原因。

答案1

小编典典

如此处所示:

<properties>    <maven.compiler.source>1.7</maven.compiler.source>    <maven.compiler.target>1.7</maven.compiler.target>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>

这是Java 7,因此,如果要使用Java 8运行它,则必须将1.7和1.8的外观都更改为。

appengine-maven-plugin 的错误是您尝试使用Java 7,同时在命令中说要使用Java 8。

docker – 如何使用Jenkins Pipeline插件启用SCM轮询

docker – 如何使用Jenkins Pipeline插件启用SCM轮询

这是一个与How to make SCM polling work with the Jenkins Workflow plugin有关的问题.该线程在SCM轮询启用后会回答如何在流水线脚本中使用SCM轮询,但不涵盖如何启用SCM轮询.

例如,如果您想使用mulit-branch pipeline plugin使用Jenkinsfile自动创建作业,则我没有办法知道在作业中启用“Poll SCM”选项.这使得难以设置按需环境,例如从头开始创建具有作业设置的docker容器.因为您必须登录Jenkins并转到配置,并在容器启动后选择“Poll SCM”选项. Cloudbees提供了一个template plugin来帮助解决这个问题.

然而,这并不适用于Jenkins使用免费版本.对于Jenkins的免费版本,用户是否有任何解决方法或解决方案?

最佳答案

if you wanted to use the multi-branch pipeline plugin to create jobs automatically using a Jenkinsfile there is not a way I kNow of to have the “Poll SCM” option enabled in the job

也没有任何需要. Multibranch项目具有可配置的轮询间隔,用于整个分支索引,也可作为每个分支构建触发器,并且还将自动接收webhooks.

Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目

Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目

Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目

 

前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+jenkins的持续集成环境,并构建了基于maven的项目。这一节,我们继续扩展功能,增加对Nodejs的支持,实现nodejs项目构建、并打包成docker镜像和自动部署。

1. 配置Nodejs环境

1.1 安装nodejs插件

打开系统管理——管理插件——可选插件,搜索NodeJS,选择NodeJS Plugin安装

1.2 配置nodejs 版本

系统管理 —— 全局工具配置 —— NodeJS,选择安装nodejs,选择当前最新版本9.4,命名NodeJS 9.4。

2. 配置项目

2.1 新建项目

新建jenkins项目,选择自由项目,按前文说明配置好SVN、触发器。

在构建环境里,选择Provide Node & npm bin/ folder to PATH,选择我们配置的9.4版本nodejs

2.2 配置构建命令

一般是通过npm命令构建,我们选择增加构建步骤 —— Excute shell,输入构建命令:

alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"
cnpm install cnpm run build

注意,这里为了构建更快,选择通过alias增加cnpm指令,指定使用淘宝的仓库。

2.3 构建docker镜像

由于我们构建出来的已经是可访问的资源了,放在dis目录,所以我们可以基于nginx作为基础镜像。
编写DockerFile:

FROM nginx
ADD ./dist /usr/share/nginx/html
EXPOSE 80

然后,增加构建步骤,ADD build/publish docker image
设置image:192.168.86.8:5000/allinone-web-cicd
勾上push image,会自动push到192.168.86.8:5000仓库
enter description here

2.4 自动部署镜像

和上文一样,这里继续使用ssh实现docker镜像部署。

增加构建步骤,Execute shell script on remote host using ssh:

选择docker swarm的manager机器,输入命令:

docker service rm  allinone-web-cicd
docker service create --name allinone-web-cicd --replicas 1 --publish 10081:80 192.168.86.8:5000/allinone-web-cicd

这次,我们使用docker service来实现部署,先service rm掉老服务,然后create新服务。

3.测试构建

点击立即构建:

enter description here

稍等片刻,就构建成功了;

[SSH] executing...
allinone-web-cicd
mj9dwq00ath03i05b8bfe5plx
overall progress: 0 out of 1 tasks
1/1: overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 1 out of 1 tasks verify: Waiting 5 seconds to verify that tasks are stable... verify: Waiting 5 seconds to verify that tasks are stable... verify: Waiting 5 seconds to verify that tasks are stable... verify: Waiting 5 seconds to verify that tasks are stable... verify: Waiting 5 seconds to verify that tasks are stable... verify: Waiting 4 seconds to verify that tasks are stable... verify: Waiting 4 seconds to verify that tasks are stable... verify: Waiting 4 seconds to verify that tasks are stable... verify: Waiting 4 seconds to verify that tasks are stable... verify: Waiting 4 seconds to verify that tasks are stable... verify: Waiting 3 seconds to verify that tasks are stable... verify: Waiting 3 seconds to verify that tasks are stable... verify: Waiting 3 seconds to verify that tasks are stable... verify: Waiting 3 seconds to verify that tasks are stable... verify: Waiting 3 seconds to verify that tasks are stable... verify: Waiting 2 seconds to verify that tasks are stable... verify: Waiting 2 seconds to verify that tasks are stable... verify: Waiting 2 seconds to verify that tasks are stable... verify: Waiting 2 seconds to verify that tasks are stable... verify: Waiting 2 seconds to verify that tasks are stable... verify: Waiting 1 seconds to verify that tasks are stable... verify: Waiting 1 seconds to verify that tasks are stable... verify: Waiting 1 seconds to verify that tasks are stable... verify: Waiting 1 seconds to verify that tasks are stable... verify: Waiting 1 seconds to verify that tasks are stable... verify: Service converged [SSH] completed [SSH] exit-status: 0 Finished: SUCCESS

这个时候,访问swarm集群的任一http://ip:10081,就可以看到效果了。

docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images

docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images

环境

测试部署主机IP:192.168.1.1
Jenkins主机IP:192.168.1.2 Harbor主机IP:192.168.1.3 Gitlab主机IP:192.168.0.10 系统信息: 系统:CentOS 7.5 内核:4.18.7-1.el7.elrepo.x86_64 Docker版本:18.09 docker-compose版本:1.23.1

有道笔记原文,为了防止复制粘贴出来的代码格式有误~~~~

所有主机的 Docker 安装方式  可用 ansible-roles 快速部署所有主机   https://github.com/gitDream/ansible-roles_jenkins_harbor_gitlab.git

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce

mkdir /etc/docker/
cat << EOF > /etc/docker/daemon.json
{   "registry-mirrors": ["https://registry.docker-cn.com"],
    "live-restore": true,
    "default-shm-size": "128M",
    "max-concurrent-downloads": 10,
    "oom-score-adjust": -1000,
    "debug": false
}   
EOF
systemctl enable docker
systemctl restart docker

安装 Gitlab

  • 参考这篇文章:

    http://blog.51cto.com/bigboss/2129284

  • Docker 方式安装:

    https://github.com/JyBigBoss/docker-compose/blob/master/gitlab/docker-compose.yaml

  • 安装 Harbor

  • 参考:

  • http://blog.51cto.com/bigboss/2316525         
  • docker 配 https registry 私有仓库的重点说明

  •  

    生成 ca 证书  给 harbor 使用
  • openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./server.key -out ./server.crt -subj "/CN=registry.lotbrick.com"

    copydocker 客户端登入 harbor 前导入自制 Ca 证书位置         mkdir -p /etc/docker/certs.d/registry.lotbrick.com        #registry.lotbrick.com  创建域名目录          

    mkdir -p /etc/docker/certs.d/registry.lotbrick.com
    scp ./server.crt  /etc/docker/certs.d/registry.lotbrick.com/ca.crt
  • systemctl daemon-reload
    systemctl restart docker
    docker login
    registry.lotbrick.com

     

                                                                                                                                                     
  • 安装 Jenkins
  • yum install -y python-pip
    pip install docker-compose
    
    cd $HOME && mkdir jenkins && cd jenkins
    wget https://raw.githubusercontent.com/JyBigBoss/docker-compose/master/jenkins/Dockerfile
    wget https://raw.githubusercontent.com/JyBigBoss/docker-compose/master/jenkins/docker-compose.yaml
    
    docker-compose up -d

    Jenkins 需要安装的插件

  • Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication
    Gitlab、Git Parameter、Git Tag Message、Pipeline、docker-build-step、Docker Pipeline

    创建 git 仓库

    • 在 web 页面创建一个 test 仓库,并在在仓库中新建一个 index.html 文件

    • cd $HOME
      git clone git@192.168.0.10:yfg/test.git
      cd test/
      cat << EOF > index.html
      <h1>Test 123</h1>
      EOF
      git add .
      git commit -m ''add index.html''
      git push
      
      #创建两个tag
      git tag v1 -m ''version:1''
      git push --tags
      git tag v2 -m ''version:2''
      git push --tags

        

      Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
      Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
      Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器


      在 Harbor 上创建一个 test 仓库

      Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器


      配置 Jenkins

        • 打开 Jenkins 的设置页面,配置 Publish over SSH 插件

          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

        • 创建一个流水线 (pipeline) 项目

          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

      

      

    node {
      stage('' Git clone '') {
          git branch: ''master'', credentialsId: ''a4a81561-8bc0-426e-89f9-b4d4aa1925d6'', url: ''git@192.168.0.10:yfg/test.git''
          env.check_to_tag="$TAG"
          sh ''[ -n "${check_to_tag}" ] &&  git checkout ${check_to_tag} ||  { echo -e "切换至指定的tag的版本,tag:${check_to_tag} 不存在或为空,请检查输入的tag!" && exit 111; }''
      }
      stage("Create Dockerfile"){
          sh ''''''cat << EOF > Dockerfile
    FROM python:3.7.1-alpine
    RUN mkdir /test
    WORKDIR /test
    COPY ./ /test
    EXPOSE 8000
    CMD ["python","-m","http.server"]
    EOF''''''
          sh ''cat Dockerfile''
      }
      stage("Create docker-compose.yaml "){
          sh ''''''cat << EOF > docker-compose.yaml
    version: "2.4"
    services:
    http:
      image: registry.lotbrick.com/test/http:${check_to_tag}
      container_name: python-http_server
      ports:
        - "80:8000"
      restart: always
    EOF''''''
    
          sh ''cat docker-compose.yaml''
      }
    
      stage(''Build Image And Push to registry'') {
        //withRegistry(''仓库地址'',''jenkins凭据ID'')
        docker.withRegistry(''https://registry.lotbrick.com'', ''9ffa7ef5-38c6-49da-8936-ec596359be56''){
            //build当前目录(workspace)下的Dockerfile
            def BuildImage = docker.build("registry.lotbrick.com/test/http:${check_to_tag}")
            //Push刚才Build出来的镜像
            BuildImage.push()
          }
    }
    stage(''Depoly''){
        //调用Publish Over SSH插件,上传docker-compose.yaml文件并且执行deploy脚本
          sshPublisher(publishers: [sshPublisherDesc(configName: ''jenkins_pipeline_test_deploy'', transfers: [sshTransfer(cleanRemote: false, excludes: '''', execCommand: ''/bin/bash /root/deploy/deploy.sh'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: ''[, ]+'', remoteDirectory: ''/root/deploy'', remoteDirectorySDF: false, removePrefix: '''', sourceFiles: ''docker-compose.yaml'')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
    
    }
    }
      • 生成流水线脚本的方法
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

      • Jenkins 凭据 ID 获取方法
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

      • 发布脚本:depoly.sh:放到要部署代码的主机的 /root/deploy 目录下
      • #!/bin/bash
          echo ''正在更新版本......''
        
          cd /root/deploy
        
          IMAGE_NAME=''registry.lotbrick.com/test/http''
          DOCKER_TAG=`awk -F '':'' ''/.*image/{print $NF}'' docker-compose.yaml`
        
          echo -e "\n"
          docker-compose pull && docker-compose up -d
        
          if [  "$?" == 0 ];then
              echo ''删除旧的image''
              OLD_IMAGE=`docker images | grep $IMAGE_NAME | awk ''{print $2,$3}'' | grep -v "${DOCKER_TAG}" |awk ''{print $1}''`
              for i in $OLD_IMAGE;do
                  docker rmi http:$i
              done
          else
             echo "更新版本失败!!!"
             exit 111
          fi

          

        测试发布

        • 第一次发布

        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

        • 再来一次

        #感觉没玩够,再传个代码测试一回
        
        cd $HOME
        git clone https://github.com/HFIProgramming/mikutap.git
        
        \cp -r mikutap/* test/ cd test git add . git commit -m ''add mikutap page'' git tag v3 -m ''add mikutap page'' git push --tags 

        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

     

我们今天的关于如果Docker Pipeline Plugin withRun命令返回非零退出代码,如何使Jenkins构建失败?的分享已经告一段落,感谢您的关注,如果您想了解更多关于appengine-maven-plugin:1.3.1运行失败,非零退出、docker – 如何使用Jenkins Pipeline插件启用SCM轮询、Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目、docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images的相关信息,请在本站查询。

本文标签: