Docker-compose 部署Gitlab CI/CD

root
233
文章
0
评论
2020年7月23日20:08:19 评论 3832字阅读12分46秒

Docker-compose 部署Gitlab CI/CD

Gitlab CI/CD介绍

Gitlab CI/CD是一个内置在GitLab中的强大工具,它容许你将所有的持续方法应用到您的软件中,而不需要第三方应用程序

Gitlab CI/CD怎样工作

要使用Gitlab CI/CD,所需要的只是一个驻留在Git存储库中的用于程序代码库,以及一个名为.gitlab-ci.yml 的文件中指定的构建,测试和部署脚本,位于存储的 / 路径中。在这个文件中,您可以定义您想要运行的脚本,定义包括和缓存的以来关系,选择你想要运行命令序列和那些你想要并行运行,定义你想要部署的应用程序,并且可以指定自动触发还是手动触发

一旦您添加了.gitlab-ci.yml将配置文件发送到存储库中,Gitlab将检测并使

用名为Gitlab Runner的工具运行脚本,可以创建多个runner

基本的CI/CD

Docker-compose Gitlab 安装部署

version: '3'
services:
    gitlab:
      image: 'gitlab/gitlab-ce'
      restart: always
      hostname: '192.168.1.4:8000'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://192.168.1.4'
          gitlab_rails['gitlab_shell_ssh_port'] = 2222
          nginx['listen_port'] = 80
      ports:
        - '8000:80'
        - '2443:443'
        - '2222:22'
      volumes:
        - ./config:/etc/gitlab
        - ./data:/var/opt/gitlab
        - ./logs:/var/log/gitlab
  runner:
    image: 'gitlab/gitlab-runner:latest'
    container_name: gitlab-runner
    restart: always
    networks:
      - gitlab_default
    volumes:
      - ./config-runner:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
networks:
  gitlab_default:
    external: true

进行创建gitlab

[root@node2 gitlab]# docker-compose up -d 
Creating gitlab-runner   ... done
Creating gitlab_gitlab_1 ... done
[root@node2 gitlab]# docker-compose ps
     Name                    Command                       State                        Ports             
----------------------------------------------------------------------------------------------------------
gitlab-runner     /usr/bin/dumb-init /entryp ...   Up                                                     
gitlab_gitlab_1   /assets/wrapper                  Up (health: starting)   0.0.0.0:2222->22/tcp,          
                                                                           0.0.0.0:8443->443/tcp,         
                                                                           0.0.0.0:8000->80/tcp

访问IP地址进行查看

配置gitlab-runner连上gitlab

注册gitlab-runner

[root@node2 gitlab]# docker exec -it gitlab-runner gitlab-runner register

这里选择的使用docker的方式

直接注册的方法:

root@7dbd07381c83:/# gitlab-runner register --non-interactive --executor "docker" --url "http://192.168.1.4:8000/" --registration-token "2VF1-QHL-AoMyJbAJxzM" --description "devops-runner" --tag-list "docker" --run-untagged="true" --locked="false" --access-level="not_protected"
docker container exec -it gitlab-runner:v12.6.0 register \
  --non-interactive \
  --executor "docker" \
  --docker-image docker:stable \
  --url "http://192.168.1.4:8000/" \
  --registration-token "z1y_sSnUbqqZ5HJNkY5y" \
  --description "docker-runner" \
  --tag-list "docker,aws" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"

修改配置文件

 [runners.docker]
    tls_verify = false
    image = "docker:stable"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    shm_size = 0

修改两行数据

privileged = false #使用docker-in-docker时通常为true

volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]

在注册完之后,我们可以在GitLab获取gitlab-ci token 的页面看到我们刚刚注册的这个 runner

Shell的方式

容器的方式运行shell

要在gitlab.rb配置文件里的URL选项添加真实的gitlab地址

external_url 'http://192.168.1.4:8000'

 

本地安装gitlab-runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
tar -xf  gitlab-runner-0.19.1.tgz
systemctl start gitlab-runner
systemctl enable gitlab-runner

直接注册的方法:

root@7dbd07381c83:/# gitlab-runner register --non-interactive --executor "shell" --url "http://192.168.1.4:8000/" --registration-token "z1y_sSnUbqqZ5HJNkY5y" --description "devops-runner" --tag-list "build,deploy" --run-untagged="true" --locked="false" --access-level="not_protected"
docker container exec -it  gitlab-runner:v12.6.0 register \
  --non-interactive \
  --executor "shell" \
  --url "http://192.168.1.4:8000/" \
  --registration-token "z1y_sSnUbqqZ5HJNkY5y" \
  --description "devops-runner" \
  --tag-list "build,deploy" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"

你的gitlab服务器地址:url

你的项目token: token

给当前runner定义标签,区分多个runner的名字,可指定标签的runner执行任务:tag

Whether to run untagged builds [true/false]: // 如果没写tag的也构建吗?

[false]: true // 如果你不想写tag,就设置true。如果你这里设置了false, .gitlab-ci.yml 配置里又没写上tags:,那么就会一pending

executor 执行命令器,一般写shell 或docker之类的

简单写一个基础的.gitlab-ce.yml文件进行测试

stages:
  - build
  - deploy
build:
  stage: build
  tags:
    - shell
  only:
    - master
  script:
    - echo "mvn clean"
    - echo "mvn install"
deploy:
  stage: deploy
  tags:
    - shell
  only:
    - master
  script:
    - echo "hello deploy"

运行流水线查看运行结果

 

 

 

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年7月23日20:08:19
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
GitLab开发工作流程 Gitlab

GitLab开发工作流程

GitLab开发工作流程 特效分支开发 1.基于master主干分支创建版本分支 (release-1.1.1) 2.基于master分支创建特性分支(feature-1,feature-2.。。。)...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: