Jenkins使用(代码拉取->编译构建->部署上线)

这篇具有很好参考价值的文章主要介绍了Jenkins使用(代码拉取->编译构建->部署上线)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Jenkins简介

Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更重要的业务逻辑实现上。同时Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。


如何配置

配置路线大体可以参考《Jenkins持续集成入门到精通》.pdf

链接:https://pan.baidu.com/s/1lGq0D1NhojqTaqLBnF8LPw 提取码:6666

虚拟机安装Jenkins

  因为Jenkins是java语言写的,所以首先在208机器上配置jdk,版本为11,然后下载配置Jenkins,maven,Git,完全按照《Jenkins持续集成入门到精通》上的可能会有版本过老导致Jenkins上面的可下载插件不兼容的问题,这个时候可以下载新的Jenkins配置一下就可以解决。

详细配置可参考:《Jenkins持续集成入门到精通》中Jenkins安装和持续集成环境配置

Jenkins凭证管理

《Jenkins持续集成入门到精通》上面是集成gitlab,集成云效跟教程里的效果一样,具体操作:

一、点击红框处

Jenkins使用(代码拉取->编译构建->部署上线)

二、

Jenkins使用(代码拉取->编译构建->部署上线)

三、

Jenkins使用(代码拉取->编译构建->部署上线)

四、

Jenkins使用(代码拉取->编译构建->部署上线)

五、在下面具体配置:

Jenkins使用(代码拉取->编译构建->部署上线)

类型我们一般选择HTTPS账户密码类型的或者ssh类型的(在项目中我是用的HTTPS类型的)

Jenkins使用(代码拉取->编译构建->部署上线)

范围默认就行

用户名和密码需要填写(取自云效)

1、点击个人设置
Jenkins使用(代码拉取->编译构建->部署上线)

2、设置账户密码

Jenkins使用(代码拉取->编译构建->部署上线)

3、回到第五步,将账户密码设置上去点击创建即可。

ID、描述可以不写

六、至此,你的就会保存,同时生成唯一标识。

测试凭证是否通过:可继续参考 《Jenkins持续集成入门到精通》-> 持续集成环境(4)

Maven配置

参考**《Jenkins持续集成入门到精通》-> 持续集成环境(5)-Maven安装和配置**

pipeline流水线

在此次平台建设过程中,我们需要对项目进行CICD,可以使用流水线来对项目进行自动拉取,构建,部署。

pipeline使用方式可直接参考:《Jenkins持续集成入门到精通》->Jenkins项目构建类型(4)-Pipeline流水线项目构建


具体使用

下面我利用Jenkins结合ns-service-support-user微服务进行持续集成部署操作。

第一步、部署前,需要在项目中添加相关依赖以及文件。

1、springboot项目打包

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.6</version>
</plugin>

2、添加dockerfile-maven-plugin依赖,添加此依赖后,可以通过dockerfile编译生成镜像

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.3.6</version>
    <configuration>
        <repository>${project.artifactId}</repository>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
            <PRO_NAME>${project.build.finalName}</PRO_NAME>
        </buildArgs>
    </configuration>
</plugin>

3、当前项目根目录添加dockerfile文件(把当前项目jar包生成docker镜像)

FROM openjdk:11
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
COPY ./lib/skywalking-agent.jar ./lib/skywalking-agent.jar
EXPOSE 8098
ENTRYPOINT ["java","-javaagent:./lib/skywalking-agent.jar","-Dskywalking.agent.service_name=","-Dskywalking.collector.backend_service=192.168.192.168.xxx.xxx:11800","-jar","/app.jar"]

4、当前项目根目录添加Jenkinsfile文件对应Jenkins流水线

