桂林论坛网网站电话,电子商务网站建设与电子支付,北京网站建设 seo公司哪家好,开发app和做网站1.背景 在实际开发中#xff0c;我们经常要一边开发一边测试#xff0c;当然这里说的测试并不是程序员对自己代码的单元测试#xff0c;而是同组程序员将代码提交后#xff0c;由测试人员测试#xff1b; 或者前后端分离后#xff0c;经常会修改接口#xff0c;然后重新…1.背景 在实际开发中我们经常要一边开发一边测试当然这里说的测试并不是程序员对自己代码的单元测试而是同组程序员将代码提交后由测试人员测试 或者前后端分离后经常会修改接口然后重新部署 这些情况都会涉及到频繁的打包部署 手动打包常规步骤 1.提交代码 2.问一下同组小伙伴有没有要提交的代码 3.拉取代码并打包war包或者jar包 4.上传到Linux服务器 5.查看当前程序是否在运行 6.关闭当前程序 7.启动新的jar包 8.观察日志看是否启动成功 9.如果有同事说自己还有代码没有提交......再次重复1到8的步骤一上午没了 那么有一种工具能够实现将代码提交到git后就自动打包部署勒答案是肯定的Jenkins 当然除了Jenkins以外也还有其他的工具可以实现自动化部署如Hudson等 只是Jenkins相对来说使用得更广泛 1. jenkins
1.1 什么是jenkins jenkins就是持续开发部署得软件 1.2.Jenkins自动化部署实现原理 yum install -y curl policycoreutils-python openssh-server perl postfix systemctl enable --now sshd postfix rpm -ivh gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm vim /etc/gitlab/gitlab.rb external_url http://192.168.50.25:82 nginx[listen_port] 82 gitlab-ctl reconfigure gitlab-ctl restart 浏览器访问http://192.168.50.25:82 如果显示 502稍等片刻再刷新 1、设置管理员 root 用户的新密码注意有格式要求这里设置成 root123 2、使用管理员 root 用户登录root/root123 3、登录后点击页面右上方的用户选项下拉选择【Settings】点击左边菜单【Preferences】在【Localization】的【Language】中选择【简体中文】点击【Save changes】按钮再刷新页面使用中文显示。 //Gitlab添加组、创建用户、创建项目 #创建群组 点击页面左上方的【GitLab】图标点击 【新建群组】 【群组名称】、【群组URL】、【群组描述】都设置成 devops_group 【可见性级别】设置成 私有 其他都保持默认值点击 【创建群组】 #创建项目 点击 【新建项目】 【项目URL】群组选项下拉选择 devops_group 【项目名称】设置成 web_demo 【项目描述】设置成 web_demo 【可见等级】设置成 私有 点击 【创建项目】 #创建用户 点击页面上方的【扳手】图标进入“管理区域” 点击 【新建用户】 【姓名】设置成 zhangsan 【用户名】设置成 zhangsan 【电子邮箱】设置成 zhangsankgc.com 这里密码暂不设置其他都保持默认值先点击 【创建用户】 注Access levelRegular表示的是普通用户只能访问属于他的组和项目Admin表示的是管理员可以访问所有组和项目 创建好用户后再点击右上角的【Edit】可在这里设置密码如 zhangsan123 #将用户添加到组中 点击页面上方的【群组】下拉选择 devops_group 点击左边菜单【成员】 【添加成员到 devops_group】选择 zhangsan角色权限选择 Owner 点击 【添加到群组】 #使用自己创建的账户进行管理 退出当前账户使用自己创建的账户 zhangsan 登录zhangsan/zhangsan123 第一次登录会被强制要求修改密码zhangsan/zhangsan123可与旧密码相同再重新登录 //Jenkins安装 #安装JDK tar zxvf jdk-11.0.5_linux-x64_bin.tar.gz -C /usr/local/ vim /etc/profile export JAVA_HOME/usr/local/jdk-11.0.5 export CLASSPATH.:${JAVA_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH source /etc/profile java -version #安装jenkins wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install epel-release -y yum install jenkins -y 或者直接用下载好的安装包
yum localinstall -y jenkins-2.401.2-1.1.noarch.rpm #修改 jenkins 的运行用户和监听端口 vim /etc/sysconfig/jenkins JENKINS_USERroot JENKINS_PORT8888 ##新版本的 jenkins 还要在 /usr/lib/systemd/system/jenkins.service 文件中修改用户名和端口 vim /usr/lib/systemd/system/jenkins.service Userroot Grouproot EnvironmentJAVA_HOME/usr/local/jdk-11.0.5 注释去掉 EnvironmentJENKINS_PORT8888 #修改 jenkins 的启动脚本添加java路径 vim /etc/init.d/jenkins candidates ...... /usr/local/jdk-11.0.5/bin/java /usr/bin/java systemctl daemon-reload systemctl start jenkins systemctl enable jenkins vim /var/lib/jenkins/hudson.model.UpdateCenter.xml urlhttps://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json/url sed -i s#https://www.google.com#https://www.baidu.com# /var/lib/jenkins/updates/default.json http://192.168.50.25:8888 systemctl restart jenkins
浏览器访问http://192.168.50.25:8888 获取并输入 admin 账户密码 要安装git插件从gitlab仓库拉取代码 点击用户名下拉选择凭据 - Jenkins 全局 - 添加凭据 类型选择 Username with password 输入 Gitlab 的用户名和密码zhangsan/zhangsan123描述输入 gitlab-auth-password 点击 确定。 创建一个FreeStyle项目新建Item - 任务名称test01 FreeStyle Project - 确定 源码管理选择 GitRepository URLhttp://192.168.80.10:82/devops_group/web_demo.git可从 Gitlab 使用 HTTP 克隆 Credentials 下拉选择 gitlab-auth-password点击 保存。
点击 Bulid Now 开始构建查看控制台输出可以看到构建成功构建后的包会生成在服务器的 /var/lib/jenkins/workspace/test01 目录中。 //Jenkins 构建 Maven 项目
Maven 是一个主要用于 Java 项目的自动化构建工具。Maven 还可以用来构建和管理用 C#、Ruby、Scala 和其他语言开发的项目。 #在 Jenkins 服务器上安装 Maven 来编译和打包项目 cd /opt tar -zxvf apache-maven-3.6.2-bin.tar.gz mv apache-maven-3.6.2 /usr/local/maven vim /etc/profile ...... export MAVEN_HOME/usr/local/maven export PATH$MAVEN_HOME/bin:${JAVA_HOME}/bin:$PATH source /etc/profile mvn -v #Jenkins 关联 JDK 和 Maven tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
Manage Jenkins - Global Tool Configuration - JDK 点击 新增JDK别名输入 jdk11取消勾选 Install automaticallyJAVA_HOME输入 /usr/local/jdk-11.0.5 点击 新增JDK别名输入 jdk1.8取消勾选 Install automaticallyJAVA_HOME输入 /usr/local/jdk1.8.0_171 - Maven 点击 新增MavenName输入 maven3取消勾选 Install automaticallyMAVEN_HOME驶入 /usr/local/maven 点击 应用和保存。
#添加 Jenkins 全局变量让 Jenkins 能够识别 JDK 和 Maven 环境的命令 Manage Jenkins - Configure System - 全局属性勾选 Environment variables 键值对列表添加键 JAVA_HOME 值 /usr/local/jdk-11.0.5 键 M2_HOME 值 /usr/local/maven 键 PATHEXTRA 值 $M2_HOME/bin #修改 Maven 的 settings.xml mkdir /root/repo #创建本地仓库目录
vim /usr/local/maven/conf/settings.xml 54 -- #本地仓库改为 /root/repo/ localRepository/root/repo/localRepository
153 -- #添加阿里云私服地址 mirror idalimaven/id mirrorOfcentral/mirrorOf namealiyun maven/name urlhttp://maven.aliyun.com/nexus/content/groups/public//url /mirror /mirrors //Tomcat 安装和配置 #安装 Tomcat8.5 tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
vim /etc/profile export JAVA_HOME/usr/local/jdk1.8.0_171 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
source /etc/profile
tar zxvf apache-tomcat-9.0.16.tar.gz
mv /opt/apache-tomcat-9.0.16/ /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
//配置 Tomcat 用户角色权限 默认情况下 Tomcat 是没有配置用户角色权限的 验证方法可浏览器访问 http://192.168.80.12:8080 点击 Managing Tomcat 下的 manager webapp 发现返回 403 页面。 但是后续 Jenkins 部署项目到 Tomcat 服务器需要用到 Tomcat 的用户进行远程部署所以修改 tomcat 以下配置添加用户及权限 vim /usr/local/tomcat/conf/tomcat-users.xml 43 -- #添加 tomcat 用户角色权限指定用户和密码都是 tomcat 并授予权限 role rolenametomcat/ role rolenamerole1/ role rolenamemanager-script/ role rolenamemanager-gui/ role rolenamemanager-status/ role rolenameadmin-gui/ role rolenameadmin-script/ user usernametomcat passwordtomcat rolesmanager-gui,manager-script,tomcat,admin-gui,admin-script/ /tomcat-users vim /usr/local/tomcat/webapps/manager/META-INF/context.xml !-- #注释掉 Valve 配置 Valve classNameorg.apache.catalina.valves.RemoteAddrValve allow127\.\d\.\d\.\d|::1|0:0:0:0:0:0:0:1 / -- /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh 再次访问http://192.168.80.12:8080/manager/html 输入账号/密码 tomcat/tomcat即可成功登录 再次登录 //Jenkins 构建 Maven 项目
//自由风格项目构建
项目的集成过程拉取代码 - 编译 - 打包 - 部署
#拉取代码
新建item - 任务名称web_demo_freestyle FreeStyle Project - 确定 源码管理选择 GitRepository URLgit192.168.80.10:devops_group/web_demo.git Credentials 下拉选择 gitlab-auth-ssh点击 保存 点击 Build Now尝试构建项目 #编译打包
配置 — 构建 - 添加构建步骤 - Execute Shell输入以下命令 echo 开始编译和打包 mvn clean package echo 编译和打包结束 点击 Build Now尝试构建项目
#把项目部署到远程的 Tomcat 里面
1安装 Deploy to container 插件 Jenkins 本身无法实现远程部署到 Tomcat 的功能需要安装 Deploy to container 插件实现 Manage Jenkins - 管理插件-可选插件 - 搜索 Deploy to container 插件选中直接安装即可
2添加构建后操作 配置 — 构建后操作 - 增加构建后操作步骤 - Deploy war/ear to a container WAR/EAR files 输入 target/*.war Containers — Add Container — Tomcat 9.x Remote - Credentials点击添加 - Jenkins 用户名 输入 tomcat密码 输入 tomcat描述 输入 tomcat-auth点击添加 Credentials 下拉选择 tomcat-auth Tomcat URL 输入 http://192.168.80.12:8080 点击保存 点击 Build Now尝试构建项目
3部署成功后刷新 http://192.168.80.12:8080/manager/html 页面可以发现应用程序中多出一个项目点击新项目进去访问 //Pipeline 流水线项目构建
Pipeline 脚本是由 Groovy 语言实现的但是我们没必要单独去学习 Groovy Pipeline 支持两种语法Declarative声明式和 Scripted Pipeline脚本式语法
#安装 Pipeline 插件推荐的插件已默认安装 Manage Jenkins - Manage Plugins - 可选插件 – 安装 Pipeline 和 Pipeline Stage View #Pipeline 语法快速入门 1Scripted 脚本式 Pipeline 新建item - 任务名称web_demo_pipeline Pipeline - 确定
流水线 - 定义 选择 Pipeline script - 选择 Scripted Pipeline 生成内容如下 node { def mvnHome stage(Preparation) { // for display purposes // Get some code from a GitHub repository git https://github.com/jglick/simple-maven-project-with-tests.git // Get the Maven tool. // ** NOTE: This M3 Maven tool must be configured // ** in the global configuration. mvnHome tool M3 } stage(Build) { // Run the maven build withEnv([MVN_HOME$mvnHome]) { if (isUnix()) { sh $MVN_HOME/bin/mvn -Dmaven.test.failure.ignore clean package } else { bat(/%MVN_HOME%\bin\mvn -Dmaven.test.failure.ignore clean package/) } } } stage(Results) { junit **/target/surefire-reports/TEST-*.xml archiveArtifacts target/*.jar } }
●Node节点一个 Node 代表一个 Jenkins 节点Master 或者 Agent 节点是执行 Step 的具体运行环境后续讲到 Jenkins 的 Master-Slave 架构的时候用到。 ●Stage阶段一个 Pipeline 可以划分为若干个 Stage每个 Stage 代表一组操作比如Build、Test、DeployStage 是一个逻辑分组的概念。 ●Step步骤Step 是最基本的操作单元可以是打印一句话也可以是构建一个 Docker 镜像由各类 Jenkins 插件提供 比如命令sh make就相当于我们平时 shell 终端中执行 make 命令一样。
编写一个简单的脚本式 Pipeline node { def mvnHome stage(拉取代码) { echo 拉取代码 } stage(编译构建) { echo 编译构建 } stage(项目部署) { echo 项目部署 } }
2Declarative 声明式 Pipeline 流水线 - 选择 HelloWorld 模板 生成内容如下 pipeline { agent any stages { #stages代表整个流水线的所有执行阶段。通常stages只有1个里面包含多个stage stage(Hello) { #stage代表流水线中的某个阶段可能出现n个。一般分为拉取代码编译构建部署等阶段 steps { #steps代表一个阶段内需要执行的逻辑。steps里面是shell脚本git拉取代码ssh远程发布等任意内容 echo Hello World } } } }
编写一个简单声明式Pipeline pipeline { agent any stages { stage(拉取代码) { steps { echo 拉取代码 } } stage(编译构建) { steps { echo 编译构建 } } stage(项目部署) { steps { echo 项目部署 } } } } 点击保存 点击 Build Now查看 Console Output 可以看到整个构建过程
#使用代码生成器生成流水线脚本 流水线 - 流水线语法 - 片段生成器
#生成一个 pull stage 选择 checkout: Check out from version control SCM 选择 GitRepository URLgit192.168.80.10:devops_group/web_demo.git Credentials 下拉选择 gitlab-auth-ssh 指定分支 */master 点击 生成流水线脚本 把生成的脚本复制到流水线中后点击保存尝试构建
#生成一个构建 stage 选择 shShell Script Shell Script 输入 mvn clean package 点击 生成流水线脚本 把生成的脚本复制到流水线中后点击保存尝试构建
#生成一个部署 stage 选择 deploy: Deploy war/ear to a container WAR files 输入 targer/*.war Containers — Add Container — Tomcat 8.x Remote - Credentials 下拉选择 tomcat-auth Tomcat URL 输入 http://192.168.80.12:8080 点击 生成流水线脚本 把生成的脚本复制到流水线中后点击保存尝试构建部署。