在 windows 搭建 gitlab 平台

目的:

在 windows 搭建 gitlab 平台,管理代码和文档,且文档(gitbook)实现自动编译部署

方案尝试

  • 方案 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中: 可行的方案,但可以进一步优化

-v 运行失败: Volume trouble with GitLab docker image on Windows

正确实践:

方案 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 镜像启动的时候,会遇到不能启动的情况 那么看尝试下关闭安全启动



  • 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是无比的强大快捷。知识的点逐渐连成线,就不会学得太泛,让你烦躁!

看似简单的一个部署过程,集群

文章到此结束,如果有遇到问题或者文章不对的地方,请在文章底部留言.