我想在Windows子系统上使用GitLab CE进行开发

因为对Ruby on Rails的开发很感兴趣,想要了解GitLab的内部结构,所以决定搭建开发环境来尝试一下。

环境

    Windows 10 Pro Insider Preview 10.0.17074

建立 GitLab Development Kit

我会在GitLab.com上先fork GitLab Community Edition。然后使用GitLab开发工具包来运行这个fork的存储库。

只要阅读prepare.md和set-up-gdk.md这两个官方文档,基本上能够理解,但我们会根据当前环境的具体情况进行相应的调整。

安装Ruby

在这里,我们将使用rbenv进行环境设置,尽管在文件中使用了RVM:Ruby版本管理器。此外,apt-get下载的rbenv/ruby-build可能已过时,所以我们将通过git clone来使用,以便能够使用Ruby 2.3.6版本。

$ sudo apt-get update
$ sudo apt-get install rbenv
$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
$ rbenv install 2.3.6
$ rbenv local 2.3.6

安装Node.js

使用 Node 版本管理工具安装最新版节点。

$ sudo apt-get install nodejs
$ npm install -g n
$ n latest

安装Go语言。

由于这个版本也是通过apt-get下载的,所以它很旧,我们将安装最新版本。

$ sudo add-apt-repository ppa:gophers/archive
$ sudo apt-get install golang-1.9-go
$ echo 'export PATH=$PATH:/usr/lib/go-1.9/bin' >> ~/.bash_profile
$ source ~/.bash_profile

其他包裹

安装Yarn。

$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn

接下来,使用WSL(Windows子系统Linux)在实验性的Windows 10上,通过apt-get命令获取包。

$ sudo apt-get install ruby-dev
$ sudo apt-get install git postgresql postgresql-contrib libpq-dev redis-server libicu-dev cmake g++ libkrb5-dev libre2-dev ed pkg-config

启动PostgreSQL。

创建一个名为postgres的用户,并允许连接。

$ sudo service postgresql start
$ sudo passwd postgres
$ su - postgres
$ psql
postgres=# alter role postgres with password 'superstrongpassword';

我会尝试连接确认一下。
$ psql -h localhost -U postgres

如果可以连接成功,将对database.yml进行配置更改。

development:
  adapter: postgresql
  encoding: unicode
  database: gitlabhq_development
  host: localhost
  username: postgres
  password: superstrongpassword
  port: 5432
  pool: 6

Redis的启动

需要对其进行设置,以便通过Unix套接字连接。然而,由于涉及Windows端和WSL端,导致无法正常工作,因此需要进行以下更改。

将以下的配置写入/etc/redis/redis.conf。

unixsocket /var/run/redis/redis.sock
unixsocketperm 777

重启Redis。

$ sudo service redis-server restart

为了读取这个socket文件,首先我们需要将lib/gdk.rb文件修改如下。

diff --git a/lib/gdk.rb b/lib/gdk.rb
index 9e67d19..d9c159b 100644
--- a/lib/gdk.rb
+++ b/lib/gdk.rb
@@ -69,7 +69,7 @@ module GDK
     when 'psql'
       exec('psql', '-h', File.join($gdk_root, 'postgresql'), '-p', pg_port.to_s, *ARGV, chdir: $gdk_root)
     when 'redis-cli'
-      exec('redis-cli', '-s', File.join($gdk_root, 'redis/redis.socket'), *ARGV, chdir: $gdk_root)
+      exec('redis-cli', '-s', '/var/run/redis/redis.sock', *ARGV, chdir: $gdk_root)
     when 'help'
       puts File.read(File.join($gdk_root, 'HELP'))
       true

同时,还需要在后续的命令中对生成的redis.conf和resque.yml进行路径替换,替换为这个路径。

development: unix:/var/run/redis/redis.sock
test: unix:/var/run/redis/redis.sock
port 0
unixsocket /var/run/redis/redis.sock
[redis]
URL = "unix:///var/run/redis/redis.sock"

您可以使用 gkd redis-cli 进行连接验证,以确定设置是否正常。

$ gdk redis-cli
> ping
PONG

GitLab 社区版搭建

$ gem install gitlab-development-kit
$ gdk init
$ cd gitlab-development-kit
$ gdk install gitlab_repo={{forkしたリポジトリのURL}

在gdk install过程中会运行诸如git clone、yarn install、bundle install等常见操作。
这个过程非常漫长,有时会在中途失败。错误没有重现性,但只要坚持尝试几次就能成功。

虽然事实上我本来想使用bundler来构建如下所示的方式,但是gdk安装并没有成功。由于gdk本身也使用了bundler,所以路径解析等方面可能会有一些困难,但我没有详细调查。

$ bundle init
$ echo 'gem "gitlab-development-kit"' >> Gemfile
$ bundle install --path vendor/bundle
$ bundle exec gdk init
$ cd gitlab-development-kit
$ bundle exec gdk install gitlab_repo={{forkしたリポジトリのURL}

更改配置文件

我們將在 WSL 那一側創建 gitlab.socket 檔案,方法與 redis 類似。

$ sudo mkdir /var/run/gitlab/
$ sudo chmod 777 /var/run/gitlab/
rails_socket="/var/run/gitlab/gitlab.socket"
listen '/var/run/gitlab/gitlab.socket'

开动

安装已经完成。

$ gdk run

尽管通过上述命令启动了由foreman管理的服务器,但尝试访问 http://localhost:3000 时,并未显示任何页面…

请提供以下内容的中文本地化释义,仅需要一个选项:

参考

– 供参考
– 参数
– 参考资料

    • Findings about the WSL (#223) · Issues · GitLab.org / GitLab Development Kit · GitLab

 

    • Rails server doesn’t boot up due to getsockopt(2) error · Issue #1982 · Microsoft/WSL

 

    GitLab Development Kit で OSS開発 に参加する for MAC 2017 – Qiita
bannerAds