• 使用Gitlab实现自动化部署与持续集成


    • Gitlab-Ci运行原理:

    由以下两个模块组成
    gitlab-ci server
    gitlab-ci-runner
    其中,gitlab-ci server负责调度、触发Runner,以及获取返回结果. 而gitlab-ci-runner则是主要负责来跑自动化CI(测试,编译,打包等)。

    基本流程是: 用户提交代码->检查是否有.gitlab-ci.yml文件->如果无,则结束;-> 如果有,则调用runner执行脚本->获取返回的结果。

    1. 登录Gitlab
    前提: gitlab 已经部署完成并能登录,runner已部署完成
    版本:

    2. 创建一个Project
    创建好project后,就有了该project的URL。

    3.注册runner
    注册命令:
    gitlab-ci-multi-runner register
    #引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/
    #引导会让你输入token,去相应的项目下找到token,例如ase12c235qazd32
    #引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如web,hook,deploy
    #引导会让你输入executor,这个是要用什么方式来执行脚本,图方便输入shell就好了

     

    4.添加.gitlab-ci.yml文件
    注:在项目根目录增加YAML格式的CI脚本文件.gitlab-ci.yml

    stages:
    - build
    - deploy
    build:
    stage: build
    script:
    - ./build.sh
    tags:
    - udacs_prod
    deploy:
    stage: deploy
    script:
    - ./deploy.sh
    tags:
    - udacs_prod

    注: 这里的标签与创建的runner标签需要保持一致

    5.启动runner

    检查runner的状态:
    gitlab-ci-multi-runner verify
    Running in system-mode.
    Verifying runner... is alive runner=70c3d017
    Verifying runner... is alive runner=f27021ba


    重启所有runner:
    gitlab-ci-multi-runner run

    重启单个runner:
    gitlab-ci-multi-runner run-single --url http://IP:port/ --token runnerToken --executor shell

    6. 上传代码
    第一次上传:
    Step1: 复制代码到本地
    git clone http://IP:port/**.git
    Step2: 进入代码目录
    cd udacs-mp
    Step3: 新建一个文件
    touch README.md
    Step3:添加到仓库
    git add .
    Step4:添加注释
    git commit -m "init by 20180105"^C
    Step5:提交代码到matser分支(只有一个分支时,默认是matser)
    git push -u origin master
    Username for 'http://IP:port/**.git': 
    Password for 'http://IP:port/**.git':
    Counting objects: 2224, done.
    Delta compression using up to 24 threads.
    Compressing objects: 100% (1977/1977), done.
    Writing objects: 100% (2224/2224), 169.63 MiB | 4.62 MiB/s, done.
    Total 2224 (delta 507), reused 0 (delta 0)
    remote: Resolving deltas: 100% (507/507), done.
    To  'http://IP:port/**.git': 
    * [new branch] master -> master
    分支 master 设置为跟踪来自 origin 的远程分支 master。

    非第一次提交:
    Step1:执行命令git add --all,将所有文件都添加到仓库中,如果想添加某一个文件,则将后面的--all换成你要提交的文件名即可。:
    git add build.sh deploy.sh
    Step2:需要将增加的文件commit到仓库里去,执行命令git commmit -m "注释语句":
    git commit -m "*.sh"
    [master f242b06] *.sh
    Committer: root <root@localhost.localdomain>
    Step3:此时还没完,还要将commit的代码push到远程分支,由于我们本地只有master分支,所以我们可以直接执行命令git push
     git push
    warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching'
    修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
    进行如下设置:
    git config --global push.default matching
    若要不再显示本信息并从现在开始采用新的使用习惯,设置:
    git config --global push.default simple
    参见 'git help config' 并查找 'push.default' 以获取更多信息。
    ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
    为保持兼容,请用 'current' 代替 'simple' 模式)

    Username for 'http://IP:port/**.git': 
    Password for 'http://IP:port/**.git': 
    Counting objects: 5, done.
    Delta compression using up to 16 threads.
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (4/4), 861 bytes | 0 bytes/s, done.
    Total 4 (delta 0), reused 0 (delta 0)
    To  'http://IP:port/**.git': 
    43a928a..f242b06 master -> master

    提交完成后,就会自动触发一次CI部署了。

    重启gitlab:
    /etc/httpd/conf/httpd.conf

    • 问题定位

    问题1: 启动runner时报错信息:
     gitlab-ci-multi-runner run
    Starting multi-runner from /etc/gitlab-runner/config.toml ... builds=0
    Running in system-mode.

    Configuration loaded builds=0
    Metrics server disabled
    WARNING: Checking for jobs... failed runner=70c3d017 status=couldn't execute POST against http://IP/api/v4/jobs/request: Post http://IP/api/v4/jobs/request: dial tcp IP:80: getsockopt: connection refused
    WARNING: Checking for jobs... failed runner=f27021ba status=502 Bad Gateway
    WARNING: Checking for jobs... failed runner=70c3d017 status=couldn't execute POST against http://I/api/v4/jobs/request: Post http://IP/api/v4/jobs/request: dial tcp IP:80: getsockopt: connection refused

    原因是:修改端口后,默认端口不再是80,需要修改runner的配置信息


    问题2: gitlab-ci runner自动执行脚本时,提示脚本权限不够。
    原因是: 直接在gitlab的project上添加的脚本,是root权限,应该修改为gitlab-runner权限。 修改办法,先删掉文件,然后在客户端添加脚本,确认权限后,再commit到服务端。


    参考资料:
    https://www.jianshu.com/p/2b43151fb92e

  • 相关阅读:
    c#格林治时间实现
    K3WISE常用表
    读取单元格数据
    水晶报表使用方法
    vs2010下使用sqlite
    C#执行EXE程序
    SQLLITE HELPER
    SQL LITE安装
    C#多线程
    VS2012 快捷键
  • 原文地址:https://www.cnblogs.com/xiaoer/p/8283266.html
Copyright © 2020-2023  润新知