前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还在手动部署jar包吗?快速掌握Jekins安装,教你使用jekins的实现持续交付

还在手动部署jar包吗?快速掌握Jekins安装,教你使用jekins的实现持续交付

原创
作者头像
攻城狮Chova
修改2021-09-06 14:15:22
7790
修改2021-09-06 14:15:22
举报

Jenkins

  • Jenkins:
    • 开源软件项目
    • 基于Java开发的一种持续集成工具
    • 用于监控持续重复的工作
    • 旨在提供一个开放易用的软件平台, 便于软件的持续集成

基于Docker安装Jenkins

与持续集成中的GitLab Runner应该分布在不同的服务器上

  • 创建工作目录: /usr/local/docker/jenkinschown -R 1000 /usr/local/docker/jenkins/dataversion: '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 up -ddocker logs jenkinsDashboard View Publish Over SSH Extend Choice Parameter 也可以在Jenkins运行界面中的Manage Jekins中的Manage Plugins自定义下载安装
  • 因为要在docker-compose.yml中使用volumes创建数据卷,执行命令赋予Docker数据卷权限:
  • 在/usr/local/docker/jenkins创建docker-compose.yml
  • 执行docker-compose.yml文件启动Jenkins:
  • 解锁Jenkins: Jenkins第一次启动时需要输入初始密码解锁安装流程,使用命令查看初始密码
  • 使用自定义插件的方式安装Jenkins:

配置Jenkins

配置JDK&Maven

  • 上传JDK和Maven的tar包到服务器(容器的数据卷目录)/var/jenkins_home/jdk1.8.0_152/var/jenkins_home/apache-maven-3.5.3
  • Manage Jekins -> Global Tool Configuration
  • 安装JDK,注意: JAVA_HOME的路径是宿主机目录:(宿主机是相对宿体而言的)
  • 安装Maven,注意: MAVEN_HOME的路径是宿主机目录:(宿主机是相对宿体而言的)

安装动态参数插件(Extend Choice Parameter)

  • 目的是方便在做项目构建时按照版本进行构建
  • 支持一键回滚

使用Jenkins实现持续交付

  • Jenkins持续交付流程与GitLab Runner持续集成流程类似,只是GitLab Runner默认已经配置好Git,Jenkins需要配置多一个GitLab的SSH登录
  • Jenkins持续交付流程:
    • 拉取代码
    • 打包构建
    • 上传镜像
    • 运行容器
    • 维护清理

配置Jenkins的GitLab SSH免密登录

  • 交互式进入Jenkins容器docker exec -it jenkins /bin/bashssh-keygen -t rsa -C "email@example.com"cat /var/jenkins_home/.ssh/id_rsa.pub
  • 生成 SSH KEY
  • 查看公钥
  • 复制公钥到GitLab
  • 克隆项目获取到known_hosts文件

配置Publish Over SSH

在Jenkins管理页面中系统设置增加SSH Server配置

  • Name测试环境-192.168.32.255192.168.32.255root/usr/local/jenkins12345622300000
  • Hostname
  • Username
  • Remote Directory(宿主机中可操作的目录)
  • 高级:Password
  • 高级:Port
  • 高级:Timeout(ms)

持续交付依赖管理项目

第一步是实现所有项目的父工程依赖项目的持续交付

  • 项目创建标签: 在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: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')
        • Groovy Script
    • 源码管理: none
    • Post Steps: Add post-build stepecho $RELEASE_VERSION cd /var/jenkins_home/workspace/myshop-depedencies git checkout $RELEASE_VERSION git pull origin $RELEASE_VERSION mvn clean package
      • Excute shell
    • Add post-build step: Send files or execute commands over SSH
      • SSH Publishers:
        • SSH Server:
          • name: 测试环境-192.168.32.255
          • Transfers: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
            • Source files: /*.jar, docker/ (远程传送文件)
            • (Remove prefix): target(删除远程传送过程中前缀为target的文件,只适用于在上传过程中删除,不会删除已经上传成功到远程服务器上的文件)
            • Remote Directory: myshop-service-user-provider(远程创建目录,并把文件远程传送到此目录中)
            • Exec command (在远程服务器进行命令操作:进入provider目录,拷贝项目jar包到docker目录,进入docker目录,构建项目jar包的镜像,上传镜像,停止容器,启动容器,清理虚悬镜像)
  • 保存
  • Build with Parameters

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Jenkins
  • 基于Docker安装Jenkins
  • 配置Jenkins
    • 配置JDK&Maven
      • 安装动态参数插件(Extend Choice Parameter)
      • 使用Jenkins实现持续交付
        • 配置Jenkins的GitLab SSH免密登录
          • 配置Publish Over SSH
            • 持续交付依赖管理项目
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档