GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署( 二 )

注册 GitLab-runner首先查看在GitLab页面的 菜单 > 设置 > CI/CD > Runner 中提到的内容 。如下图所示:

GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署

文章插图
接下来开始注册 GitLab-runner:
# 按照官网的描述,注册完成后,才可以使用GitLab-runner的实例# 启动后的注册命令,注册过程中,需要按提示填写几项内容gitlab-runner register注册过程中 , 填写的内容如下图所示:
GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署

文章插图
注册完成后,Runner 区域会多出一个 [可用的指定runner实例] 。
配置 GitLab-runner对 [可用的指定runner] 做一个简单的配置,这里设置自动部署的触发条件 , 以执行 CI/CD 中的流水线 。如下图所示:
GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署

文章插图
GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署

文章插图
以上场景:当有新的签入变更时 , 触发 CI/CD 中流水线的执行 。
Git 安装在自动化部署时,这里计划用 Git 工具来远程拉取源代码,以便于后续的编译发布动作 。
dnf install git -ydotnet 环境自动部署时 , 需要编译发布过程,所以这里安装 dotnet-sdk微软官方提供的镜像站:https://packages.microsoft.com/config/
# 首先安装微软镜像库,以便于从微软镜像站中安装所需的 dotnet-sdk 等# 这里选用与环境适配的软件库 RHEL8版 下载到 /etc/yum.repos.d/ 中curl -O /etc/yum.repos.d/ https://packages.microsoft.com/config/rhel/8/prod.repo# 重建镜像库缓存dnf clean packages && dnf clean all && dnf makecache## 先安装运行 dotnet 时必要的 libicu 工具dnf install libicu -y# 安装适合于开发环境的 dotnet-sdk-6.0(SDK版支持测试、编译、发布、运行等)dnf install dotnet-sdk-6.0 -y自动化部署配置首先自定义一个存放部署文件的目录,假设创建 /opt/gitlab-devops-app 作为部署的目录 。
# 安装 gitlab-runner 时,已经创建了名为 gitlab-runner 的用户名# 后续会用 gitlab-runner 在此做拉取源代码、编译、发布等动作# 这里授予 gitlab-runner 的所属用户对部署文件夹的操作权限# 赋予所属用户chown -R gitlab-runner:gitlab-runner /opt/gitlab-devops-app# 并授予可执行权限chmod -R +x /opt/gitlab-devops-app自动化部署 - CI/CD 流水线配置在CI/CD菜单的编辑器中 , 先选择对应的项目分支,再配置流水线按钮,自动生成名为 .gitlab-ci.yml 的文件于此项目的根目录;在这里,流水线配置文件 .gitlab-ci.yml 决定了自动化部署的步骤过程 。起初GitLab会给出一个配置模板,这里将配置好的内容如下:
# 总流程 - 按序运行# 这里自定义了七个步骤,可按实际情况自定义名称和顺序,通过命令完成部署stages:           # List of stages for jobs, and their order of execution  - stop          # Job1:停止原有站点运行  - clear         # Job2:清除原有部署文件  - clone         # Job3:远程克隆源代码  - test          # Job4:单元测试  - build         # Job5:编译源代码  - publish       # Job6:发布项目  - deploy        # Job7:重新启动站点运行#### 以下每个作业(步骤节点)对应上述总流程的步骤名称,如下示例每个节点区块格式:# {自定义作业名称}:#  stage: {对应上述总流程定义的作业节点名称}#  script:#  - {按序单行要执行的命令}#  - {按序单行要执行的命令}#### Job1:停止原有站点运行stop-job:  stage: stop  script:    - ps -ef | grep Web.dll | grep -v grep | awk '{print $2}' | xargs -r kill -9 && true=0 || false=1## Job2:清除原有部署文件clear-job:  stage: clear  script:    - cd /opt/gitlab-devops-app/    - rm -rvf my-project-test## Job3:远程克隆源代码clone-job:  stage: clone  script:    - cd /opt/gitlab-devops-app/    - git clone -b {分支名称} http://{用户名}:{密码}@{ServerIP}/{project-url}/my-project-test.git## Job4:单元测试;对克隆下来的源代码进行操作unit-test-job: stage: test script:   - cd /opt/gitlab-devops-app/my-project-test/Web/   - dotnet test Web.csproj## Job5:编译源代码build-job:  stage: build  script:    - cd /opt/gitlab-devops-app/my-project-test/Web/    - dotnet build --configuration Release## Job6:发布项目publish-job:  stage: publish  script:    - mkdir /opt/gitlab-devops-app/my-project-test/publish/    - cd /opt/gitlab-devops-app/my-project-test/Web/    - dotnet publish --configuration Release --no-build --output ../publish/## Job7:重新启动站点运行deploy-job:  stage: deploy  environment: production  script:    - cd /opt/gitlab-devops-app/my-project-test/publish/    - nohup dotnet Web.dll --urls http://*:5000 > /dev/null 2>&1 &

推荐阅读