通过Docker安装Gitlab-Runner实现Gitlab自动化部署

【gitlab 16.0】简单介绍了通过安装gitlab-runner以及编写gitlab-ci.yml实现gitlab的自动化部署

最近在写管理后台项目,需要部署在内网服务器上,最省事的操作是在开发电脑上运行 “npm run build” 生成静态文件,然后远程复制到内网服务器上。这种方式非常可靠也比较麻烦,因为远程复制需要先压缩再解压缩,还需要远程桌面或者ssh。于是我就想到了使用自动构建工具,之前的项目组使用的是jenkins,配置完成后每次只需要手动点击构建即可。由于我们已经部署了内网gitlab服务,就想着用gitlab自带的gitlab-ci来实现自动化部署。

安装gitlab

首先还是稍微讲一下如何部署Gitlab,有很多种部署方式,我用的是Docker部署,只需要简单的一份Docker-Compose配置文件,主要是配置了port和volums映射,然后直接启动。由于不是本篇文章的重点,不再详细介绍gitlab的安装。

version: '2.3'

services:
  gitlab:
    restart: always
    container_name: gitlab
    privileged: true
    image: gitlab/gitlab-ce:latest
    network_mode: bridge
    ports:
    - "80:80"
    - "22:22"
    - "443:443"
    volumes:
    - ./config:/etc/gitlab
    - ./logs:/var/log/gitlab
    - ./data:/var/opt/gitlab

新增gitlab-runner

gitlab ci文档

什么是gitlab-runner呢?其实我也不太理解,我的理解是它有点像worker,具体的CI流程需要有runner才能运行,每个项目可以有单独的runner也可以共享runner。

打开管理中心-CI/CD-Runner界面,点击<新建实例Runner>,这里根据服务器选择操作系统,需要填写标签,标签的意义在于只有CI作业也打了相同的标签才能被runner运行。所以这里可以选择勾选<运行未打标签的作业>,这样每个CI作业都会被runner运行。最大超时时间也可以设置,默认好像是一小时。

new runner

创建后会给出一个token,这个token关闭页面后就无法查看,需要妥善保存。然后接下来我们需要运行runner实例,并且通过url和token来连接到gitlab。

运行gitlab-runner实例

gitlab-runner安装

安装gitlab-runner也有很多种方法,分为winows、linux、macos。当时咱还是docker一把抓

version: "3"

services:
  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    container_name: gitlab-runner-1
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./config:/etc/gitlab-runner

然后配置config.toml

concurrent = 1      # 并发数
check_interval = 0  # 检查间隔,为0时为默认间隔

[session_server]
  session_timeout = 1800

[[runners]]
  name = "gitlab-runner"
  url = "http://192.168.0.1/"          ## 这里填写gitlab的url
  token = "glrt-WsUG_gNrRWPvnPzsxsBb"  ## 这里填写gitlab-runner的token        
  executor = "docker"                  ## 以docker的方式运行
  [runners.docker]
    tls_verify = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock"]
  [runners.cache]
    Insecure = false

检测gitlab-runner状态

部署gitlab-runner成功后,再次回到管理中心-CI/CD-Runner界面,如果配置正确的话,此时这个runner已经是在线状态了

online

在项目中配置ci/cd

然后我们就可以配置具体的项目了,打开项目的设置-CI/CD页面,可以选择勾选实用共享runner,也可以新建项目专属的runner或者群组runner,这里我选择用刚才创建的共享runner。

CI/CD

然后我们来到项目设置中的构建-流水线编辑器,就可以在线编辑gitlab-ci.yml文件了。这是我让AI生成的一份demo,具体如何配置这里就不讲了,因为我也不会。

image: node:latest

stages:
  - build
  - test
  - deploy

variables:
  NODE_ENV: production

cache:
  paths:
    - node_modules/

before_script:
  - npm install

build:
  stage: build
  script:
    - npm run build
  artifacts:
    paths:
      - dist/
    expire_in: 1 week

test:
  stage: test
  script:
    - npm run test

deploy:
  stage: deploy
  script:
    - echo "Deploying to your server..."
  only:
    - main
  environment:
    name: production
    url: https://your-production-url.com

注意这里有设置only: - main,表示只有main分支才会自动构建,如果配置文件正确,在你提交代码到main分支后,就会自动开始构建,分配一个空闲可用的runner,按步骤进行构建部署。

Licensed under CC BY-NC-SA 4.0
加载中...
感谢Jimmy 隐私政策