在 windows 搭建 gitlab 平台
目的:
在 windows 搭建 gitlab 平台,管理代码和文档,且文档(gitbook)实现自动编译部署
更多文章请到 Swift 之 Vapor3 系列目录
方案尝试
- 方案 1:
- windows 安装: docker
- docker 中运行: gitlab, gitlab-runner, gitbook
- 方案 2:
- windows 安装: docker, gitlab-runner, node, gitbook
- docerk 中运行: gitlab
- 方案 3:
- windows 安装: ubantu 虚拟机, nginx, gitlab-runner
- ubantu 虚拟机中安装:docker
- docker 中运行:gitlab
方案1中: 对 docker 的熟练度要求比较高,且比较复杂,不能对 gitlab 的数据进行备份 (-v 运行失败) 方案2中: 降低 docker方向的复杂度, 不能对gitlab 的数据进行备份(-v 运行失败) 方案3中: 可行的方案,但可以进一步优化
正确实践:
方案 3 可以在 windows 只保留 nignx 反向代理功能, gitlab, gitlab-runner, gitbook, node 都放到 ubantu 虚拟机中
windows
-
nginx (需要切到 nginx 目录下运行)
假设将其安装在
E:\nginx-1.16.0\
# cd 到安装的目录 cd E:\nginx-1.16.0\ # 修改nginx配置文件的地方 E:\nginx-1.16.0\conf\nginx.conf 复制代码
nginx 的配置如下:
http {
# 监听 10080 端口,此为 gitlab 的访问端口
server {
listen 10080;
server_name localhost;
location / {
proxy_pass 192.168.137.200:10080; # 虚拟机中的 10080 端口, 虚拟机的 ip 为 被配置为 192.168.137.200
}
}
# 监听 4000 端口,此为 gitbook 的访问端口
server {
listen 4000;
server_name localhost;
location / {
proxy_pass 192.168.137.200:4000;
}
}
}
复制代码
重载 nginx的配置
cd E:\nginx-1.16.0\
./nginx.exe -s reload
复制代码
nignx 常用的命令有
taskkill /f /im nginx.exe # 关闭所有 nginx 进程
./nginx.exe -s stop
./nginx.exe -s quit # 处理完现在的请求后停止
./nginx.exe -s reload # 重新加载配置,并重启进程
复制代码
hyper-v 虚拟机安装 ubantu
创建Hyper-V虚拟机
安装教程就不在这里细讲了,这里说几个点:
-
对于 ubantu 的 iso 下载,可以找几个国内的镜像,比如这里 mirrors.163.com
-
在用自己的 iso 镜像启动的时候,会遇到不能启动的情况 那么看尝试下关闭安全启动
-
虚拟机固定Ip
操作步骤可参考 Hyper-V 网络设置 虚拟机固定Ip
可以手动给虚拟机配置个静态 ip. 在 ubantu 的ui 界面,选择配置->网络->ipv4->手动配置,完成后重启虚拟机就好。
然后上面的操作后,虚拟机是无法访问外网的,那么该如何办?可参考 Hyper-V中安装CentOS7设置静态ip并且可以连接外网
-
虚拟机 ubantu 上安装
- docker
- nginx
- nodejs
- gitbook
-
docker
sudo docker image ls # 查看 image 镜像 sudo docekr image rm <iamgeid> 删除镜像 sudo docker pull gitlab/gitlab-ce 下载镜像 sudo docker container ls # 查看容器镜像 sudo docker contaier stop <容器名> 停止运行容器 sudo docker container start <容器名> 运行容器 sudo docker contaienr restart <容器名> 重启容器 sudo docker container rm <containerid> 删除容器 复制代码
-
gitlab-runner
sudo gitlab-runner list # 查看存在的 runner sudo gitlab-runner verify # 核实 runner sudo gitlab-runner register # 注册 sudo gitlab-runner restart # 重启 sudo gitlab-runner start sudo gitlab-runner stop 复制代码
配置参考
-
docker 添加 gitlab
创建 gitlab 文件夹
$ cd /srv/ $ sudo mkdir gitlab 复制代码
创建命令
$ sudo docker pull twang2218/gitlab-ce-zh $ sudo docker run --detach \ --hostname localhost \ --publish 10443:443 --publish 10080:80 --publish 8888:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ twang2218/gitlab-ce-zh:latest 复制代码
-
docker 添加 nignx
创建 nginx 文件夹
$ cd /srv/ $ mkdir nginx 复制代码
创建命令
$ sudo docker pull nginx $ sudo docker run --name nginx -d -p 4000:80 -v /srv/nginx/html:/usr/share/nginx/html nginx 复制代码
-
gitlab-ci.yml
before_script: - npm --version - gitbook install stages: - deploy pages: stage: deploy tags: - ldoc script: - ls - gitbook build - ls - cp _book/* /srv/nginx/html -r -f only: - master 复制代码
总结
整个过程走下来也挺简单的,但是期间耗费了些时间,就好比 gitlab 部署在 docker 上数据丢失,数据卷无法在 windows 备份, 引我叹言 "gitlub not love windows"。对于习惯类 linux 的操作系统,windows 的短处必显。对于笨重的虚拟机来说,docker是无比的强大快捷。知识的点逐渐连成线,就不会学得太泛,让你烦躁!
看似简单的一个部署过程,集群
文章到此结束,如果有遇到问题或者文章不对的地方,请在文章底部留言.