Jenkins
创建目标文件夹
$ cd /usr/local
$ mkdir docker
$ cd docker
$ mkdir jenkins
$ cd jenkins
$ vi docker-compose.yml
创建docker-compose.yml
内容如下:
version: '3.1'
services:
jenkins:
restart: always
image: jenkins/jenkins
container_name: jenkins
ports:
# 发布端口
- 8080:8080
# 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信
- 50000:50000
environment:
TZ: Asia/Shanghai
volumes:
- ./data:/var/jenkins_home
安装过程中会出现数据卷目录权限问题,用以下命令解决:
chown -R 1000 /usr/local/docker/jenkins/data
启动容器
docker-compose up -d
启动完成后访问:http://ip:8080
。
解锁 Jenkins
Jenkins
第一次启动时需要输入一个初始密码用以解锁安装流程,使用 docker logs jenkins
即可方便的查看到初始密码。也可以根据提示在容器中查看/var/jenkins_home/secrets/initialAdminPassword
文件。
docker logs -f jenkins
*************************************************************
*************************************************************
*************************************************************Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:67b9966bc4334a17ad7a7daef043bac8
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
插件安装
插件是 Jenkins
的核心,其丰富的插件可以满足不同人群的不同需求。
Jenkins
官网插件地址:https://plugins.jenkins.io/
输入初始密码后,选择自选方式安装插件。
注意:除了默认勾选的插件外,一定要勾选 Publish over SSH
插件,这是我们实现持续交付的重点插件。
点击安装后,根据网络情况,安装时间不一样,耐性等待即可。
出现部分插件安装失败时,点击重试按钮,多次重试,如果还是无法安装,记住这些插件的名字,稍后可以手动安装。
安装成功效果图 创建管理员账号
进入首页
Jenkins手动安装插件
如下例子为安装中文插件
Manage Jenkins
-> Manage Plugins
-> Avaliable
右上角搜索框查找想要安装的插件,选中,点击Download now and install after restart
。
下载好后,重启Jenkins
。
docker-compose down
docker-compose up -d
配置 JDK & Maven
上传 JDK
和 Maven
的 tar
包到服务器(容器数据卷目录),进行解压缩。
Manage Jenkins
-> Global Tool Configuration
(系统管理
->全局工具配置
)。
安装 JDK
/var/jenkins_home/jdk1.8.0_152
安装Maven
点击保存
安装动态参数插件
该插件的主要目的是为了方便我们后面在做项目构建时可以按照版本进行构建(支持一键回滚)
Manage Jenkins
->Manage Plugins
->Avaliable
- 搜索
Extended Choice Parameter
- 点击
Download now and install after restart
。
配置 Jenkins 的 GitLab SSH 免密登录
交互式进入 Jenkins
容器
docker exec -it jenkins /bin/bash
生成 SSH KEY
ssh-keygen -t rsa -C "your_email@example.com"
查看公钥
cat /var/jenkins_home/.ssh/id_rsa.pub
复制公钥到 GitLab
手动克隆一次项目,该步骤的主要作用是为了生成和服务器的验证信息
jenkins@730898bc8b96:~$ git clone ssh://git@192.168.50.131:2222/test/test.git
Cloning into 'test'...
The authenticity of host '[192.168.50.131]:2222 ([192.168.50.131]:2222)' can't be established.
ECDSA key fingerprint is SHA256:x21ujjNoJ+7wXGszSI7s70szbK0/+7mTOeDP5h0saMs.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.50.131]:2222' (ECDSA) to the list of known hosts.
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
jenkins@730898bc8b96:~$
查看生成文件
jenkins@730898bc8b96:~$ cd .ssh/
jenkins@730898bc8b96:~/.ssh$ ls -al
total 20
drwx------ 2 jenkins jenkins 4096 Apr 9 19:03 .
drwxr-xr-x 16 jenkins root 4096 Apr 9 19:03 ..
-rw------- 1 jenkins jenkins 2602 Apr 9 18:57 id_rsa
-rw-r--r-- 1 jenkins jenkins 572 Apr 9 18:57 id_rsa.pub
-rw-r--r-- 1 jenkins jenkins 222 Apr 9 19:03 known_hosts
jenkins@730898bc8b96:~/.ssh$
配置 Publish over SSH
系统管理
-> 系统设置
-> Publish over SSH
点击新增,其中 Remote Directory
是指 Jenkins
可以在目标服务器操作的目录,选择 Use password
, 输入目标服务器密码
测试能否正常通信
点击保存
持续交付 Maven 项目
为项目创建标签
在 GitLab
中为项目创建标签
在 Jenkins 中创建 Maven Project
在 Jenkins
中创建一个基于 Maven
的任务
这里没有Maven
项目选项,需要安装插件 Maven Integration
、Pipeline Maven Integration
配置第一次构建
构建项目
查看构建日志
配置正式构建
增加参数化构建过程
这里使用了 Groovy 脚本来查询最近的 tags 版本,代码如下:
def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-dependencies;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ]
ver_keys.execute().text.tokenize('\n')
关闭源码管理
增加构建步骤
shell
脚本代码如下:
echo $RELEASE_VERSION
cd /var/jenkins_home/workspace/myshop-dependencies
git checkout $RELEASE_VERSION
git pull origin $RELEASE_VERSION
mvn clean package
使用参数化构建项目
批准 groovy
脚本
再次点击参数化构建
查看构建日志
发送文件或执行远程命令
Source files
:需要传输到远程目标服务器的文件
***.jar
,我们打包的.jar
文件是在target
目录下的,传输时会一并创建target
目录,如果不希望创建target
目录,则可以使用该参数屏蔽掉这些前缀文件夹。
Remote directory
:在远程目标服务器创建操作目录myapp
Exec command
:在远程目标服务器执行控制台命令cd /usr/local/jenkins/myapp cp target/myapp-1.0.0-SNAPSHOT.jar docker cd docker docker build -t 192.168.50.128:5000/myapp:v1.0.0 . docker push 192.168.50.128:5000/myapp:v1.0.0 docker-compose down docker-compose up -d docker image prune -f
到此这篇关于Docker Compose构建Jenkins的实现的文章就介绍到这了,更多相关Docker Compose构建Jenkins内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java 输入输出流出现问题该如何解决?(Java输入输出流出现问题怎么解决)
- Java 验证码的存储方式都有哪些呢?(Java验证码的存储方式有哪些)
- 在 Java 集合框架中,Arrays 类究竟有着怎样的地位?(Arrays类在Java集合框架中的地位)
- Java 调用 WebService 服务的详细步骤有哪些?(java调用WebService服务的步骤是什么)
- Java中MVC设计模式的特点有哪些?(java中mvc设计模式有哪些特点)
- 如何进行 Java FastCGI 的性能优化?(含策略详解)(java fastcgi的性能优化策略)
- Java 动态定时任务重启后消失的解决办法(java动态定时任务重启就没了怎么解决)
- 如何调整 Java 虚拟机参数?(详细教程及常见问题解答)(java虚拟机参数如何调整)
- 如何分析 JavaOutOfMemoryError 的错误日志?(JavaOutOfMemoryError的错误日志如何分析)
- Java 中缓存流的优势与劣势究竟有哪些?(Java中缓存流的优势与劣势分别是什么)