gitlab-runner 部署 docker Git



docker run -d --name runner --restart always  -v /var/run/docker.sock:/var/run/docker.sock  -v /data/site/docker/runner:/etc/gitlab-runner  gitlab/gitlab-runner:latest  register   --non-interactive    --executor "docker"   --docker-image alpine:latest  --url "https://git.qianbitou.cn/"   --registration-token "21xm8JfRyKW9r5pg9ReH"  --description "docker-runner"  --tag-list "docker,aws"   --run-untagged="false"  --locked="false"   --access-level="not_protected"


chmod -R 777  /data/site/docker/data/runner

docker exec -it  runner  /bin/bash


# settings>CI/CD>Runners

curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

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

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

gitlab-runner install --user=gitlab-runner --working-directory=/data/site/gitlab-runner

gitlab-runner stop

gitlab-runner start

gitlab-runner register --url https://git.qianbitou.cn/ --registration-token 21xm8JfRyKW9r5pg9ReH



   -c value, --config value                                     指定配置文件

   --template-config value                                      指定模板配置文件

   --tag-list value                                             指定runner的标签列表,逗号分隔

   -n, --non-interactive                                        无交互进行runner注册 

   --leave-runner                                               如果注册失败,不用删除runner 

   -r value, --registration-token value                         runner的注册token

   --run-untagged                              注册运行未加标签的构建,默认当标签列表为空时值为true

   --locked                                                     锁定runner 默认true

   --access-level value        设置访问等级 not_protected or ref_protected; 默认 not_protected 

   --maximum-timeout value                             为作业设置最大运行超时时间 默认零 单位秒

   --paused                                            设置runner为 paused,默认 'false' 

   --name value, --description value                            Runner 名称 

   --limit value                                       程序处理的最大构建数量default: "0"

   --output-limit value                                最大的构建大小单位kb default: "0"

   --request-concurrency value                         作业请求的最大并发数 default: "0"

   -u value, --url value                                        GitlabCI服务器地址

   -t value, --token value                                      GitlabCI服务器token


# 添加yml

我们需要在项目的主目录下添加一个名为.gitlab-ci.yml的配置文件,这个文件用来告诉gitlab-runner要做些什么操作,这样我们提交变更之后,就可以触发CI/CD操作,这里附上一份前端项目的配置文件供参考,执行了简单命令,所做的事情也比较简单,就是执行构建命令,然后将代码打包,发布到远程主机的目录,然后解压.

gitlab-ci.yml

image:
  name: node:14
 
stages:
  # 构建
  - build
  # # 部署
  - deploy
  # # 部署生产
  # - deploy:release
 
 
# 构建产物
build:app:
  stage: build
  artifacts:
    expire_in: 1 day
    paths:
      - dist/
      - package.json
  tags:
    - message
  script:
    - echo '开始打包'
    - yarn
    - yarn build
    - echo '打包结束'
 
# 发布(apt-get update,apt-get install sshpass更新后安装sshpass,用于自动登录,-o StrictHostKeyChecking=no用于防止Host key verification failed报错)
deploy:app:
  stage: deploy
  tags:
    - message
  script:
    - echo '开始发布'
    - echo '检测到以下产物:'
    - ls
    - echo '检测结束'
    - apt-get update
    - apt-get install sshpass
    - tar -cvf dist.tar dist
    - sshpass -p 123456 scp -P 6022 -o StrictHostKeyChecking=no dist.tar test@166.66.66.666:/var/www/pump_sm
    - sshpass -p 123456 ssh -p 6022 -o StrictHostKeyChecking=no test@166.66.66.666 tar -xvf /var/www/pump_sm/dist.tar -C /var/www/pump_sm

至此,我们完成了所有的内容,当我们提交代码到git,就会触发yml中配置的操作,实现流程自动化,我们可以在我们项目的CI/CD窗口中看到对应的流水线


#

1、Enter the GitLab instance URL(输入当前gitlab的访问地址)

2、Enter the registration token(输入我们上一步复制的token)

3、Enter a description for the runner(这一步可以理解为对这个runner实例的描述)

4、Enter optional maintenance note for the runner(可选项,可以直接回车)

5、Enter tags for the runner (comma-separated)(runner的标签,这个需要留意一下,输入一个特定的标签,这个在后面gitlab的yml文件中的tags中需要输入这个值)

6、Enter an executor(这里我们选docker,表示使用docker镜像来执行gitlab-ci.yml文件内部script命令)

7、Enter the default Docker image(表示默认的镜像,由于我是前端项目,所以这里使用node)


#

这一部分开始实现持续集成(CI)和持续交付 (CD),CI是当我们的代码提交之后,触发自动检测、构建和测试这一类操作,CD则是在CI的基础上,将集成后的代码自动化部署到各个环境


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回