还在手动部署jar包吗?快速掌握Jenkins安装,教你使用Jenkins实现持续交付
Posted 攻城狮Chova
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了还在手动部署jar包吗?快速掌握Jenkins安装,教你使用Jenkins实现持续交付相关的知识,希望对你有一定的参考价值。
Jenkins
Jenkins:
- 开源软件项目
- 基于Java开发的一种持续集成工具
- 用于监控持续重复的工作
旨在提供一个开放易用的软件平台, 便于软件的持续集成
基于Docker安装Jenkins
与持续集成中的GitLab Runner应该分布在不同的服务器上
- 创建工作目录: /usr/local/docker/jenkins
因为要在docker-compose.yml中使用volumes创建数据卷,执行命令赋予Docker数据卷权限:
chown -R 1000 /usr/local/docker/jenkins/data
在/usr/local/docker/jenkins创建docker-compose.yml
version: \'3.1\' services: jenkins: restart: always image: 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.yml文件启动Jenkins:
docker-compose up -d
解锁Jenkins: Jenkins第一次启动时需要输入初始密码解锁安装流程,使用命令查看初始密码
docker logs jenkins
使用自定义插件的方式安装Jenkins:
Dashboard View Publish Over SSH Extend Choice Parameter 也可以在Jenkins运行界面中的Manage Jekins中的Manage Plugins自定义下载安装
配置Jenkins
配置JDK&Maven
- 上传JDK和Maven的tar包到服务器(容器的数据卷目录)
- Manage Jekins -> Global Tool Configuration
安装JDK,==注意:== JAVA_HOME的路径是==宿主机==目录:(宿主机是相对宿体而言的)
/var/jenkins_home/jdk1.8.0_152
安装Maven,==注意:== MAVEN_HOME的路径是==宿主机==目录:(宿主机是相对宿体而言的)
/var/jenkins_home/apache-maven-3.5.3
安装动态参数插件(Extend Choice Parameter)
- 目的是方便在做项目构建时按照版本进行构建
支持一键回滚
使用Jenkins实现持续交付
- Jenkins持续交付流程与GitLab Runner持续集成流程类似,只是GitLab Runner默认已经配置好Git,Jenkins需要配置多一个GitLab的SSH登录
Jenkins持续交付流程:
- 拉取代码
- 打包构建
- 上传镜像
- 运行容器
维护清理
配置Jenkins的GitLab SSH免密登录
交互式进入Jenkins容器
docker exec -it jenkins /bin/bash
生成 SSH KEY
ssh-keygen -t rsa -C "email@example.com"
查看公钥
cat /var/jenkins_home/.ssh/id_rsa.pub
- 复制公钥到GitLab
克隆项目获取到known_hosts文件
配置Publish Over SSH
在Jenkins管理页面中系统设置增加SSH Server配置
Name
测试环境-192.168.32.255
Hostname
192.168.32.255
Username
root
Remote Directory(宿主机中可操作的目录)
/usr/local/jenkins
高级:Password
123456
高级:Port
22
高级:Timeout(ms)
300000
持续交付依赖管理项目
第一步是实现所有项目的父工程依赖项目的持续交付
- 项目创建标签: 在GitLab中给项目创建标签(版本号)
- 创建Maven Project: 在Jenkins中新建一个基于Maven的任务
配置Maven Project: 配置第一次构建初始化
- General: 丢弃旧的构建
源码管理: Git
- Repository URL: ssh://git@192.168.32.255:8000/myshop/myshop-dependencies.git
- Branches to build: */master
第二次配置Maven Project开始使用
General: 参数化构建过程
Extended Choice Parameter:
- name: RELEASE_VERSION
- Basic Parameter Types: Parameter Type
Choose Source for Value:
Groovy Script
def var_key=[\'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\'] var_key.excute().text.tokenize(\'\\n\')
- 源码管理: none
Post Steps: Add post-build step
Excute shell
echo $RELEASE_VERSION cd /var/jenkins_home/workspace/myshop-depedencies git checkout $RELEASE_VERSION git pull origin $RELEASE_VERSION mvn clean package
Add post-build step: Send files or execute commands over SSH
SSH Publishers:
SSH Server:
- name: 测试环境-192.168.32.255
Transfers:
- Source files: /*.jar, docker/ (远程传送文件)
- (Remove prefix): target(删除远程传送过程中前缀为target的文件,只适用于在上传过程中删除,不会删除已经上传成功到远程服务器上的文件)
- Remote Directory: myshop-service-user-provider(远程创建目录,并把文件远程传送到此目录中)
Exec command (在远程服务器进行命令操作:进入provider目录,拷贝项目jar包到docker目录,进入docker目录,构建项目jar包的镜像,上传镜像,停止容器,启动容器,清理虚悬镜像)
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.32.133:5000/myshop-service-user-provider:v1.0.0 docker push 192.168.32.133:5000/myshop-service-user-provider:v1.0.0 docker-compose down docker-compose up -d docker image prune -f
- 保存
- Build with Parameters
以上是关于还在手动部署jar包吗?快速掌握Jenkins安装,教你使用Jenkins实现持续交付的主要内容,如果未能解决你的问题,请参考以下文章
《自动化系列》Jenkins部署springboot项目jar包
还在手动部署springboot项目?不妨试试它,让你部署项目飞起来!
使用DockerMaven插件与Docker私有仓库来快速部署项目