node {
   stage('拉取代码') {
      checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]])
      echo "拉取完成"
}
stage('编译构建') {
def code = sh (
    script: "docker ps | grep ${Microservices}",
    returnStatus: true
)
// code 为0 代表 grep 找到 了 ${Microservices} 相关 的 container
if (code==0){
//首先停止并删除一个容器x
    sh ("docker ps -f name=${Microservices} -q | xargs --no-run-if-empty docker container kill")
    sh ("docker ps -f name=192.168.xxx.xxx:5000/${Microservices} -q | xargs --no-run-if-empty docker container kill")
    sh ("sleep 10s")
    sh ("docker container ls -a -f name=${Microservices} -q | xargs -r docker container rm -f")
    sh ("docker container ls -a -f name=192.168.xxx.xxx:5000/${Microservices} -q | xargs -r docker container rm -f")
    sh ("sleep 10s")
//删除镜像
//    sh ("docker rmi ${Microservices}")
    sh ("docker rmi -f 192.168.xxx.xxx:5000/${Microservices}")
}
//调用当前微服务dockerfile
sh label: '', script: 'mvn clean package -e -X -U dockerfile:build'
sh "/mydata/hostmachine_jenkins/version/version_up.sh ${Microservices} ${NEW_VERSION}"
def PROJECT_VERSION = readFile "/mydata/hostmachine_jenkins/version/${Microservices}"
// def NEW_VERSION="${PROJECT_VERSION}"
//将当前进镜像名修改为192.168.192.168.xxx.xxx:5000/${Microservices}:${NEW_VERSION}
sh ("docker tag ${Microservices}:latest 192.168.192.168.xxx.xxx:5000/${Microservices}:${PROJECT_VERSION}")
//push到私有仓库中
sh ("docker push 192.168.192.168.xxx.xxx:5000/${Microservices}:${PROJECT_VERSION}")
echo "构建完成"
}
stage('部署上线'){
//sh "docker run -d --net=swarm-test --name ${Microservices} -p ${port}:${port} ${Microservices}"
//sh ("docker stack deploy --compose-file=/mydata/hostmachine_jenkins/jenkins_deploy.yml api")
def PROJECT_VERSION = readFile "/mydata/hostmachine_jenkins/version/${Microservices}"
//按行读取
def lines = PROJECT_VERSION.split("\n")[0]
echo "$lines"
sh "docker service update --image 192.168.192.168.xxx.xxx:5000/${Microservices}:${lines} qa_${Microservices}"
echo "部署完成"
sh ("sleep 10s")
sh ("java -jar /mydata/hostmachine_jenkins/dingding.jar jenkins ${deployer}${publishTime}${Microservices}模块更新至${lines},部署已完成")
}
}

新建任务,选择流水线项目

Jenkins使用(代码拉取->编译构建->部署上线)

创建完毕会跳到configuration配置界面,点击流水线,

定义选择pipeline script from SCM

Repository URL复制云效上项目的HTTPS

Jenkins使用(代码拉取->编译构建->部署上线)
Jenkins使用(代码拉取->编译构建->部署上线)

Credentials选择之前创建的全局凭证

Jenkins使用(代码拉取->编译构建->部署上线)

指定分支写上你需要用的

继续往下滑,会看到脚本路径这个参数,这个就是对应你项目上的Jenkinsfile文件

Jenkins使用(代码拉取->编译构建->部署上线)

继续

点击General,选择参数化构建过程并点击添加参数

Jenkins使用(代码拉取->编译构建->部署上线)

添加凭据参数

Jenkins使用(代码拉取->编译构建->部署上线)

添加选项参数(这个只针对当前项目其实可以在项目中写死就够了)

Jenkins使用(代码拉取->编译构建->部署上线)

添加文本参数

Jenkins使用(代码拉取->编译构建->部署上线)

添加选项参数(同样只针对当前项目可以写死)

Jenkins使用(代码拉取->编译构建->部署上线)

添加port,对应项目中的port

Jenkins使用(代码拉取->编译构建->部署上线)

添加部署人员,方便知道当前是谁部署了项目

Jenkins使用(代码拉取->编译构建->部署上线)

添加时间参数,对应钉钉消息提示

Jenkins使用(代码拉取->编译构建->部署上线)

添加版本号,手动输入更迭版本号

Jenkins使用(代码拉取->编译构建->部署上线)

以上的参数就是对应的Jenkinsfile文件中的${***},当点击构建的时候对应的参数就会映射到Jenkinsfile文件中。

