美文网首页
docker+gitlab+jenkins从零搭建自动化部署

docker+gitlab+jenkins从零搭建自动化部署

作者: AndreaH | 来源:发表于2020-02-24 21:47 被阅读0次

    介绍

    本文主要通过docker+gitlab+jenkins来实现自动化集成和部署的全过程,并不会详细的去介绍各种工具的功能。

    流程结构

    jenkins-gitlab CI流程

    准备工作

    1. 1台测试服务器,用于安装docker, 并在docker中配置jenkins,部署代码等。(公司准备的是内网测试机)
    2. 新建一个vue项目,然后推送到gitlab仓储。

    开始配置工作

    docker

    1. 在服务器上安装docker
    1. 更新软件库
    yum update -y
    
    1. 安装docker
    yum install docker -y
    
    1. 启动docker
     service docker start
    
    1. docker相关命令
     service docker restart  // 重启docker服务
     service docker stop     // 停止docker服务
    
    1. 在docker中安装jenkins

    一般我们习惯性的从docker远程仓储直接pull 镜像的最新版,而安装最新版的jenkins镜像, 镜像启动后, 在安装jenkins一系列的plugin 时, 重重受阻, 各种失败, 原因是docker hub 上最新的jenkins 只有2.60.1 版本,很多plugin 都是不支持的。
    在jenkins 的官方docker 镜像博客里: docker hub 里面的jenkins 镜像已经不再维护, 建议使用: Jenkins/jenkins 。

    1. 拉取jenkins镜像
     docker pull jenkins/jenkins
    
    1. 启动jenkins
    sudo docker run -d -u 0 --privileged  --name jenkins_gitlab -p 49003:8080 -v /root/jenkins_gitlab:/var/jenkins_home  jenkins/jenkins
    
    • -u 0

    指的是传入root账号ID,覆盖容器中内置的账号

    • -v /root/jenkins_gitlab:/var/jenkins_home
      指的是 将docker容器内的目录/var/jenkins_home映射到宿主机
      /root/jenkins_gitlab目录上

    • --name jenkins_gitlab

    将容器命名为 jenkins_gitlab

    • -p 49003:8080

    端口映射,将容器的8080端口映射到宿主机的49003端口

    • --privileged

    赋予最高权限

    • 整体含意
      运行一个镜像为jenkins/jenkinst的容器,命名为jenkins_gitlab,使用账root号覆盖容器中的账号,赋予最高权限,将容器的
      /var/jenkins_home映射到宿主机的
      /root/jenkins_gitlab目录下,映射容器中8080端口到宿主机49003端口
    1. 查看jenkins

    执行完成后,等待几十秒,等待jenkins容器启动初始化。
    可以查看宿主机 ' /root/jenkins_gitlab ' 下是否多了很多文件
    这里访问http://服务器ip:49003 查看jenkins是否启动成功
    看到如下界面说明启动成功:


    jenkins.png
    • 上图需要输入管理员密码,以下命令查看,然后点击continue继续
    cat /root/jenkins_gitlab/secrets/initialAdminPassword
    
    • 点击安装


      install.png
      install.png
    • 安装成功后,创建管理员账户


      creatAccount.png
    • 输入账号密码信息后点击保存(信息要填完),来到首页


      image.png
    • 配置jenkins, 首先安装相应的插件
      点击系统配置,如果这个页面有许多错误出现, 按照提示,去安装缺失的插件即可,如果安装特别慢也可以选择手动安装,插件安装方法如下:


      manageJenkins.png

      点击插件管理


      manageJenkins2.png.png
    manageJenkins3.png.png
    • 安装ssh插件


      image.png

      成功安装后,进入系统管理--系统配置


      manageJenkins4.png
      configureSystem.png

    选择高级,输入服务器IP,用户名,密码,然后点击 Test Configuration

    • 安装gitlab、gitlab hook插件(安装步骤同上,具体讲一些配置)
    Jenkins-to-GitLab authentication
    configureSystem2.jpeg

    点击add,填写相应的gitlab api token


    configureSystem3.png

    获取gitlab的 access token


    accessToken.png

    系统配置好后,我们进行项目的配置

    1. 首先,新建一个项目


      creat-item.png
    2. 创建成功后,进入项目的配置页面,选择Source Code Management 进行代码仓库的配置


      gitlab.png
    注意
    • 如果仓库地址选择http方式,一定要写服务器的ip地址,使用域名时会报错


      source-code.png
    • 认证的时候,可以选择username,password或者是gitlab api token的方式进行,点击add进行认证配置。如果是前者,配置完成后一定要重新去选择一下你刚才配置的用户名和密码,因为默认选中的不是你新填写的。

    用户名,密码认证


    credential.png

    gitlab api token认证

    1. 源码管理配置完成后,我们可以移步 Build Environment,我们来搭建构建环境,选择Send files or execute commands over SSH after the build runs,输入我们需要执行的ssh脚本,同时服务器上进行相关的nginx配置


      build-environment.png

      事例的shell脚本如下

    sudo docker stop nodeapp || true \
     && sudo docker rm nodeapp || true \ 
    cd /root/jenkins_gitlab/workspace/vuejenkinsdemo  \
    && ls \
     && sudo docker run -d --privileged=true --name nodeapp -p 3000:3000 -v /root/jenkins_gitlab/workspace/vuejenkinsdemo:/home/project/ node \
    && pwd \
    && cd /root/jenkins_gitlab/workspace/vuejenkinsdemo \
    && ls \
    && npm i \
    && npm run build \
    && ls \
    
    
    1. 配置完成后,点击save,进入到项目的执行页面


      build.png
      console-output.png
    2. 到此,我们已经实现了手动一键部署

    3. 接下来我们配置GitLab webhook,实现自动部署

    GitLab-to-Jenkins authentication
    • 进入到项目配置页面,选择build triggers,配置如下,gitlab webhook url 如图所示,然后点击advanced,找到secret token,点击生成,获得secret token的值


      build-triggers.png
      secreat-token.png
    • 移步gitlab, 找到项目,选择setting-->integrations,配置完成后选择add webhook,然后点击下方test,提示成功后,去jenkins构建页面可以看到有任务正在构建,也可以根据构建结果进行错误排查


      gitlab-webhook1.png
      gitlab-webhook2.png
      gitlab-webhook3.png
    注意
    • 当点击test时,由于本地化的原因,报了500错误,修改方式是应该允许来自钩子和服务的对本地网络的请求,
      方式一:


      gitlab-configuration.png

      方式二:

    curl -X PUT --header "PRIVATE-TOKEN:pKt5yVfsysShHg_r4xkT" http://gitlab.univ.com/api/v4/application/settings?allow_local_requests_from_hooks_and_services=true
    

    其中,PRIVATE-TOKEN是在gitlab中获取的access token.但是这个需要权限。如果没有权限设置的话,让gitlab的管理员帮忙设置一下就可以了。

    1. 到此,我们已经完成了一个简单的项目自动化部署过程。

    相关文章

      网友评论

          本文标题:docker+gitlab+jenkins从零搭建自动化部署

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