前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过Jenkins pipeline build Maven项目

通过Jenkins pipeline build Maven项目

作者头像
dhyuan
发布于 2022-05-30 06:29:50
发布于 2022-05-30 06:29:50
1.3K00
代码可运行
举报
文章被收录于专栏:响应式编程响应式编程
运行总次数:0
代码可运行

如之前的文章安装 CoreDNS、GitLab、Jenkins 容器 所述熟悉了基本的容器安装之后就可以配置 Jenkins pipeline 构建基于 maven 的 Java 项目了。

1)安装 JDK 及 Maven

不要通过 apt install 的方式安装,而通过下载 zip 解压的方式安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p /home/devops/dockerSrvStorage/jenkins/tools/
cd /home/devops/dockerSrvStorage/jenkins/tools/
wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz
tar xvzf openjdk-11+28_linux-x64_bin.tar.gz
wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.zip
unzip apache-maven-3.8.1-bin.zip

2)启动 GitLab、Jenkins 容器。

停止并删除旧的 Jenkins, GitLab 容器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker stop jenkins gitlab
docker rm jenkins gitlab

Jenkins 和 GitLab 容器的互联互通至少有下面两种方式。一种是通过先定义出一个 network,然后 Jenkins 和 GitLab 加入这个网络来完成,这时容器间的访问是在 docker 自己内部网络上完成的而与宿主机 IP 无关。。一种是通过外部 DNS Server 完成容器间域名字的解析,这时容器间的访问是通过宿主机的 IP+映射到宿主机的端口完成的。

docker 网络内部互联的方式,如果是跨主机容器间通讯可以通过 overlay 完成。(如果跨主机这种方式,就没有理由不上 K8S 了。)下面是用于在同一宿主机下的命令: 首先创建一个网络:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker network create devopNet

启动 Jenkins 和 GitLab 容器,注意这里通过–net 设定它们的网络都是 devNet

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --detach \
--name jenkins \
--net devopNet \
--hostname jenkins.telbox.cn \
--publish 9183:8080 --publish 9184:50000 \
--restart always \
-v /home/devops/dockerSrvStorage/jenkins:/var/jenkins_home \
jenkins/jenkins:2.277.4-lts-jdk11

docker run --detach \
--name gitlab \
--net devopNet \
--hostname gitlab.telbox.cn \
--publish 9181:443 --publish 9180:80 --publish 9182:22 \
--restart always \
-v /home/devops/dockerSrvStorage/gitlab/config:/etc/gitlab \
-v /home/devops/dockerSrvStorage/gitlab/logs:/var/log/gitlab \
-v /home/devops/dockerSrvStorage/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:13.11.3-ce.0

通过 DNS 来通讯的容器,相当于容器可以使用传入的 DNS 服务,也就可以通过 DNS 中定义的机器名通讯了。这样 jenkins 容器和 gitlab 容器运行在不同的主机,DNS 解析不同宿主机 IP/域名。这种情形, Jenkins 容器 ssh 到非 22 的 GitLab 上(假设 gitlab 容器映射 22 端口到其宿主机的 9182 端口),那么就需要设置 Jenkins 里 ssh config 文件。比如下面的/home/devops/dockerSrvStorage/jenkins/.ssh/config 这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Host gitlab.telbox.cn
    Hostname gitlab.telbox.cn
    Port 9182
    User dhyuan

这样在 jenkins 容器的 ssh 才能默认连接到 gitlab 容器宿主机的 9182 端口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --detach \
--name jenkins \
--dns 192.168.0.114 \
--hostname jenkins.telbox.cn \
--publish 9183:8080 --publish 9184:50000 \
--restart always \
-v /home/devops/dockerSrvStorage/jenkins:/var/jenkins_home \
jenkins/jenkins:2.277.4-lts-jdk11

