打开网易新闻 查看精彩图片

Jenkins Pipeline as script 为我们提供了一种更灵活的方式来创建我们的管道。让我们讨论一下用于构建和部署应用程序的 Jenkins 管道脚本。

在本文中,我们将讨论使用 Jenkins Pipeline 在 Web 服务器上自动化部署应用程序。我们将使用Jenkins Pipeline 作为脚本。Jenkins Pipeline as script 可以分为两种类型:声明式和脚本式。在这里,我们将使用声明式 Jenkins 管道脚本。

打开网易新闻 查看精彩图片

必备知识

  1. Git, GitHub
  2. 使用 Maven 构建 Java 应用程序
  3. 詹金斯
  4. Web 服务器,如 Tomcat、JBoss 等。

如果您是 Jenkins Pipeline 脚本的新手,那么我们建议您先阅读本文。

介绍

在这里,我们将在 Tomcat 之上部署一个示例 Java 应用程序。为了自动化该过程,我们将使用 Jenkins 创建管道。我们将创建一个 Jenkins 管道作为脚本,这有巨大的好处。

使用的工具/技术

  1. 基于 Java 的应用程序——我们正在使用一个简单的 Java 应用程序。
  2. Git——供应链管理工具。
  3. GitHub——我们的源代码在 GitHub 上。
  4. Maven – 我们正在使用 Maven 构建 Java 应用程序。
  5. Jenkins – Jenkins 用作管道工具。
  6. JFrog Artifactory – 我们将构建工件存储在 JFrog Artifactory 中。
  7. Tomcat Web 服务器——我们将在 Tomcat Web 服务器上部署示例 Java 应用程序。
管道框图

有两种选择:

  1. 选项 1:将构建工件推送到存储库,然后从 Tomcat 主机上的存储库下载它。
  2. 选项 2:使用 SCP 将构建工件发送到 Tomcat 主机。
选项 1:将构建工件推送到存储库,然后从 Tomcat 主机上的存储库下载

打开网易新闻 查看精彩图片

在这种情况下,在构建之后,我们将工件推送到存储库并将其下载到 Tomcat 主机上。

选项 2:使用 SCP 将构建工件发送到 Tomcat 主机

打开网易新闻 查看精彩图片

在这种情况下,在构建之后,我们将使用 SCP 将工件发送到 Tomcat 主机。

詹金斯配置

在进入 Jenkins 管道脚本之前,我们需要确保以下配置。

  1. 我们需要在Jenkins的“全局工具配置”(“管理Jenkins→全局工具配置”)中提供JAVA_HOME, 。MAVEN_HOME
  2. 由于我们使用 JFrog Artifactory 来存储构建工件,因此我们使用 Jenkins 配置了 JFrog Artifactory。为此,我们在 Jenkins 中安装了 JFrog 插件,并在“管理 Jenkins → 配置系统”下配置了详细信息。
  3. 在Jenkins服务器上,我们需要生成SSH密钥,需要将Jenkins服务器的公钥放入Tomcat主机中,这样Jenkins就可以免密码连接Tomcat主机了。在 Jenkins 服务器上,我们需要在文件中进行StrictHostKeyChecking noOR 。StrictHostKeyChecking accept-new/etc/ssh/ssh_config

详细信息请关注这篇文章。

Jenkins Pipeline Script下面是 Jenkins 流水线脚本:
pipeline {
agent any
tools {
maven "LocalMVN"
stages {
stage('Checkout') {
steps {
withCredentials([string(credentialsId: 'GitHub_Token', variable: 'github_token')]) {
checkout([$class: 'GitSCM',
branches: [[name: '*/master']],
extensions: [[$class: 'CleanCheckout']],
userRemoteConfigs: [[url: 'https://' + env.github_token + '@' + 'github.com/sk617/simple-java-maven-app.git']]


stage('Build') {
steps {
sh "mvn -Dmaven.test.failure.ignore=true clean package"

stage('Push artifacts into artifactory') {
steps {
rtUpload (
serverId: 'my-artifactory',
spec: '''{
"files": [
"pattern": "*.war",
"target": "example-repo-local/build-files/"



stage('Pull artifacts & deploy on tomcat') {
steps{
withCredentials([usernamePassword(credentialsId: 'my-artifactory-cred',
usernameVariable: 'USERNAME',
passwordVariable: 'PASSWORD')]) {
sh 'ssh ubuntu@149.158.89.34 curl -u ' + USERNAME + ':' + PASSWORD + ' -X GET "Your_JFrog_Artifactory_URL_of_file" --output /opt/tomcat9/webapps/deploy.war'


阶段:Checkout

在这个阶段,源代码将从 GitHub 上获取。如果它是私人仓库,那么我们需要提供凭证。在上面的脚本中,我们提供了凭证。

阶段:Build

在此阶段,将使用 Maven 构建源代码。在构建结束时,它会生成一个 war 文件。

阶段:将工件推入 Artifactory

在此阶段,构建工件被推送到 Artifactory 中。

阶段:拉取工件并部署在 Tomcat 上

在此阶段,工件从 Artifactory 中提取并部署到 Tomcat Web 服务器上。

谢谢你。