jenkins编译java
这篇文章将展示如何使用Jenkins Continuous Integration自动执行Java Web应用程序(使用MYSQL DB和基于Hibernate ORM在基于REST的Jersey2 Spring环境中开发的学生申请应用程序)的发布过程-上载发布工件到发布存储库。 如上一篇文章《在Windows上使用Jenkins自动部署和上传快照Java工件》中所述,只有在将快照工件上载到快照存储库中之后,才能运行使用本文配置的作业。 链接中的“ 使用Jersey REST和Spring一起构建Java Web应用程序”给出的更早的文章对实际应用程序的细节进行了说明。
1.为Github生成SSH密钥(无密码)
Jenkins不支持SSH密钥的密码短语,因此会为Gihub帐户生成SSH密钥而没有密码短语。 请按照“ 生成SSH密钥”下给出的说明进行操作,生成不包含密码的SSH密钥 ,然后上传到Github帐户。
2.强制Jenkins使用SSH密钥以用户身份运行
在Windows上,Jenkins使用其运行用户身份的SSH密钥,该密钥位于C:\ Users <用户名> .ssh下。 因此,Jenkins必须以具有“用户名”的用户身份运行。
在命令提示符下键入“ services.msc”以打开“服务管理”。 右键单击Jenkins服务,然后选择“属性”。
在“ Jenkins属性”窗口中,导航到“登录”选项卡。 选择以“此帐户”身份登录,输入帐户的详细信息(使用“浏览”选项来选择/检查帐户的名称),然后单击“确定”。 帐户凭据通常将与Windows的登录帐户匹配,如下面的快照所示。
保存更改后,通过右键单击Jenkins服务并从“服务管理”重新启动Jenkins服务,然后选择“重新启动”,如下所示
3.安装插件
在Jenkins仪表板上,导航到Manage Jenkins –> Manage Plugins,如下面的快照所示。
安装以下插件,然后重新启动Jenkins,以使更改生效。
- Jenkins发行插件(用于Maven发行)
4.配置系统
在Jenkins仪表板上,导航到Manage Jenkins –> Configure System,如下快照所示。
进入“ Maven版本插件”部分。 启用Nexus-Pro支持,输入Nexus URL,Nexus用户凭据并保存更改。
5.创建一个新的詹金斯工作
在Jenkins仪表板上,单击“新作业”以创建新作业。 输入作业的名称,然后选择“ Build a maven2 / 3 project”作为选项,然后单击OK,如下所示。
在“新作业配置”屏幕上,进入“源代码管理”部分,并为项目指定Git存储库URL,如下所示。 在“其他行为”部分,单击“添加”,然后选择“签出到特定的本地分支”。 输入分支名称为master,然后保存更改。
进入“构建环境”部分,启用“ Maven Release Build”选项并输入发布目标。
进入“构建”部分,输入构建快照的maven目标,如下所示,然后保存更改。
进入“构建设置”部分。 选择“电子邮件通知”选项,然后输入电子邮件收件人的值,如下所示。 保存更改。
6.配置settings.xml
为了将构建的Maven工件上传到工件服务器,请使用相同的参数配置C:\ Program Files(x86)\ Jenkins \ tools \ hudson.tasks.Maven_MavenInstallation \ Maven_3.1 \ conf文件夹中的Jenkins settings.xml。如在系统上的Maven安装的默认settings.xml(通常在Windows计算机的C:\ Program Files \ Apache Software Foundation \ apache-maven-3.1.0 \ conf下找到)中所找到的。
通常,需要在Maven版本的settings.xml中使用httpHeaders配置用于登台存储库的服务器部分。
<servers>
<server>
<id>sonatype-nexus-staging</id>
<username>username</username>
<password>password</password>
<configuration>
<httpHeaders>
<property>
<name>User-Agent</name>
<value>Maven m2Release (java:${java.vm.version} ${env.BUILD_TAG }</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
另外,需要为PGP签名配置一个配置文件部分,有关如何使用Maven生成PGP签名的详细信息,请参见如何在如何使用Maven生成PGP签名中生成密钥对部分。
<profiles>
<profile>
<id>gpg-release</id>
<properties>
<gpg.passphrase>passphrase</gpg.passphrase>
<gpg.useagent>true</gpg.useagent>
<gpg.defaultKeyring>false</gpg.defaultKeyring>
<gpg.homedir>C:/Users/Sara/AppData/Roaming/gnupg</gpg.homedir>
<gpg.publicKeyring>C:/Users/Sara/AppData/Roaming/gnupg/pubring.gpg</gpg.publicKeyring>
<gpg.secretKeyring>C:/Users/Sara/AppData/Roaming/gnupg/secring.gpg</gpg.secretKeyring>
</properties>
</profile>
</profiles>
6.更新pom.xml
需要使用build部分下的以下插件来配置项目的pom.xml文件。
- Maven执行器插件
- Maven发布插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>(,2.1.0),(2.1.0,2.2.0),(2.2.0,)</version>
<message>Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures
and checksums respectively.</message>
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<tagBase>https://github.com/elizabetht/StudentEnrollmentWithREST/tags</tagBase>
<mavenExecutorId>forked-path</mavenExecutorId>
<useReleaseProfile>false</useReleaseProfile>
<arguments>-Psonatype-oss-release</arguments>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
使用maven-gpg-plugin的配置文件部分更新pom.xml
<profiles>
<profile>
<id>sign</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
在pom.xml中添加一个分发管理部分,以指定快照和登台存储库URL。
<distributionManagement>
<repository>
<id>sonatype-nexus-staging</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
<snapshotRepository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
8.立即建立
完成上述配置步骤后,单击Jenkins –> Upload REST Release Artifacts(或相应的Job名称)下的“立即构建”,以根据配置构建项目。
控制台输出包含有关配置已启动哪些步骤以及整个构建结果的详细日志。 验证构建成功。
9.执行Maven发布
一旦构建成功并将快照上传到快照存储库,请单击Jenkins –>上载REST发行工件(或相应的作业名称)下的“执行Maven发行”以开始Maven发行过程。
验证发行版本和下一个开发版本是否正确。 启用“指定自定义SCM注释前缀”以输入自定义SCM注释。 启用“指定自定义SCM标签”以输入自定义SCM标签。 单击Schedule Maven Release Build。
一旦发布过程成功,登台存储库将与发布工件一起上载。
因此,只需通过单击Jenkins的一个按钮,就可以自动完成将工件向暂存库进行正式发布以及触发向收件人发送电子邮件的整个过程。 然后可以通过关闭(如果仍处于打开状态)和发布步骤来使用临时存储库,以完成对工件的升级。
jenkins编译java