zoukankan      html  css  js  c++  java
  • Ubuntu中实现Docker内安装jenkins+jenkins远程触发

    前面做了在ubuntu中安装jenkins+docker实现自动部署,但是得安装jdk8+tomcat8环境,比较麻烦,因此本文记录如何将jenkins直接装在dockers内并且实现远程触发功能。

    docker的安装不做阐述,详见

    https://www.cnblogs.com/dhcnblog/p/11291709.html

    安装docker内的jenkins:

    1、直接登陆jenkins官网查看最新的docker pull命令

    https://jenkins.io/zh/download/

    2、用docker命令拉取jenkins镜像

    sudo docker pull jenkins/jenkins:lts

    3、配置宿主机映射到容器的目录,之后jenkins的一些配置文件都将会存储到该目录下,这个目录可以自己定,但是我建议遵守我这样的规范,便于日后查找和管理

    sudo mkdir /home/jenkins_home            # 宿主机上创建jenkins_home目录
    sudo chown -R 1000:1000 /home/jenkins_home      #设置该目录的所有者和所属的组

    4、启动jenkins镜像,执行如下命令,本人用的vmware虚拟机直接复制粘贴会直接按行执行  这样会报错。因此用工具连接上虚拟机执行如下命令(工具用的:)

    sudo docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -u root 
    --restart=always
    -v /home/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /opt:/opt -v /etc/timezone:/etc/timezone jenkins/jenkins:lts

    命令解析:

    -d 表示以后台模式运行
    --name 为容器定义一个名字(后面可以代替容器id使用)
    -p 表示映射容器的端口到宿主机的端口
    -v 表示映射宿主机的目录到容器的目录
    -u root 使用root用户运行,避免后面出现的一些执行权限问题
    -v /home/jenkins_home:/var/jenkins_home 映射jenkins_home,将数据存储到宿主机,这样配置就不会随容器丢失
    -v /var/run/docker.sock:/var/run/docker.sock 与 -v /usr/bin/docker:/usr/bin/docker 把宿主机docker 映射到容器内,可以直接在容器内使用宿主机docker
    -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7  容器内docker运行需要的库文件
    -v /opt:/opt  自主安装的一些运行时软件(如java/maven/git...)
    -v /etc/timezone:/etc/timezone 映射时区文件,保证容器的时区和宿主机相同(官网的jenkins容器时区不是中国的时区)
    最后的jenkins/jenkins:lts是要启动的镜像

    5、接下来就可以访问jenkins了,第一次访问需要输入初始密码。命令如下,然后需要安装基本插件选择第一个就好了-->创建用户,就可以进入jenkins构建项目了。

    sudo cat /home/jenkins_home/secrets/initialAdminPassword
    6、安装推荐插件时会出现

     解决方法:

    下载 cloudbees-folder.hpi 文件:

    下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/cloudbees-folder,在最下面选择last 然后下载cloudbees-folder.hpi文件。下载完成后,放入映射的/home/jenkins_home/plugins下,重启容器。

     
     

    注意:构建项目的时候,shell语句中不可以有“sudo”命令,因为jenkins启动直接在docker容器中,我们对docker的命令做了映射使jenkins可以直接使用docker命令,但是,容器中无法识别sudo命令,具体原因有待详查。这一点和直接装在宿主机中不同,也许装在宿主 机中的也可以设置,但是没有细做考究。

    使用本地jenkins远程触发服务器上的jenkins:

    可以通过好几种方式来触发,本人用的在远程机上配置访问用户的方式。

    1、配置登陆用户,生成APIToken

    进入配置页方法:jenkins首页-->系统管理-->管理用户-->编辑当前用户(也可以创建新用户,创建好后得推出当前用户用心用户登陆才能看见token)-->添加新token,注意一次生成后只能显示一次,一定牢记。不然就得重新生成

      2、给需要远程触发的项目添加身份令牌

    在项目配置中的 构建触发器中 勾选 触发远程构建-->自己填写身份令牌

    3、最后回到本地的项目配置中触发远程的shell语句

    curl -X POST http://dh:115ad9151b30c0bde04c60ba364d2a3416@192.168.44.135:8090/job/dhtest/build?token=dhtest441358090

     

    4、保存后立即构建、触发成功

    本地

     远程:

    参考文章:

    jenkins安装:https://www.jianshu.com/p/9018cfa3654b

    jenkins远程触发:https://blog.csdn.net/m0_37904728/article/details/82790390

  • 相关阅读:
    解决GIT可视化工具Sourcetree拉取失败问题
    记录常用Git命令
    vue开发移动端使用rem的适配方案
    使用HBuilderX实现打包vue项目成app
    使用vue+webpack从零搭建项目
    整理最近面试问道的问题
    模块化之seaJs学习和使用
    理解Object.defineProperty的作用
    vue生命周期
    使用gulp编译sass
  • 原文地址:https://www.cnblogs.com/dhcnblog/p/11299420.html
Copyright © 2011-2022 走看看