zoukankan      html  css  js  c++  java
  • GitLab-CI部署及踩坑总结

    转载请注明出处:https://www.cnblogs.com/shining5/p/8863063.html

    部署GitLab-CI

    简介

    GitLab_CI(gitlab continuous integration)是Gitlab提供的持续集成服务。主要功能是每一次push到gitlab的时候,触发一次脚本执行,脚本内容包括编译、测试、部署等自定义内容。

    持续集成在自动化工作流程中扮演着十分重要的角色,GitLab内置持续集成,持续部署,持续交付以支持编译,测试和部署应用程序

    本文主要利用GitLab-CI实现自动部署

    原理

    自动部署涉及了若干个角色,主要介绍如下:

    • GitLab-CI

      GitLab自带的持续集成系统,你装的GitLab的那台服务器上就有,无需自行安装。GitLab-CI负责解析.gitlab-ci.yml

    • .gitlab-ci.yml

      GitLab-CI使用YAML文件来管理项目配置,在git项目的根目录下创建此文件,文件中包含一系列的阶段和执行规则。GitLab-CI在push后解析它,根据里面的内容调用runner来执行。YAML配置语法

    • GitLab-Runner

      这个是脚本执行的承载者, .gitlab-ci.yml的script部分就是由runner来负责的。GitLab-CI解析项目里的.gitlab-ci.yml文件之后,根据里面的规则,分配到各个Runner来运行相应的脚本script。

      GitLab-CI与GitLab-Runner关系示意图

    步骤

    • 安装GitLab-CI

      GitLab自带,无需单独安装

    • 安装GitLab-Runner
      在centOS系统安装gitlab-ci-multi-runner,在其它系统安装runner,请参考安装GitLab Runner

    添加GitLab官方仓库
    # For RHEL/CentOS/Fedora
    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
    安装最新版本的GitLab Runner
    # For RHEL/CentOS/Fedora
    sudo yum install gitlab-ci-multi-runner
    • 向GitLab-CI注册Runner,将Runner与git项目绑定起来

      • 先介绍下如何获取项目token,因为注册Runner时会用到,git项目–settings–CI/CD–General pipelines settings–Runner token,如图

    ci2

    • 注册Runner
    sudo gitlab-ci-multi-runner register
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    http://git.intra.weibo.com
    Please enter the gitlab-ci token for this runner:
    ***(获取git项目token值)
    Please enter the gitlab-ci description for this runner:
    
    Please enter the gitlab-ci tags for this runner (comma separated):
    tag名字(很重要,在.gitlab-ci.yml文件里面指定tag,匹配使用哪个tag的runner)
    Whether to run untagged builds [true/false]:
    
    Whether to lock the Runner to current project [true/false]:
    
    Registering runner... succeeded                     runner=m15ahKPr
    Please enter the executor: docker-ssh, shell, ssh, virtualbox, kubernetes, docker, parallels, docker+machine, docker-ssh+machine:
    shell(执行脚本的方式)
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

    通过gitlab-ci-multi-runner status/gitlab-runner status查看runner运行状态,也可以在git项目中查看或编辑runner状态:Settiongs-CI/CD-Runner settings

    • 编写.gitlab-ci.yml
      git项目根目录下编写.gitlab-ci.yml

      stages:
          -deploy
      deploy:
          stage: deploy
          script:
              - deploy.sh 
          only:
              - master
          tags:
              - runner26

      这里我们只有一个stage:deploy,only指定了只有在master分支push的时候才会被执行,tags是runner26,此tag对应刚才注册runner时候的tags

      最重要的script部分:deploy.sh 这里是一条shell命令,deploy.sh是runner服务器上编写的一个脚本,runner执行时执行此脚本

      .gitlab-ci.yml配置请参考官方文档

      添加徽章

    步骤:Settings–>CI/CD–>General pipelines settings–>Pipeline status
    ci33

    [![pipeline status](http://git.intra.weibo.com/dorylus_qa/CITest/badges/master/pipeline.svg)](http://git.intra.weibo.com/dorylus_qa/CITest/commits/master)添加到README.md中

    遇到问题及解决办法

    • 执行gitlab-ci时,有时会报user gitlab-runner does not exist或者/home/gitlab-runner:permission denied

      • 解决办法有两个:

        • user add gitlab-runner添加此用户,chown -R gitlab-runner:gitlab-runner /home/gitlab-runner
        • 修改gitlab-ci-multi-runner默认启动参数,默认–working-directory /home/gitlab-runner,–user gitlab-runner,我们可以修改成自己的用户名及工作目录并赋予权限。

          1. kill掉当前gitlab-ci-multi-runner服务
          2. gitlab-ci-multi-runn uninstall
          3. Gitlab-ci-multi-runner install —working-directory /data0/gitlab-runner --user tr1
          4. chown -R tr1:tr1 data0/gitlab-runner
          5. 重启服务/usr/bin/gitlab-ci-multi-runner run --working-directory /data0/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-run --syslog --user tr1
    • 项目执行ci时会自动将项目文件下载到runner所在的机器,那如何找到呢?

      • 路径为–working-directory指定的路径,如/home/gitlab-runner/builds下,但下面会有一串字符命名的文件夹,那哪个是我们要找的目录呢?
        • 字符串命名的文件夹与runner中的字符串对应 id
    • gitlab-runner如何并发执行任务

      • 默认并发数为1,修改 /etc/gitlab-runner/config.toml中的concurrent的配置即可,然后重启服务
    • runner执行以docker方式,那如何设置数据映射呢?

      • 仍然是修改 /etc/gitlab-runner/config.toml中的配置,找到你注册的runner,修改volumes即可volumes = ["/data0/host:/data0/container:rw","/cache"] 其中/data0/host为宿主机地址,/data0/container容器地址,rw设置读写权限

    参考资料

  • 相关阅读:
    java项目部署到LIINUX
    JAVA项目部署(1)
    JAVA项目服务器部署
    JAVA项目部署到云服务器
    JAVA项目打包
    java项目部署
    NHibernate NHibernate使用时误区
    访问其他电脑的c盘
    unit vs单元测试
    java 获取url及url参数解析
  • 原文地址:https://www.cnblogs.com/shining5/p/8863063.html
Copyright © 2011-2022 走看看