ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

gitlab 的 CI/CD 初次尝试

2020-06-10 18:58:19  阅读:415  来源: 互联网

标签:CI git runner gitlab ci CD docker sudo


一、前言

ci/cd 持续集成持续交付,开发人员尝尝会遇到一些重复工作,比如一个asp.net的网站代码,写完之后要发布,然后再将发布内容移动到部署的服务器上再进行部署,就算你只改了一个页面上的一个字,也要将之前的发布部署过程重新做一遍。

CI 解决了这个重复性问题,开发人员只需git push 提交代码,剩下的工作交给CI , 做CI工作的有gitlab-ci/cd  Jenkins k8s等,中小项目gitlab-ci比较合适,因为它更轻量级一些,本篇仅讨论gitlab的cicd功能。

二、环境

 

IP 角色
192.168.10.202(ubuntu) gitlab
192.168.10.208(centos) git,docker,gitlab-runner

 

 

 

 

 

gitlab git docker 三者的安装 略。且本篇是以docker镜像方式部署

 

 上图为gitlab-ci的过程,其实它只是省略了一些我们的手动发布部署过程,将其自动化,但原来的流程还是一个不能少。所以,我们要进行的第一步,就是手动实现一遍流程。

 

三、手动实现一遍

(gitlab服务器) 创建代码仓库---> (开发PC) git clone ---> (开发pc) 修改代码,添加dockerfile ---> (开发pc) git push ---> (部署服务器) git pull ---> (部署服务器) docker build ,docker run 

1、创建代码仓库

 在创建之前,需要在使用git的机器上设置好ssh,可以参考之前的https://www.cnblogs.com/hallejuayahaha/p/11996332.html

要注意的是,在部署机器上,gitlab-runner安装好后,需要添加一个gitlab-runner的用户,需要添加这个用的ssh,因为在ci自动化后,在部署服务器上的操作都是由这个用户来做的,所以不仅要添加它的ssh,也要docker 免去sudo的指令。

总之就是让gitlab-runner用户,在做部署过程中,不要受到权限的阻碍。

******docker免去敲sudo*******

在安装完docker之后,也会出现一个docker用户组,将你要免去敲sudo的用户添加进去,就可以了

sudo usermod -aG docker gitlab-runner

 

添加代码仓库 

 

 并将一个.netcore项目创建进去

  

 添加dockerfile文件,仅需在项目上右键,docker支持,vs就可以自动添加。然后git push

这样开发pc端的代码就都提交到gitlab服务器上了,

 2、部署端git pull ,docker build , docker run

 

 

 

 

 

 

镜像已经成功启动,打开浏览器,输入ip + 暴露出来的端口8090

PS:  .NETCORE web中,startup.cs文件中,有

app.UseHsts();

app.UseHttpsRedirection();

这两行要注释掉,不然网站回一直往https跳转,没法进入http的80端口

 

 整个手动流程成功。

四、使用gitlab-runner来替代手动部署工作

 

gitlab-runner替代这张图上第二个箭头的地方

1、安装gitlab-runner

 下载二进制文件

sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

 赋予权限:

sudo chmod +x /usr/local/bin/gitlab-runner

创建gitlabCI用户:

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

安装并作为运行服务:

sudo /usr/local/bin/gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo /usr/local/bin/gitlab-runner start

 

注册gitlab-runner:

先打开gitlab

 

 记住这个url和token

在部署的服务器上

gitlab-runner register

 

 

 然后回到gitlab 服务器,就可以看到我们的runner已经被发现了

 

 点进去稍作修改

 

 把这个勾上,它可以使.gitlab-ci.yml在没有指定tag标签值时也能运行

 

 

  然后在下面选择,我们想在这个runner上运行的那个项目

3、编写.gitlab-ci.yml

 

 

 

 在项目中添加名为.gitlab-ci.yml的文件

variables:
  GIT_STRATEGY: none
stages:
  - test
test_job:
  stage: test
  tags:
    - vv1
  only: 
    - master
  script:
    - cd /home/centos
    - rm -rf /home/centos/testcdci
    - git clone git@192.168.10.202:root/testcdci.git
    - cd ./testcdci/TestCDCI
   
    - docker stop testcdci
    - docker rm testcdci
    - docker rmi testcdci

   
    - docker build -t testcdci .
    - docker run -itd -p 8090:80 testcdci --restart always 

 

其中的关键字可以参考

https://www.szyhf.org/2017/01/16/gitlab-ci-yml%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E%EF%BC%88%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%91%EF%BC%89/

注意

script节点
这个节点下的命令我们应该很熟悉,就是上面我们手动操作所写的命令
就是这一段,帮助我们完成了手动变自动的。
tags节点,指定了哪一个runner来运行我们的项目
only节点,指定了值部署master分支

注意点2

.gitlab-ci.yml文件,应该放在项目的根目录中,每次Git push ,gitlab都会检测到.gitlab-ci.yml,如果检测到,就按照其脚本进行ci部署

 

 

 

4、开发PC gitpush实现自动化部署

见证奇迹的时刻

git push

 

 

 在项目的cd/ci中可以看到命令详情

 

 我们打开对象应网站看看

 

 已经出现了

现在改一下代码

 

 重提交一次Git push

 

 

 

 

Amazing!!!!!!!!!!!!!!!

标签:CI,git,runner,gitlab,ci,CD,docker,sudo
来源: https://www.cnblogs.com/hallejuayahaha/p/13079698.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有