如何搭建基于Docker的gitlab服务器集成CI/CD实现DEVOPS(完整版)
From this lesson you will learn about
1,How to install and configure a docker based gitlab server
2,How to install and configure a docker based seperated gitlab-runner
3,The basic usage of expect utility
4,How to trigger a script task when committing files to gitlab server
5,How to map a local folder to a container folder
#从本课程你将学会
1,怎样安装和配置一个基于docker的gitlab server 2,怎样安装和配置一个基于docker的单独的gitlab-runner 3,expect 工具的基本使用 4,怎样在提交文件时触发gitlab server的脚本任务 5,怎样映射本地文件夹到容器文件夹 The configuration directory of gitlab server(in container)(gitlab server在容器中的配置目录) /etc/gitlab #gitlab configuration directory(配置文件目录) /var/log/gitlab #gitlab log directory (日志目录 ) /var/opt/gitlab #gitlab data directory(数据目录) The gitlab server related ports:443,80,22
环境:CentOS7 ,Docker CE
1,Pull the gitlab image(拉取gitlab镜像)
sudo docker pull gitlab/gitlab-ce

2,
Prepare gitlab local foldders (准备gitlab本地文件夹)
sudo mkdir /home/gitlab
sudo chmod -Rf /home/gitlab
sudo cd /home/gitlab
sudo mkdir etcgitlab
sudo mkdir loggitlab
sudo mkdir optgitlab
3,Create a docker network (创建一个docker网络)
sudo docker network create --attachable --driver overlay my-net-git
#--attachable ,can be manually attached (可被手动附加)
#--overlay , can support Docker Swarm network (可支持Docker Swarm集群网络)

4,Run the gitlab server (运行gitlab server镜像)
sudo docker run -td -p : -p : -p : --name gitlab --restart always \ --network my-net-git -v /home/gitlab/etcgitlab:/etc/gitlab -v /home/gitlab/loggitlab:/var/log/gitlab -v /home/gitlab/optgitlab:/var/opt/gitlab gitlab/gitlab-ce
#--network my-net-git let the gitlab container join the network my-net-git(让容器加入到my-net-git网络)
#-p ,host port to container port mapping (主机到容器的端口映射)

5,Prepare gitlab-runner Dockerfile
sudo mkdir docker
sudo chmod docker
sudo vi docker/Dockerfile
Copy below content to the file
FROM centos:6.10 MAINTAINER Liping RUN bash -c "curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash" RUN bash -c "yum install -y expect.x86_64 expect-devel.x86_64" RUN bash -c "yum install -y gitlab-runner" ADD ./docker/my-init.sh /home/sh/my-init.sh RUN chmod /home/sh/my-init.sh CMD ["/home/sh/my-init.sh"]
6,Open your gitlab server url ,the first access will ask you to set a new password.
Navigate to http://localhost:9080/admin/runners
Find the Server URL and to Token for Runner Registration.
打开gitlab server url,首次访问时会要求设置一个新密码。导航到http://localhost:9080/admin/runners
查找图所示 的url 和token 用于Runner 注册.

7,Prepare the Runner Registration script (准备Runner的注册脚本)
sudo vi docker/my-init.sh
Copy content below to the file replace the red font portion to your own data(复制如下内容至文件,使用你自己第7步中查到的数据,替换红色字体部分)
#!/usr/bin/expect #the gitlab runner init command(gitlab runner 的初始化命令) spawn gitlab-runner register --locked=false expect "*gitlab.com/):" #input the gitlab server url ,replace with your real gitlab server url(输入gitlab 服务>器地址,使用你实际的gitlab server地址代替) send "http://localhost:9080/\r" expect "*token for this runner:" #replace with your real token send "FSrjiy8_9oDbst2-xX-S\r" expect "*description for this runner:*" send "myrunner\r" expect "*tags for this runner (comma separated):*" send " \r" expect "*shell,*" send "shell\r" exec bash -c "service gitlab-runner restart" exec bash -c "read"
8,
sudo docker build -t lipingsg/mygitrunner -f docker/Dockerfile .


9,Start the gitlab-runner container (启动gitlab-runner容器)
sudo docker run -td --name my_gitrunner --network my-net-git lipingsg/mygitrunner

10,Go to the gitlab server url http://localhost:9080/admin/runners , verify the registration was done.
导航至http://localhost:9080/admin/runners 验证注册是否已完成。

11,Go to http://localhost:9080/admin/application_settings/ci_cd
Uncheck “Default to Auto DevOps pipeline for all projects”and save.
进入ci_cd 页面 取消“Default to Auto DevOps pipeline for all projects”并保存

12,Create a new Project in gitlab ,and create a .gitlab-ci.yml to test the trigger fuction for a script task.(创建一个新工程,在工程中创建一个 .gitlab-ci.yml 文件 用来测试自动触发脚本任务是否完成) .gitlab-ci.yml的内容如下
stages:
- test
- build
- deploy
job 1:
stage: test
script:
- echo "$(date +"%Y%m%d%H%M%S")" job 1 done
job 2:
stage: build
script:
- echo "$(date +"%Y%m%d%H%M%S")" job 2 done
job 3:
stage: deploy
script:
- echo "$(date +"%Y%m%d%H%M%S")" job 3 done