docker run --detach \
--name gitlab \
--dns 192.168.0.114 \
--hostname gitlab.telbox.cn \
--publish 9181:443 --publish 9180:80 --publish 9182:22 \
--restart always \
-v /home/devops/dockerSrvStorage/gitlab/config:/etc/gitlab \
-v /home/devops/dockerSrvStorage/gitlab/logs:/var/log/gitlab \
-v /home/devops/dockerSrvStorage/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:13.11.3-ce.0

另外,之前使用的 GitLab 容器镜像 gitlab/gitlab-ce:13.9.2-ce.0 的 Integration-Jenkins CI 部分有 bug,换用 gitlab/gitlab-ce:13.11.3-ce.0 后 webhook 就可以工作了。

3)配置 Jenkins 使用 JDK、Maven, 如图:

配置 JDK

配置 Maven

4)通过 ssh-gen 生成 RSA 公私钥对,并配置 Jenkins 和 GitLab

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh-keygen -t rsa -b 2048 -C "Used for dhyuan GitLab"

把生成的私钥通过 Jenkins 界面:Dashboard –> Credentials –> System Global credentials 设置为 GitLab 账号的私钥。

把生成的公钥通过 GitLab 界面进行设置, 如下图:

4)创建一个 Pipeline 项目并以从 GitLab 获取 Jenkinsfile 的形式定义 pipeline。

设置 pipeline 文件来自 git 管理的仓库:

