Docker Jenkins安装配置

前置环境

  1. Docker(latest), 详情可见Docker入门与实践

  2. Maven(3.6.3)
    存放位置: /usr/local/maven

  3. JDK(8U201)
    存放位置: /var/lib/docker/volumes/jenkins-data/_data/tools/hudson.model.JDK/JDK_8U201

PS: 示例中部分挂载到服务器上的地址, 需对应真实的地址

一、Jenkins安装

当前Jenkins示例版本为2.319.1

  1. docker network create jenkins

  2. docker volume create jenkins-docker-certs

  3. docker volume create jenkins-data

  4. docker pull docker:dind

    docker container run --name jenkins-docker --restart=always --detach --privileged --network jenkins --network-alias docker --env DOCKER_TLS_CERTDIR=/certs --volume jenkins-docker-certs:/certs/client --volume jenkins-data:/var/jenkins_home --publish 2376:2376 docker:dind
    
  5. docker pull jenkinsci/blueocean

    docker container run --name jenkins-blueocean --restart=always --detach --network jenkins --env DOCKER_HOST=tcp://docker:2376 --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 -v jenkins-data:/var/jenkins_home -v jenkins-docker-certs:/certs/client:ro -v /usr/local/maven/apache-maven-3.6.3:/usr/local/maven --publish 18099:8080 --publish 50000:50000 jenkinsci/blueocean
    
--rm: 容器停止后就会被删除
--restart=always: 容器停止后重新启动

二、Jenkins配置

  1. 浏览器打开:http://ip:port/

  2. 初次登陆密码查看

    docker logs -f 容器ID(jenkinsci/blueocean)

  3. 插件安装

    一般选择默认推荐安装, 可根据情况进行自定义安装

    国内的清华源:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    官方的插件源:https://updates.jenkins.io/update-center.json

    官方的下载插件地址:https://updates.jenkins-ci.org/download/plugins/

  4. 设置管理员用户及密码

三、基本请求

1.重启Jenkins

http://ip:port/restart

2.重新加载配置文件

http://ip:port/reload

四、系统管理

1.系统配置

  1. Folder -> Health Metrics -> 新增Child item with worst health(递归)

  2. 添加常用SSH Server -> 高级 ->Use Password authentication. or use a different key ->验证连接

    如果没有, 需安装对应点的插件Publish Over SSH

  3. 凭据

    添加凭据(全局) -> 用户名(项目仓库) -> 密码

2.全局配置

  1. Maven 配置

    默认 settings 提供 -> 文件系统中的settings文件 -> 文件路径
    /usr/local/maven/conf/settings.xml

    默认全局 settings 提供 -> 文件系统中的全局settings文件 -> 文件路径
    /usr/local/maven/conf/settings.xml

  2. JDK

    可选择自动安装, 本示例为手动安装

    前置环境中所指JDK放置目录(需放置在已经存在挂载目录中, 或启动容器时,直接挂载)
    本例存放在已经挂载的目录中/tools/hudson.model.JDK
    /var/jenkins_home/tools/hudson.model.JDK/JDK_8U201/jdk1.8.0_201

  3. Maven

    可选择自动安装, 本示例为手动安装

    MAVEN_HOME配置为Jenkins容器启动时所挂载的目录/usr/local/maven

3.新建任务

以构建一个自由风格的软件项目为例:

  1. 确定项目名称

  2. 源码管理

    Git -> Repository URL(项目地址) -> Credentials(可以访问项目的凭据) -> Branches to build(项目分支)

  3. 构建触发器

    轮询SCM -> 日程表 -> 设置适合的周期(例如: H/5 * * * *)

  4. 构建环境

    选择Delete workspace before build starts

  5. 构建

    调用顶层Maven目标 -> Maven版本(Maven3.6.3) -> 目标(clean package -DskipTests -U)

    通常存放公共信息的项目的目标——clean install package -Dmaven.test.skip=true, 无构建后操作

  6. 构建后操作

    SSH Sever -> Name(自定义) -> Transfers

    Transfers示例模板:

    1. Source Files——target/*.jar
    2. Remove prefix——target/
    3. Remote directory——目录名称(通常为项目名称)
    4. Exec command——模板
    #!/bin/bash
    SERVER_NAME=项目名称
    cp /home/dockerFiler/$SERVER_NAME /home/project/$SERVER_NAME
    cd /home/project/$SERVER_NAME
    #容器id
    CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
    #镜像id
    IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
    
    #清除旧容器
    if [ -n "$CID" ]; then
    echo "存在$SERVER_NAME容器,CID=$CID"
    echo "停止旧容器"
    docker stop $SERVER_NAME
    echo "删除旧容器"
    docker rm $SERVER_NAME
    fi
    
    # 清除旧镜像
    if [ -n "$IID" ]; then
    echo "存在$SERVER_NAME镜像,IID=$IID"
    echo "删除镜像"
    docker rmi $IID
    fi
    
    #构建镜像
    echo "开始构建镜像"
    docker build -f ./$SERVER_NAME -t $SERVER_NAME . 
    echo "构建镜像成功!"
    
    #运行容器
    docker run -p 端口:端口 --name $SERVER_NAME -d $SERVER_NAME
    
  7. 应用/保存

4.构建项目

在视图中选中项目 -> 进入项目 -> 立即构建(若不手动触发, 也会自动触发)

五、删除Jenkins

  1. 删除版本容器

    docker rm 容器ID(docker:dind)
    docker rm 容器ID(jenkinsci/blueocean)

  2. 删除版本镜像

    docker rmi 镜像ID(docker:dind)
    docker rmi 镜像ID(jenkinsci/blueocean)

  3. 删除挂载文件目录(可不删, 后续可复用)

  4. 删除network

    docker network rm ID

    查看网络列表: docker network ls

PS: 如需重新安装, 只需重复步骤一即可(如若network以及相关文件夹未删除, 可跳过(将复用先前的配置信息))

六、其他问题

1.时区

可以直接尝试: docker cp /usr/share/zoneinfo/Asia/Shanghai 容器id:/etc/localtime

  1. 进入容器(docker exec -it -u root 容器ID /bin/bash)(可能需要root权限-u root)

  2. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  3. echo Asia/Shanghai >/etc/timezone

  4. 退出容器(exit/ctrl+p+q)

  5. 重启jenkins(http://localhost:port/restart)

2.项目构建

  1. 失败

    • 项目地址错误

    • 权限不足

    • 分支

    • 项目启动顺序(对其他项目有依赖性)

    • 项目本身问题

  2. 不稳定

    SSH Sever、Exec command存在问题

    ①.SSH Sever连接是否成功

    ②.指令是否正确空格分隔

    ③.cp文件目录是否有效

    ④.cd文件目录是否正确

    ⑤.缓存(尝试删除工程, 重新新建任务)

  3. 成功

    Jenkins构建成功, 容器可能会自动退出

    • 端口被占用

    • 环境

      dockerFile文件中项目启动参数: -Dspring.profiles.active(参考文档)

      • 环境不存在

      • 当前环境的代码本身存在问题或未更新

    • 缓存

      尝试删除工程, 重新新建任务

3.部分功能未找到

  1. jenkins版本

  2. 插件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值