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实现持续交付的更多相关文章

  1. Maven 手动添加 JAR 包到本地仓库

    Maven 确确实实是个好东西,用来管理项目显得很方便,但是如果是通过 Maven 来远程下载 JAR 包的话,我宿舍的带宽是4兆的,4个人共用,有时候用 Maven 来远程下载 JAR 包会显得很慢 ...

  2. 手动下载jar包导入mvn repo的方法

    转载自:http://www.360doc.com/content/19/1101/16/67125028_870487351.shtml 常用Maven仓库网址:http://mvnreposito ...

  3. Maven deploy部署jar包到远程私仓

    Maven deploy部署jar包到远程私仓 maven deploy介绍 maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的 ...

  4. centos7后台服务部署jar包

    centos7 服务部署jar包 centos7 服务介绍 CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分, 每一个 ...

  5. 手动添加jar包到本地maven仓库

    我们都知道使用maven管理jar包的时候,我们需要到远程仓库下载相关的jar包到本地仓库,但是如果远程仓库没有这个jar包呢?这时候我们就需要手动将jar包添加到本地仓库. 起因是我想用百度的富文本 ...

  6. 转 Maven常用仓库地址以及手动添加jar包到仓库

    转自:http://blog.csdn.net/kqygww/article/details/12837783 共有的仓库 http://repository.sonatype.org/content ...

  7. Maven常用仓库地址以及手动添加jar包到仓库

    http://www.blogjava.net/fancydeepin 共有的仓库 http://repository.sonatype.org/content/groups/public/http: ...

  8. maven 下载 jar 包速度慢时,可以自己手动下载 jar 包,然后粘贴到 External Libraries 中

    maven 下载 jar 包速度慢时,可以自己手动下载 jar 包,然后粘贴到 External Libraries 中

  9. Maven还停留在导jar包?快来探索Nexus私服的新世界

    写在前面 Maven,学习框架之前我们都会接触到的一个工具,感觉他的定位,似乎就跟git一样,只是方便我们开发?于是自然而然的,很多小猿对于Maven都只是停留在会用的阶段,利用他来构建,打包,引入j ...

随机推荐

  1. 习题3_08循环小数(JAVA语言)

    package 第三章习题; import java.util.Arrays; import java.util.Scanner; /*  * 输入整数a和b(0<=a<=3000,1&l ...

  2. [差分][二分][贪心]luogu P3634 [APIO2012]守卫

    题面 https://www.luogu.com.cn/problem/P3634 给m个限制,可以是一段区间中必须有或者必须无忍者 最多有k个忍者,问有多少个位点一定有忍者 分析 首先用差分标记一下 ...

  3. 未来直播 “神器”,像素级视频分割是如何实现的 | CVPR 冠军技术解读

    被誉为计算机视觉领域 "奥斯卡" 的 CVPR 刚刚落下帷幕,2021 年首届 "新内容 新交互" 全球视频云创新挑战赛正火热进行中,这两场大赛都不约而同地将关 ...

  4. idea报错Selected Java version 11 is not supported by SDK (maximum 8)

    解决方案

  5. 分享一次排查CLOSE_WAIT过多的经验

    关键词:TCP.CLOSE_WAIT 问题背景 某日下午有测试人员急匆匆的跑来跟我反馈:"有客户反馈供应商附件预览不了,流程阻塞,需要紧急处理",我立马精神起来,毕竟都是付费客户( ...

  6. [Fundamental of Power Electronics]-PART II-7.交流等效电路建模-7.1 引言

    7.1 引言 变换器系统总是需要反馈的.例如,在典型的DC-DC变换器应用中,无论输入电压\(V_{g}(t)\)和输出有效负载\(R\)如何变化,都必须使输出电压\(v(t)\)保持恒定.这是通过构 ...

  7. Windows安装完ADFS后卸载ADFS清除ADFS数据库

    ADFS卸载后不会卸载掉之前ADFS配置后留下来的数据库,所以如果有必要去删掉这个数据库的话需要找到对应的路径去将数据库删除掉. 具体路径为C:/windows/wid/data/adfsartifa ...

  8. BUAA_2021_SE_READING_#2

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 通过课程学习,完成第一个可以称之为"软件"的项目 ...

  9. ternux的ssh和ftp

    ssh的连接 pkg install ssh ssh -p 8022 username@hostname_ip ftp的创建 安装python 升级pip python -m pip install ...

  10. Spring Security OAuth 格式化 token 输出

    个性化token 背景 上一篇文章<Spring Security OAuth 个性化token(一)>有提到,oauth2.0 接口默认返回的报文格式如下: {     "ac ...