需要注意的是,如果 branch 设置为/master,那么就不要勾选 Lightweight checkout。如果勾选了 Lightweight checkout,可把 branch 设置为/*。

设置 pipeline 可由 GitLab 代码仓库事件触发执行,并在其高级选项中生成 Secret token。

5) 设置当 GitLab 发生 push 等操作来触发 Jenkins Pipeline 运行。

如图设置完毕就可以通过点击测试按钮发送“push”消息来触发 pipeline 的运行了。

以上只是个基本步骤适合小团队环境devops环境的搭建。物质条件较好、人力配置强的工作环境中可基于k8s来做或者直接利用Openshift直接提供的功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 响应式编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
安装CoreDNS、GitLab、Jenkins
在下载 coredns 镜像之前先不要停止 DNS 服务,否则解析不到 docker 镜像仓库服务器。
dhyuan
2022/05/30
6800
Jenkins实现git分支自动合并
示例代码地址:XYJenkinsPipeline: jenkins pipeline脚本 1、自动合并分支, 拉取master -> 打tag -> 合并所有dev分支 (gitee.com)
fisherlee
2022/03/17
2.7K0
还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!
如果你用Gitlab作为Git仓库的话,使用它的CI/CD功能来实现自动化部署确实很不错!安装一个轻量级gitlab-runner,编写简单的.gitlab-ci.yml脚本文件即可实现。其实我们之前以及介绍过很多种自动化部署方案,比如Jenkins、Gogs+Drone、Gitlab CI/CD,我们可以发现一个共同点,这些方案都离不开Linux命令。所以说要想玩转自动化部署,还是得先玩转Linux命令!
macrozheng
2021/07/27
9080
还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!
DevOps整合Jenkins+k8s+CICD
基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。 那么如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DevOps。 DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。 然字面意思只涉及到了开发团队和运维团队,其实QA测试团队也是参与其中的。 网上可以查看到DevOps的符号类似于一个无穷大的符号
IT运维技术圈
2022/10/24
3K1
Linux系统:第十四章:安装Docker,安装配置gitlab私有仓库以及jenkins自动化部署(图文)
#出现[Errno -1] 软件包与预期下载的不符。 建议:运行 yum --enablerepo=updates clean metadata正在尝试其它镜像。使用以下命令
Java廖志伟
2022/03/07
1.3K0
Linux系统:第十四章:安装Docker,安装配置gitlab私有仓库以及jenkins自动化部署(图文)
devops[单节点版本]
DevOps 是 Development(开发)和 Operations(运维)的组合,是 ⼀种⽅法论,是⼀组过程、⽅法与系统的统称,⽤于促进应⽤开发、应2 ⽤运维和质量保障(QA)部⻔之间的沟通、协作与整合,以期打破传 统开发和运营之间的壁垒和鸿沟 CI/CD 的主要概念是持续集成、持续交付和持续部署。 CI/CD 是解决集成新代码可能给开发和运营团队带来的问题(⼜名“集 成地狱”)的解决⽅案。
高大北
2023/03/19
1K0
jenkins教程_1 简介「建议收藏」
我说下我以前开发的痛点,在一些中小型企业,每次开发一个项目完成后,需要打包部署,可能没有专门的运维人员,只能开发人员去把项目打成一个war包,可能这个项目已经上线了,需要把服务关,在部署到服务器上,将项目启动起来,这个时候可能某个用户正在操作某些功能上的东西,如果你隔三差五的部署一下,这样的话对用户的体验也不好,自己也是烦的很,总是打包拖到服务器上。希望小型企业工作人员学习一下,配置可能复杂,但是你配置好了之后,你只需要把代码提交到Git或者Svn上,自动构建部署,非常方便。有任何地方不懂的翻到最下方随时咨询我,想帮助更多的初学者共同一起努力成长!
全栈程序员站长
2022/08/28
7380
jenkins教程_1 简介「建议收藏」
docker安装nginx,gitlab,maven私服,mysql
docker run java 直接进行下载并安装 docker pull java 仅仅下载到镜像 docker images 查看镜像 docker search java 搜索镜像 docker rmi id(从docker images中查找)删除指定镜像 Docker rm 容器id 删除容器id docker pull 下载镜像 docker run 下载并安装镜像 docker ps 查看有哪些镜像正在运行 docker inspect 容器id 查看容器信息 systemctl restart docker 重启docker(如果启动不了docker可以先重启) docker build –t 镜像名称:标签 Dockerfile的相对位置 打成docker的镜像文件 docker info查看docker相关信息 docker inspect 容器ID | grep IPAddress 查看docker的ip地址 docker stop 容器ID 停止某个容器运行 docker exec -it 容器id bash 进入docker //关闭防火墙 systemctl stop firewalld.service //禁用 systemctl disable firewalld.service docker exec -it 容器id /bin/bash 进入容器 docker exec -it 容器name /bin/bash 进入容器 docker rm $(sudo docker ps -a -q) 删除所有未运行的容器 docker search elasticsearch搜索镜像文件 docker run 创建并启动一个容器,在run后面加上-d参数,就是后台启动不加-d就是前台启动 docker ps -a 查看已经创建的容器 docker ps -s查看已经启动的容器 docker start con_name 启动容器名为con_name的容器 docker stop con_name 停止容器名为con_name的容器 docker rm con_name 删除容器名为con_name的容器 docker rename old_name new_name 重命名一个容器 docker lgos --tail="10" 容器名称查询容器日志信息 free -m 查看内存使用容量 docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt Testtomcat是容器名称,test.js是容器的路径,/opt是要复制到宿主机上的路径,容器复制到宿主机 docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js /opt/test.js是宿主机上的文件,/usr/local/tomcat/webapps/test/js是容器中的路径,testtomcat是容器名称 宿主机拷贝到容器 https://www.cnblogs.com/areyouready/p/8973495.html
编程软文
2020/03/11
9270
还在手动部署jar包吗?快速掌握Jenkins安装,教你使用Jenkins实现持续交付
Add post-build step:Send files or execute commands over SSH
攻城狮Chova
2022/01/22
9160
『高级篇』docker之gitlab和jenkins安装(42)
PS:可能有的插件安装不了,不要慌老铁,进入到jenkins的管理页面会提示你更新jenkins更新下,然后插件又可以自动下载安装完毕了。
IT架构圈
2018/12/17
8530
『高级篇』docker之gitlab和jenkins安装(42)
一套基础自动化部署搭建过程
公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列code管理以及自动化部署等工具….所以引发了下面一系列的部署过程,历时两天,中间也是碰到各种问题,但最终把基本工具全部搭建成功,耶~,下面带大家一起看下此次搭建过程。
Bug开发工程师
2020/02/20
7270
一套基础自动化部署搭建过程
微服务[学成在线] day20:项目部署与持续集成(DevOps)
DevOps 是 Development 和 Operations 两个词的缩写,引用百度百科的定义:
LCyee
2020/08/05
2.2K0
微服务[学成在线] day20:项目部署与持续集成(DevOps)
Kubernetes 基于容器云构建devops平台
本文以Kubernetes为基础,为基于java语言研发团队提供一套完整的devops解决方案。在此方案中,开发人员基于eclipse集成开发环境进行代码;开发人员所开发的代码交由由gitlab进行托管、版本管理和分支管理;代码的依赖更新和构建工作由Maven进行处理;为了提升工作效率和代码质量,在devops中引入SonarQube进行代码检查;对于打包构建后代码,交由docker进行镜像构建,并在私有镜像仓库中对镜像进行管理;最后,devops会将自动从私有镜像仓库从拉取镜像,并在Rancher中进行部署。
莲花海
2020/01/03
1.5K0
Kubernetes配合Jenkins实现轻量自动持续集成
之前写的Spinnaker自动化部署,部署复杂,依赖环境多,所以才有这一篇比较轻量级的自动化持续集成,需要用到的环境有Kubernetes-1.23、harbor、Jenkins、Helm、gitlab都是devops常见组件。
王先森sec
2023/04/24
2.9K0
Kubernetes配合Jenkins实现轻量自动持续集成
还在手动部署jar包吗?快速掌握Jekins安装,教你使用jekins的实现持续交付
Jenkins Jenkins: 开源软件项目 基于Java开发的一种持续集成工具 用于监控持续重复的工作 旨在提供一个开放易用的软件平台, 便于软件的持续集成 基于Docker安装Jenkins 与持续集成中的GitLab Runner应该分布在不同的服务器上 创建工作目录: /usr/local/docker/jenkinschown -R 1000 /usr/local/docker/jenkins/dataversion: '3.1' services: jenkins: restart:
攻城狮Chova
2021/09/06
8920
还在手动部署jar包吗?快速掌握Jekins安装,教你使用jekins的实现持续交付
Docker(三) 通过gitlab部署CICD「建议收藏」
1)在上图红圈2部分设置需要跟踪变化的分支,根据上面的选项配置,可以是允许全部分支的变化触发构建,也可以设置只是具体的某些分支触发,这里示例是允许master分支上的变化触发构建。
全栈程序员站长
2022/08/15
2.8K0
Docker(三) 通过gitlab部署CICD「建议收藏」
原 基于Docker搭建Gitlab
安装Docker curl -sSL https://get.docker.com/ | sh 安装Gitlab sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/
霡霂
2018/06/04
2.4K0
基于docker安装jenkins服务的搭建
7.创建完管理员用户后,单击“保存并完成”→“开始使用 Jenkins”,进入 Jenkins 首页
不凡
2021/08/02
1.4K0
基于docker安装jenkins服务的搭建
基于 Github+Jenkins+Maven+Docker 自动化构建部署
传统的开发、测试、部署方式,是由开发人员本机或打包机进行打包,将war包提交给测试人员部署,测试通过后,再由实施人员负责部署到预发、生产环境中。中间的衔接不连贯,容易出错,而且打包、部署存在重复的工作量。自动化构建部署(CICD)就是解决该问题,将从开发到部署的一系列流程变成自动化,衔接连贯,在构建失败时能够告知开发,构建成功后能够告知测试和实施人员。无论大中小公司,都应该有此流程。
DevOps时代
2019/08/21
3.6K0
基于 Github+Jenkins+Maven+Docker 自动化构建部署
Jenkins、Gitlab、Aliyun registry与Docker的自动化CI/CD实战
将/root/.ssh/下的id_rsa.pub新增到gitlab设置-》SSH秘钥。如下图:
分母为零
2019/07/04
1K0
相关推荐
安装CoreDNS、GitLab、Jenkins
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验