二、基于docker-compose
安装jenkins
version: '3.1'
services:
jenkins:
restart: always
image: jenkinsci/jenkins
container_name: jenkins
ports:
# 发布端口
- 8080:8080
# 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信
- 50000:50000
environment:
TZ: Asia/Shanghai
volumes:
- ./data:/var/jenkins_home
若通过docker-compose up
过程中出现Docker 数据卷
问题,可通过下面命令结局:
chown -R 1000 /usr/local/docker/jenkins/data
1. Jenkins 首次启动
第一次启动jenkins
时,可以通过docker logs jenkins
查看初始密码。
cat /usr/local/docker/jenkins/data/secrets/initialAdminPassword
2. 自定义安装插件
image一定要安装的插件
Dashboard View
Publish over SSH
Maven Integration plugin
Locale 本地化插件 (显示中文)
Choice Parameter 动态参数插件(支持一键回滚)
3. 安装本地化插件后的设置
系统管理-》系统设置-》 Locale Default -> 输入 zh_CN ->Ignore browser preference and force this language to all users(打√)
上传java
和maven
并解压
将java
和maven
的jar上传到jenkins的宿主机路径:/usr/local/docker/jenkins/data
目录。并进行解压。
解压:
tar -zxvf xxx.tar.gz
删除压缩包:
rm -fr xxx.tar.gz
4. 在jenkin页面配置jdk
和 maven
系统管理-》global tool configuration(通用工具配置)-》JDK 安装 -》新增jdk
JDK 别名:
JDK 1.8.0.152 X64
JAVA_HOME: 系统管理-》系统设置-》主目录:
/var/jenkins_home/jdk1.8.0_152
安装maven
Name :Apache Maven 3.5.3
MAVEN_HOME: /var/jenkins_home/apache-maven-3.5.3
保存
5. 配置 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
gitlab -》 设置 -》 SSH秘钥
- 手动克隆一次项目,该步骤的主要作用是为了生成和服务器的验证信息
克隆之前,
cd
,后再git clone gitlab项目地址
。
此操作是为了拿到cd .ssh/
目录下的known_hosts
文件。
6. 配置 Publish over SSH
- 系统管理-》系统设置-》Publish over SSH
其中 Remote Directory
是指 Jenkins 可以在目标服务器操作的目录。
在配置的远程服务器上配置usr/local/jenkins
目录。
- 测试是否能够正常通信
Test Configuration
7. 在jenkins配置项目
-
New Item -》
myshop-dependencies
-》 丢弃旧的构建 :10 -》 源码管理: git : 项目的gitlab
地址 -》 立即构建 -
在
gitlab
为项目打标签(参数化构建,为了版本回滚)
进入项目-》新建标签 :v1.0.0
8. 配置正式构建
项目-》配置-》源码管理:None;
参数化构建过程-》添加参数:Extended Choice Parameter
-》 Name: RELEASE_VERSION
-》 Base Parameter Types: Single Select -》Choose Source for Value:Grovy Script :
def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-operation;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ]
ver_keys.execute().text.tokenize('\n')
Post Steps(构建步骤)-》Add post-build step -》 Excute shell
echo $RELEASE_VERSION
cd /var/jenkins_home/workspace/myshop-dependencies
git checkout $RELEASE_VERSION
git pull origin $RELEASE_VERSION
mvn clean install
9. Send files or execute commands over SSH(发送文件或执行远程命令)
- Source files:需要传输到远程目标服务器的文件
**/*.jar,docker/**
-
Remove prefix
:删除前缀。比如传输**/*.jar
,我们打包的.jar
文件是在target
目录下的,传输时会一并创建target
目录,如果不希望创建target
目录,则可以使用该参数屏蔽掉这些前缀文件夹。 - Remote directory:在远程目标服务器创建操作目录
myshop-service-user-provider
- Exec command:在远程目标服务器执行控制台命令
cd /usr/local/jenkins/myshop-service-user-provider
cp target/myshop-service-user-provider-1.0.0-SNAPSHOT.jar docker
cd docker
docker build -t 192.168.10.133:5000/myshop-service-user-provider:v1.0.0 .
docker push 192.168.10.133:5000/myshop-service-user-provider:v1.0.0
docker-compose down
docker-compose up -d
docker image prune -f
准备工作完成之后就可以对项目进行构建,参数化构建时,第一次构建时,要确认使用groovy 脚本进行构建
- 构建项目-》Build With Parameters -》 In-Process Script Approval-》Approve -》 然后再重新进行构建
网友评论