美文网首页
CentOS+Docker+Jenkins+Gradle+Git

CentOS+Docker+Jenkins+Gradle+Git

作者: 安安静静的码代码 | 来源:发表于2019-12-09 21:41 被阅读0次

    前言

    • 购买服务器
    • 重做系统 CentOS7.5
    • 远端SSH登录服务器
    • 发车

    打个广告 ~ 移动端离线鉴黄实现,可移植到多个平台,让鉴黄付费不存在~ open_nsfw

    更新yum源

    yum update
    

    安装必要软件

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    

    设置yum下载源为阿里仓库(网速ok的可以省略这一步)

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    查看仓库中所有的docker版本

    yum list docker-ce --showduplicates | sort -r
    

    选择一个版本进行安装(下面的xxxx换成要安装的docker)

    sudo yum install xxxx
    

    等待安装结束后,启动docker 并设置docker开机自启,代码如下

    sudo systemctl start docker && sudo systemctl enable docker
    

    查看docker版本

    docker version
    

    安装项目需要的软件,我项目需要redis和mysql,以下为示例命令,需要其他软件的可参考以下命令

    • 下载redis镜像
    docker pull redis
    
    • 启动redis(--name 名称设置为redis,-p 映射主机端口 6379到redis容器内部6379端口,这里注意到服务器配置页面开放6379端口,否则访问了容器内部的redis,--requirepass 密码,-d表示容器后台运行 ,-v挂载目录 让容器时间与服务器同步 )
    docker run -d -v /etc/localtime:/etc/localtime --name redis -p 6379:6379 redis --requirepass 123456
    
    • 启动成功后用 docker ps 命令可以查看当前运行的容器

    • 同样的方式下载安装Mysql

    docker pull mysql 
    
    • 启动mysql(服务器开启3306端口)
    docker run -p 3306:3306 -v /etc/localtime:/etc/localtime --name mysql  -e MYSQL_ROOT_PASSWORD=123456 -d mysql
    
    • 启动成功后用 docker ps 命令可以查看当前运行的容器

    现在远端可以使用响应工具链接MySQL和Redis了

    同上方式安装Jenkins

    • 下载jenkins镜像
    docker pull  jenkins/jenkins:lts
    
    • 创建文件夹来挂载jenkins目录
    mkdir /home/jenkins_home
    
    • 启动jenkins并挂载目录(-u root是以管理员模式运行容器,因为等会要进入容器内部用到管理员命令,同样记得开放8080和50000端口,这里我多开了两个端口,因为我准备把项目直接挂到jenkins所在的容器,所以项目用到的端口我也要开启一下)
    docker run -u root -d  -v /etc/localtime:/etc/localtime --name jenkins -p 80:80 -p 443:443 -p 8888:8080 -p 50000:50000 -v /home/jenkins:/home/jenkins jenkins/jenkins:lts
    
    • 启动成功,在浏览器访问你的IP地址+端口号就可以访问到jenkins页面了


      home.png
    • 需要一个管理员密码,用如下命令进入容器后获取。

    docker exec -it jenkins bash
    
    • 获取管理员密码
    cat /var/jenkins_home/secrets/initialAdminPassword
    
    • 复制密码并输入密码后进入下一步,按照提示选择推荐的插件基础包安装


      azcj.png
    • 让它慢慢搞事情,我们先去搞点别的事情
    • 打开github你的项目主页 ->>Setting ->>Webhooks ->> Add webhook 填写下面的地址
    http://你的服务器地址:8080/jenkins/github-webhook
    
    • ContentType选择application/json
    • Just the push event 打勾
    • Active打勾,保存
    • 点击github右上角个人设置按钮,以此选择 Settings ->> Developer settings ->>Personal access tokens ->> New personal access token
    • 名字随便起一个,选择授于的权限 repo 和 gist打勾,点击生成,返回后复制生成的token备用(下次进入页面就看不到了,复制到安全的地方)
    • 回头看看jenkins插件下载完了没.... 还没完,不要着急。咱们再干点别的事,在gradle中添加几个命令待用
    bootJar {
        doFirst {
            println 'Start BootJar task...'
            baseName = 'wb-spring-boot'
            version = '1.3'
        }
        doLast {
            println 'BootJar success.'
        }
    }
    }
    
    • 再看下插件下完没,还没下完... 我去刷一会皮皮虾。

    • 刷不动了,快十点了。回家睡觉了,明天再更。

    • 时隔一晚终于下完了,我们继续... 设置一个管理员账号和密码,以后登录就直接用设置的这个账号和密码了。


      szmm.png
    • 点击保存并完成,一路下一步

    • 点击左边的系统管理 ->> Manage Jenkins ->> configure system对github进行配置


      addgithub.png
    • 随便起个名字,点击添加,复制我们在github生成的token。上面有说,往上翻翻


      addtoken.png
    • 如下图操作,选择刚才添加的token,点击测试,出现下图的字符表示添加成功


      addgsucc.png
    • 点击左下角的保存

    • 接下来创建项目 ,点击创建一个新任务

    • 输入一个项目名称,按下图选择后点击确定

    c_s.png
    • 配置仓库 ->> 源码管理->>Git 输入项目地址 ->>添加git账号(用户名)和密码
    gitsp.png
    • 选择刚才添加的账号 选择后会有红色异常,稍等会链接到仓库后就没了,如果一直红色警告,检查你的账号和密码,或者检查你的服务器是否安装了git。这里出问题留言,我协助你解决。

    • 再往下走 构建触发器选择 GitHub hook trigger for GITScm polling ,因为我们要在提交代码后由github通知jenkins构建

    • 构建环境按照下图标示选择


      gj.png
    • 安装gradle并配置环境变量

    • 进入jenkins容器

    docker exec -it jenkins bash
    
    • 进入根目录
    cd /
    
    • 我下载4.8的gradle,你根据需要来
    wget https://downloads.gradle.org/distributions/gradle-4.8-all.zip
    
    • 下载好了后就在当前目录下,我为了方便就在容器根目录下下载的,直接解压
    unzip gradle-4.8-all.zip
    
    • 删除压缩文件
    rm -rf gradle-4.8-all.zip
    
    • 安装vim命令
    apt-get update
    
    apt-get install vim
    
    • 配置环境变量
    vim /etc/profile
    
    • 加入下面的内容 别想了,复制不了,手动写一下吧
    etc.png
    • 算了还是让你拷贝一下吧
    PATH=$PATH:/gradle-4.8/bin
    export PATH
    
    • 按退出键 输入:wq 敲回车保存
    • 让刚才修改的环境变量生效
    source /etc/profile
    
    • 查看gradle版本
    gradle -v
    
    • 看到版本表示成功了
    
    Welcome to Gradle 4.8!
    
    Here are the highlights of this release:
     - Dependency locking
     - Maven Publish and Ivy Publish plugins improved and marked stable
     - Incremental annotation processing enhancements
     - APIs to configure tasks at creation time
    
    For more details see https://docs.gradle.org/4.8/release-notes.html
    
    
    ------------------------------------------------------------
    Gradle 4.8
    ------------------------------------------------------------
    
    Build time:   2018-06-04 10:39:58 UTC
    Revision:     9e1261240e412cbf61a5e3a5ab734f232b2f887d
    
    Groovy:       2.4.12
    Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
    JVM:          1.8.0_232 (Oracle Corporation 25.232-b09)
    OS:           Linux 3.10.0-1062.1.1.el7.x86_64 amd64
    
    • 添加gradle变量进jenkins 系统管理 ->>系统工具配置 ->> 新增gradle


      addgradle.png
    • 构建内容添加两个,第一个选择invoke Gradle script 第二个选择执行shell,图中的copyJavaFile可以去掉,是我自己的逻辑。


      add2.png
    • 第二个执行shell 填写下面的脚本

    #!/bin/bash
    echo 打包成功,开始运行jar;
    #进程处理
    /bin/fuser -k -n tcp 80
    BUILD_ID=DONTKILLME
    java -jar /var/jenkins_home/workspace/WB-Service/build/libs/wb-spring-boot-1.3.jar &
    echo 构建成功
    
    • 这里脚本中可能还需要个工具 psmisc,进入容器后安装
    docker exec -it jenkins bash
    
    • 安装psmisc
    apt-get install psmisc
    
    • 查询引用路径(注意替换脚本中/bin/fuser的路径,一般情况不用替换)
    root@df727b881c6f:/# whereis fuser
    fuser: /bin/fuser /usr/share/man/man1/fuser.1.gz
    root@df727b881c6f:/# 
    
    • 回到jenkins配置页面,点击保存,立即构建 (这里的项目目录替换脚本中的jar执行路径)


      git_last.png
    • 我失败三次了...兄弟你呢? 不能忍,搞点事情,直接把项目复制到jenkins工作目录中吧..

    • 先将项目打包,copy到服务器的根目录下(windows 用winscp工具蛮好的 mac的话也有类似的,我用的SecureFX,直接拖到服务器根目录下)

    • 将服务器根目录下的文件copy进容器内部。这里需要注意,会用到容器的长ID,不是短ID。首先用如下命令查看运行的容器

    docker ps
    
    • 根据容器名称查询长ID(命令:docker inspect -f '{{.ID}}' +容器名称)
    docker inspect -f '{{.ID}}' jenkins
    
    • copy进容器中,(命令:docker cp + 服务器中的文件 + 刚才查询到的容器长ID + : + 容器中的路径)容器路径填写工作空间的路径
    docker cp WB-Service.zip 42b70191d27fcf0164abb36e33e223da52e306d49d6d5348e55663caac96bb82:/var/jenkins_home/workspace/
    
    • 进入容器
    docker exec -it jenkins bash
    
    • 解压文件夹并重命名文件夹为工作空间的名称
    cd /var/jenkins_home/workspace/
    
    • 解压
    unzip WB-Service.zip
    
    • 停止正在构建的项目 删除原工作目录
    rm -rf WB-Service
    
    • 将解压出来的项目名称变更为空间名称,就是你在新建jenkins任务的时候写的那个
    mv wb-spring-boot-project WB-Service
    
    • 进入jenkins首页,点击工作空间你就可以看到你的项目了


      pro.png
    • 这时候再次点击立即构建,jenkins把本地工作空间的内容和github的一对比就好了,因为基本没有改动。直接进入下一步。

    • 立即构建

    cccc.png
    • 从项目中提交一个改动。这边就自动触发编译并且部署了。


      push1.png
    push2.png

    至此 自动部署完成~ 来自一个入行一个月的java开发猿... 大佬多多指教。

    打个广告 ~ 移动端离线鉴黄实现,可移植到多个平台,让鉴黄付费不存在~ open_nsfw

    相关文章

      网友评论

          本文标题:CentOS+Docker+Jenkins+Gradle+Git

          本文链接:https://www.haomeiwen.com/subject/omypwctx.html