13,The gitlab server DEVOPS environment is working.
Gitlab 服务器的DEVOPS功能已经完成,如果有任何疑问请在下面提出~
原创内容,版权归属千分网络科技,转载需经许可,并附带原始链接,谢谢!
如何搭建基于Docker的gitlab服务器集成CI/CD实现DEVOPS(完整版)的更多相关文章
- 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境
写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 文章和搭建环境所需要的yml文件已收 ...
- 基于 Docker 和 GitLab 的前端自动化部署实践笔记
基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...
- Windows 7下 搭建 基于 ssh 的sftp 服务器
Windows xp 下 搭建 基于 ssh 的sftp 服务器,服务器端可以用 freesshd,F-secure server等,filezilla server不可用,之前傻乎乎的用file ...
- 搭建并配置本地GitLab服务器教程
由于工作单位不一定能够方便使用外部网络,现以下载rpm包来搭建一套本地GitLab服务器. 1. 系统准备 系统:redhat 7.3 2. 下载所需安装包 去官网下rpm包,下载地址,ce是免费的社 ...
- Linux搭建基于BIND的DNS服务器
Linux搭建基于BIND的DNS服务器 实验目标: 通过本实验掌握基于Linux的DNS服务器搭建. 实验步骤: 1.安装BIND 2.防火墙放通DNS服务 3.编辑BIND的主配置文件 4.编 ...
- Linux搭建基于Apache的HTTP服务器
Linux搭建基于Apache的HTTP服务器 实验目标: 通过本实验掌握基于Linux的WWW服务器搭建. 实验步骤: 1.安装http服务 2.防火墙放通http服务 3.编辑测试网页 4.开 ...
- Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...
- 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)
写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 服务器规划 IP 主机名 节点 操作 ...
- 基于Docker+Jenkins+Gitlab搭建持续集成环境
随着DevOps理念和敏捷理念的发展,我们希望通过自动化技术,加快项目的迭代.尤其是当使用微服务方案后,面临在大量的项目构建和部署工作,借助于jenkins的持续集成,可以快速把应用打包成docker ...
随机推荐
- Sql Server中变的定义以及赋值的应用
--申明变量declare @ad_begin datetimedeclare @fydl varchar(50)declare @userid varchar(50)declare @jdrbm v ...
- Aizu-2224Save your cats并查集+最小生成树
Save your cats 题意:存在n个点,有m条边( input中读入的是 边的端点,要先转化为边的长度 ),做一个最小生成树,使得要去除的边的长度总和最小: 思路:利用并查集和求最小生成树的方 ...
- SDU暑期集训排位(3)
B. Mysterious LCM 做法 保留 \(a_i|x\) 的元素,其它元素解体. \(a_i\) 的某个质因子的指数,要和 \(x\) 的这个质因子一样多,才有贡献,否则这个质因子它在划水啊 ...
- 《即时消息技术剖析与实战》学习笔记4——IM系统如何保证消息的可靠性
IM 系统中,保证消息的可靠投递主要体现在两方面,一是消息的不丢失,二是消息的不重复. 一.消息不丢失 消息丢失的原因 首先看一下发送消息的流程,如下图所示: 消息.可以采取"时间戳比对&q ...
- Jmeter 之 逻辑控制器 if 控制器
最近工作不忙,利用空闲时间整理了下Jmeter的相关知识,下面给大家分享下Jmeter中 如果(if)控制的使用和应用. 如下图:线程组 > 添加 > 逻辑控制器 > 如果 (if) ...
- Word 远程调用失败:异常来自 HRESULT:0x800706BE
之前服务器上一直运行正常的,这几天突然报错 “远程过程调用失败. (异常来自 HRESULT:0x800706BE) ” 解决方案:组件服务—我的电脑—属性—COM安全—编辑默认值 添加各种用户权限 ...
- java中多线程执行时,为何调用的是start()方法而不是run()方法
Thead类中start()方法和run()方法的区别 1,start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状 ...
- Python(Head First)学习笔记:三
3 文件与异常:调试.处理错误.迭代.改进.完善 处理错误:利用Python的异常处理机制来处理异常情况. 程序外部的数据:大多程序基本模型:首先输入数据,进行处理,然后存储.显示.打印或传输. ...
- python安装virtualenv虚拟环境步骤
一.安装virtualenv 点击左下角最边上菜单栏输入cmd,打开命令行 2.根据版本的不同输入命令pip install virtualenv(或者pip3 install virtualen ...
- STL中bitset的用法
终于又来写博客了 == bitset存储的是二进数位,就和一个bool性数组差不多.用法上和数组的操作方式也差不多. 每位只占一个字节,大大优化了空间,可以通过数组形式访问. bitset定义 可以用 ...