当前位置: 首页 > article >正文

gitlab-cicd部署安装与具体操作

、安装

本例中是用安装包直接在ubuntu下安装的,也可以用docker镜像。

curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpm

rpm -i gitlab-runner_amd64.rpm

安装runner后,需要跟在runner所在服务器安装jdkmaven

安装完成后,目录/home/gitlab-runner/

、注册Runner

1、打开gitlab项目

2、在服务器中输入:gitlab-runner register

3、出现以下提示: Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )

复制第一步中的URL粘贴。

4、Please enter the gitlab-ci token for this runner

复制第一步中的token粘贴。

5、Enter a description for the Runner, you can change this later in GitLab’s UI(添加Runner描述):

6、Please enter the gitlab-ci tags for this runner (comma separated):

这个相当于runner的标识,需要认真起名,因为同一个项目可以用不同tag的runner启动。Tag不同使用的runner会变化。

7、Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:

一般都选择shell。

8、注册完成

、注意

如果多个项目用同一个服务器上安装的runner,且多个项目同时提交运行runner的时候,则会按项目提交的顺序运行具体的CICD流程,其余的项目CICD流程会处于停滞状态。

运行gitlab-ci.yml中没写tag的流程,需要如图操作。(不推荐)

四、更改cicd执行权限为root

如果不更改的话,很多命令无法执行

编辑修改 /etc/systemd/system/gitlab-runner.service 文件,将 --user 修改为 root

重启服务

执行如下命令重启 gitlab-runer 服务

systemctl daemon-reload

systemctl restart gitlab-runner

五、gitlab-ci.yml文件ssh执行不了

如果登录失败,则在最后面加上<< remotessh

ssh root@XXXX << remotessh

六、删除runner

每一个项目都对应有一个runner,删除操作如图所示,点进需要删除runner的项目中。

七、后端项目.gitlab-ci.yml文件编写示例

在后端项目的根目录下新建一个名为.gitlab-ci.yml的文件,如图:

内容:

stages:
  - build
  - deploy
  - sonarqube-check

#测试

# 定义安装包的存放位置和Tomcat服务器的地址的变量,便于后续部署使用.
variables:
  CIDEMO_PACKAGE_DIR: '/home/gitlab-runner/packages'
  SERVER_IP_ADDRESS: 'root@192.168.0.23'
  SERVER_HOME_DIR: '/home/citc/test'

##编译和测试
build:
  tags:
    - wgtag
  stage: build
  before_script:
    - echo "开始打包"
  after_script:
    - echo "打包结束"
  script:
    - mvn clean package -Dmaven.test.skip=true
    - rm -rf $CIDEMO_PACKAGE_DIR/test.jar
    - cp -a target/test.jar $CIDEMO_PACKAGE_DIR/test.jar

sonarqube-check:
  tags:
    - wgtag
  stage: sonarqube-check
  variables:
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cache
    GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script: 
    - mvn verify sonar:sonar -Dsonar.projectKey=test_sys_backend_hivemqclient_Aassasas1ZtbIXauvX  -Dsonar.login=$SONAR_TOKEN
  allow_failure: true
  only:
    - master # or the name of your main branch    

#打包任务:
deploy:
  tags:
    - wgtag
  stage: deploy
  script:
    - echo '准备将最新的jar包复制、保存到192.168.0.23服务器下.'
    - scp  $CIDEMO_PACKAGE_DIR/test.jar   $SERVER_IP_ADDRESS:$SERVER_HOME_DIR
    - ssh root@192.168.0.23 << remotessh
    - cd $SERVER_HOME_DIR
    #先删除容器,再删除镜像,直接删除运行中的容器的镜像会产生虚悬镜像
    - docker rm -f test-cicd
    - docker rmi -f test-cicd:1.0
    - docker build -t test-cicd:1.0 .
    - docker run -d --name test-cicd -p 1008:1088test-cicd:1.0

注意:rm -rf node_modules是删除原有的前端依赖包,rm -rf package-lock.json是删除原有的依赖版本文件,不然可能依赖下载会有问题。

九、gitlab-cicd运行结果查看

点击status

点击具体的job则会显示执行的日志。

十、为何配置免密

1、如果gitlab-runner和部署服务的服务器不同,则使用命令切换到另外一台服务器前,必须配置免密登录,不然会导致部署失败。

2、yml文件中stage执行的顺序则是stage定义的顺序(从上到下)

3yml文件中编写命令请先删除容器,再删除镜像,直接删除运行中的容器的镜像会产生虚悬镜像

十一、视频学习(仅供参考)

kk 2022-10-18 20-40-47-gitlab-ci-cd-后部分-整体流程_哔哩哔哩_bilibili

十二、gitlab-ci.yml配置详解

关键字

是否必须

描述

script

必须

定义Runner需要执行的脚本或命令

image

非必须

需要使用的docker镜像,请查阅该文档

services

非必须

定义了所需的docker服务,请查阅该文档

stage

非必须

定义了工作的场景阶段,默认是test

type

非必须

stage的别名,不赞成使用

variables

非必须

在job级别上定义的变量

only

非必须

定义哪些git引用(分支)适用该job

except

非必须

定义了哪些git引用(分支)不适用该job

tags

非必须

定义了哪些runner适用该job(runner在创建时会要求用户输入标签名来代表该runner)

allow_failure

非必须

允许任务失败,但是如果失败,将不会改变提交状态

when

非必须

定义job什么时候能被执行,可以是on_success,on_failure,always或者manual

dependencies

非必须

定义了该job依赖哪一个job,如果设置该项,你可以通过artifacts设置

artifacts

非必须

所谓工件。。就是在依赖项之间传递的东西,类似cache,但原理与cache不同

cache

非必须

定义需要被缓存的文件、文件夹列表

before_script

非必须

覆盖在根元素上定义的before_script(如果写在某一个阶段中,则在此阶段脚本执行前会执行;如果独立于每个阶段,则是在每个阶段运行前都会运行)

after_script

非必须

覆盖在根元素上定义的after_script(如果写在某一个阶段中,则在此阶段脚本执行后会执行;如果独立于每个阶段,则是在每个阶段运行后都会运行)

environment

非必须

定义让job完成部署的环境名称

retry

非必须

定义job失败后的自动重试次数

更多描述:gitlab-ci配置详解(二)_gitlab ci dependencies-CSDN博客


http://www.kler.cn/a/427762.html

相关文章:

  • 在visio2021 中插入MathType公式
  • 【bug】pymysql.err.OperationalError: (1046, ‘No database selected‘)
  • React16搭建-GPT回答
  • 游戏引擎学习第36天
  • [Flutter]Json序列化json_serializable使用属性全介绍
  • 嵌入式蓝桥杯学习4 lcd移植
  • 【Linux】09 -- Linux下的shell编程(一)
  • 针对xpath局限的解决方案
  • 室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计(整合版)
  • docker 安装mysql8.0.29
  • 【Leetcode Top 100 - 扩展】876. 链表的中间结点
  • OpeAI大模型学习(一)
  • WPF Prism ViewDiscovery
  • Python机器学习笔记(五、决策树集成)
  • 以攻击者的视角进行软件安全防护
  • Java爬虫技术:全面获取电商平台所有商品信息
  • C++ - map,set
  • 【Java Web】Tomcat 快速入门
  • Next.js 实战 (二):搭建 Layouts 基础排版布局
  • 【信息系统项目管理师】第8章:项目整合管理过程详解