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

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

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

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

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

转载于:https://juejin.im/post/5d39d410f265da1bb9702309

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