构建触发器,作用是自动出发构建项目

Jenkins使用(代码拉取->编译构建->部署上线)

使用方式请直接参考:《Jenkins持续集成入门到精通》->Jenkins项目构建细节(1)-常用的构建触发器

设置好后,可以先点击应用然后保存

进入自己创建的项目,界面如下:

Jenkins使用(代码拉取->编译构建->部署上线)

点击build with parameter,选择或者填写对应的参数

Jenkins使用(代码拉取->编译构建->部署上线)

PROJECT_VERSION项目版本号参数如果不知道上一个版本,我们可以到portainer中查看对应的服务后缀,此后缀就是对应的当前正在运行的项目版本号。

Jenkins使用(代码拉取->编译构建->部署上线)

此时PROJECT_VERSION可以设为1.0.5

Jenkins使用(代码拉取->编译构建->部署上线)

所有参数设置好后,点击开始构建按钮,等待他构建完成

Jenkins使用(代码拉取->编译构建->部署上线)

正常情况下会全流程走完,如下:

Jenkins使用(代码拉取->编译构建->部署上线)

可以悬停在对应位置并点击logs查看当前流程的日志

Jenkins使用(代码拉取->编译构建->部署上线)

或者可以点击console output查看全流程日志

Jenkins使用(代码拉取->编译构建->部署上线)

验证:

部署成功会有消息提醒

Jenkins使用(代码拉取->编译构建->部署上线)

这个时候看portainer中的服务列表,可以看到服务正在运行,而且版本已经从1.0.4升级到1.0.5了

Jenkins使用(代码拉取->编译构建->部署上线)

访问当前服务的验证接口,查看是否能正常访问

Jenkins使用(代码拉取->编译构建->部署上线)

异常情况会在某个阶段爆红,这时候就需要查看日志定位具体报错位置具体解决了

Jenkins使用(代码拉取->编译构建->部署上线)

笔记:

添加定时任务脚本:/mydata/hostmachine_jenkins/images_clean.sh(208位置),定时每天10/12/14三个时间段清除虚悬镜像以及当前项目之前版本未使用的镜像

添加版本自增脚本:/mydata/hostmachine_jenkins/version_up1.sh(208位置),当点击部署的时候,自动增加当前项目版本号,并且对部署的服务进行版本号赋值。
Jenkins使用(代码拉取->编译构建->部署上线)文章来源地址https://www.toymoban.com/news/detail-436778.html

