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"
运行流水线查看运行结果

评论