【部署】01_Jenkins部署与项目配置

基础环境说明

- Docker 20.10
- Centos 7.6
- Jenkins 2.332.3
- Jenkins Images jenkinsci/blueocean:latest
		-  blueocean版本内置很多插件,例如JDK11,Git等。
- docker-compose 1.25
- Github

项目发布流程

在这里插入图片描述

Jenkins基础环境部署

  1. 下载镜像。

    docker pull jenkinsci/blueocean
    
  2. 创建Jenkins本地目录/data/jenkins/data

  3. 启动

    version: '3'
    services:
      jenkins:
        image: jenkinsci/blueocean:latest
        container_name: jenkins
        user: root
        ports:
          - "8080:8080"
          - "50000:50000"
        volumes:
          - /data/jenkins/data:/var/jenkins_home
          - /var/run/docker.sock:/var/run/docker.sock
          - /usr/bin/docker:/usr/bin/docker
          - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
          - /data/software/jdk1.8.0_201:/usr/local/java
          - /data/software/apache-maven-3.6.3:/usr/local/maven
          - /etc/localtime:/etc/localtime
          - /etc/timezone:/etc/timezone
        privileged: true
        network_mode: "host"
    
    • user: root指定容器内运行Jenkins服务的是root用户,默认情况是Jenkins用户。如果是默认用户会出现写宿主机无权限问题。
    • ports中指定端口映射,Jenkins web默认端口是808050000端口暂时没用到,暂不描述。

    volumes映射中的配置

    • line1 Jenkins主目录/var/jenkins_home映射到宿主机
    • line2-3 Docker容器内使用宿主机的docker服务端命令,Jenkins容器内打包docker应用镜像
    • line4 宿主机的docker-compose映射到Jenkins容器内供容器使用
    • line5-6 将宿主机的java以及maven映射到容器内供Jenkins使用。需要在Jenkins界面配置java以及maven路径(Jenkins容器中的路径)。
    • line7-8 配置容器时区以及时间
  4. 默认启动8080端口。

  5. 如果出现以下问题,说明Jenkins下载以来插件过程中出错,大概率是网络问题。其实这个问题可以通过观看容器日志做出判断。将hudson.model.UpdateCenter.xml文件中的源更新成国内源即可。

    • 界面访问失败
    • Jenkins已离线
    • https://updates.jenkins.io/update-center.json无法解析
    • unknownHostException之类的错误
    [root@localhost data]# cat  /data/jenkins/data/hudson.model.UpdateCenter.xml
    
    <?xml version='1.1' encoding='UTF-8'?>
    <sites>
      <site>
        <id>default</id>
        <url>http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
      </site>
    </sites>
    
    [root@localhost data]#
    
  6. 初始化访问界面,按照要求输入初始化密码。

  7. 定义管理员用户名/密码。建议不要使用admin/root做管理员用户名。

自动构建

目标 将代码提交到仓库后,希望Jenkins直接触发构建流程,而不是用户登录到界面手动点击构建。
原理 Github有一个通信功能叫Webhooks,当用户提交代码到GithubGithub通过Webhooks通知Jenkins拉将Github代码拉到Jenkins一端。拉取代码的过程中Github需要验证Jenkins身份,即Personal access tokens

配置Github Webhooks

  1. 进入Github项目页面,点击设置。
    在这里插入图片描述

  2. 申请身份验证
    进入Github右上方的"settings" ->"Developer settings" -> "Personal access tokens" -> "Generate new token"。保存生成的的token
    在这里插入图片描述

  3. 进入对应的工程"settings",设置本工程的Webhooks
    在这里插入图片描述

  4. 配置Jenkins
    Github中的token配置到Jenkins。进入"Jenkins管理"-> “系统配置” -> "Github"
    在这里插入图片描述

在这里插入图片描述
5. 进入Jenkins中具体项目,配置信息如下。
在这里插入图片描述
在这里插入图片描述

远程执行脚本

  1. 远程服务器配置好需要执行的脚本。Jenkins将项目构建成功后自动ssh到指定服务器,执行相应脚本。
    在这里插入图片描述
  2. 配置Jenkins远程到目标服务器的信息,由于远程服务器要求通过私钥登陆,所以Jenkins服务需要配置私钥路径。
    在这里插入图片描述

问题列表

  1. Jenkins容器启动出现权限问题。
    在这里插入图片描述
    容器中是基于jenkins用户启动,但是对宿主机的目录没有读写权限。需要在docker-compose中指定使用root用户启动。

相关配置

maven配置

     <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
     </mirror>

相关插件

1. Maven Integration plugin Version3.18
2. Publish Over SSH Version1.24
3. SSH Build Agents plugin Version1.814.vc82988f54b_10
4. SSH plugin Version2.6.1

引用

  • https://blog.csdn.net/weixin_39218464/article/details/120590493
  • https://blog.csdn.net/willyan2007/article/details/116753826
  • https://benpaodewoniu.github.io/2020/03/09/jenkins2/

更新记录

  • 创建于 2022-05-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值