到了这里,关于Jenkins使用(代码拉取->编译构建->部署上线)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • docker启动的jenkins拉取gitee项目构建并部署

    docker启动的jenkins拉取gitee项目构建并部署

    https://hub.docker.com/r可以search不同的jenkins版本 docker pull jenkins/jenkins 创建挂载目录 /home/jenkins_home 加权限 chmod 777 /home/jenkins_home docker run -di --name=jenkins -p 9999:8080 -v /home/jenkins_home:/var/jenkins_home jenkins/jenkins:latest 参数解读 7.打开浏览器访问jenkins localhost:9999 7. 可直接访问宿主机的目

    2024年02月11日
    浏览(6)
  • Jenkins自动拉取SVN源代码构建打包vue前端项目

    Jenkins自动拉取SVN源代码构建打包vue前端项目

    目录 1.功能需求 2.安装插件 2.1 安装NodeJS插件 2.2  安装SVN插件 3.配置环境 3.1  NodeJS环境 4.新建任务配置部署信息 4.1  源代码管理 4.2  构建触发器 4.3  构建环境  4.4  构建步骤 5.构建项目  5.1 点击查看控制台日志 使用Jenkins从SVN上拉取Vue项目进行自动构建打包。如果需要发

    2023年04月22日
    浏览(7)
  • jenkins 2.346.1 从git拉取后自动构建部署springboot maven项目

    jenkins 2.346.1 从git拉取后自动构建部署springboot maven项目

    1、jenkins官网下载 jenkins2.346.1版本(2.346之后不支持java8) Jenkins 的安装和设置 下载的war包通过 java -jar jenkins.war可运行 也可下载安装版本直接安装 http://localhost:8080,端口号8080根据安装时的设定进行对应的变更,安装后需要等待一段时间。 确认发布应用的服务器安装了java g

    2024年02月02日
    浏览(6)
  • Jenkins自动化部署-GitLab拉取代码 配置ssh代码拉去方式的密钥(公私钥)

    Jenkins自动化部署-GitLab拉取代码 配置ssh代码拉去方式的密钥(公私钥)

    Jenkins想要通过ssh方式拉去gitlab代码,则需要在在Jenkins服务器配置私钥,gitlab服务器配置公钥 使用root用户生成公钥和私钥 在/root/.ssh/目录保存了公钥和使用 id_rsa:私钥文件 id_rsa.pub:公钥文件 把生成的公钥放在Gitlab中 以root账户登录-点击头像-Settings-SSH Keys 复制刚才id_rsa.pu

    2024年04月10日
    浏览(21)
  • Jenkins+Gitlab实现代码自动构建部署

    Jenkins+Gitlab实现代码自动构建部署

    一、环境准备 主机名 ip 安装软件 jenkins 192.168.75.149 jenkins gitlab 192.168.75.147 gitlab web 192.168.75.155 部署应用 二、jenkins服务器配置 1、生产公钥 (2)获取公钥信息 公钥信息在配置 Gitlab SSH Keys 时用到。 (3)获取私钥信息 私钥信息在配置 Jenkins Publish over SSH 时用到。 (4)复制公

    2024年02月16日
    浏览(8)
  • Jenkins 中部署Nodejs插件并使用,并构建前端项目(3)

    Jenkins 中部署Nodejs插件并使用,并构建前端项目(3)

    遇到多个版本nodeJS需要构建的时候 1、第一种就是一个配置安装,然后进行选中配置 2、第二种就是插件:nvm-wrapper,我们还是选用NodeJS插件: (1)可以加载任意npmrc文件; (2)与Jenkins结合紧密,封装少,项目相对活跃; (3)功能丰富,可全局安装模块。 这里的路径,要把

    2024年02月22日
    浏览(8)
  • Gitee+Jenkins+SonarQube代码上线的实战

    Gitee+Jenkins+SonarQube代码上线的实战

    image.png image.png 提示: 该公司的Java业务项目比较多的话,可以单独安装nexus。 如果不多可以使用阿里云的私服器。 1、安装JDK运行环境 和 Jenkins服务 2、Maven服务 3、部署私服 Nexus (可选) 下载地址:https://www.sonatype.com/download‐oss‐sonatype 配置仓库两个选项 1、项目下的pom.xml配置

    2024年01月22日
    浏览(8)
  • gitlab部署及整合Jenkins持续构建(四)sonarqube9.9安装和使用(一步一坑)

    gitlab部署及整合Jenkins持续构建(四)sonarqube9.9安装和使用(一步一坑)

    官网给出的各种环境下安装postgresql步骤:https://www.postgresql.org/download/ 以 CentOS7 + jdk17 为例: yum安装完,默认的pgsql-13的数据目录在 /var/lib/pgsql/13/data/ 除非 /var 目录可用空间很大,否则需要修改数据目录 记录配置文件路径,修改 listen_addresses = \\\'*\\\' ,postgresql启动参数 定义哪些

    2024年02月02日
    浏览(11)
  • Jenkins Pipeline checkout scm拉取代码

    Jenkins的pipeline实践之GitSCM参数配置项详解原创

    2024年02月12日
    浏览(6)
  • Java 在线编程编译工具上线,直接运行Java代码

    Java 在线编程编译工具上线,直接运行Java代码

    大家好,我是小哈~ 周末没出去浪,花了点时间,在我的个人网站上线了一款小工具。啥工具呢?一款可以在线编译 Java 代码并运行输出结果的小工具。 大家都知道,甲骨文刷 Java 版本号非常积极,这不上个月 20 版本又来了。 你发任你发,我用 Java 8。狗头~ 每次发布新版本

    2024年02月11日
    浏览(6)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包