Как установить Gitlab в Windows? Первая же ссылка в поисковике дала ответ: Самый легкий способ установить Gitlab в Windows-е — это установить виртуальную машину Linux и уже там установить Gitlab. Пост был опубликован на официальном форуме Гитлаба. Автор кажется не шутить? Хм… А есть ли все таки способ?
Обратимся к официальной документации. Раздел требования https://docs.gitlab.com/ee/install/requirements.html , где есть список поддерживаемых ОС.
- Ubuntu
- Debian
- CentOS
- openSUSE
- Red Hat Enterprise Linux (please use the CentOS packages and instructions)
- Scientific Linux (please use the CentOS packages and instructions)
- Oracle Linux (please use the CentOS packages and instructions)
Что там написано про Windows?
Microsoft Windows
GitLab is developed for Linux-based operating systems. It does not run on Microsoft Windows, and we have no plans to support it in the near future. For the latest development status view this issue. Please consider using a virtual machine to run GitLab.
То есть,
Gitlab разрабатывался для Linux-based ОС. Оно не запуститься на Windows и у нас нет планов на поддержку этой ОС в ближайшее время. Следить за ходом разработки можете по ссылке. Если хотите запустить на Windows используйте виртуальную машину.
Вот те на… Но постойте, есть же Докер, философия которой заключается как раз в кросс платформенной доставке продукта. Даже есть целый раздел посвязенной установке через Docker https://docs.gitlab.com/omnibus/docker/README.html
Вот только если попытаться запустить на Windows вот этот конфиг:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
web: image: 'gitlab/gitlab-ce:latest' restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.example.com:8929' gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '8929:8929' - '2224:22' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab' |
получите ошибку
1 2 3 |
Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data]' |
Эта ошибка не нова, обсуждение ее началось два года назад, а может и более. Есть большая дискуссия на эту тему по этой ссылке
https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2280
Сотни людей столкнулись с одним и тем же.
В чем же проблема?
Суть проблемы в самом докере для Windows. Во время установки Gitlab-a Chef скрипт пытается удостовериться что каталог принадлежит пользователю git:git, вместо этого получает none. Потому что, после монтирования, каталогу присваивается UID 0 : GID 0 755 unix file permissions, который невозможно изменить внутри контейнера
Обсуждение данной проблемы можно прочитать по ссылке
https://github.com/docker/for-win/issues/2042
Корень проблемы заключается в архитектурных различиях ФС Windows и вряд ли решится в ближайшее время. Протокол SMB/CIFS не поддерживает расширенные права для файлов.
Значит пора ставить виртуальную машину?
Скорее всего, автор этого топика https://forum.gitlab.com/t/how-to-install-gitlab-on-windows/32 прав и самый легкий способ установки — это поставить виртуальную машину. Ведь недаром Windows официально даже не поддерживается.
Но! Если нужно, то можно взять вот такой конфиг и…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
version: "3.2" services: web: image: 'gitlab/gitlab-ce:latest' hostname: 'gitlab.example.com' restart: always environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.example.com' # Add any other gitlab.rb configuration here, each on its own line ports: - 80:80 - 443:443 - 22:22 volumes: - ./gitlab/config:/etc/gitlab - gitlab-logs:/var/log/gitlab - gitlab-opt:/var/opt/gitlab volumes: gitlab-opt: gitlab-logs: |
Предварительно создав volumes вручную, и …
1 2 3 4 |
docker volume create gitlab-opt docker volume create gitlab-logs |
И вуаля после всех операции видим приветственное сообщение от Gitlab
ошибка letsencrypt_certificate[gitlab.example.com] (letsencrypt::http_authorization) had an error. что делать?
Нужно отключить Lets Encrypt. Финальный конфиг будет выглядит так
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
version: "3.2" services: web: image: 'gitlab/gitlab-ce:latest' hostname: 'gitlab.example.com' restart: always environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.example.com' # Add any other gitlab.rb configuration here, each on its own line letsencrypt['enabled'] = false ports: - 80:80 - 443:443 - 22:22 volumes: - ./gitlab/config:/etc/gitlab - gitlab-logs:/var/log/gitlab - gitlab-opt:/var/opt/gitlab volumes: gitlab-opt: gitlab-logs: |
Найдите два отличия 😉 Естественно не забудьте добавить домен gitlab.example.com в etc/hosts
Заключения
Как мы поняли установка Gitlab on Windows подходит только для экспериментальных целей или для тестирования новых фичей. Сами основатели предупреждают об отсутствии поддержки на Windows, поэтому использование в боевых целях не рекомендуется. Намного проще и дешевле будет поднять машину на Линуксе, хоть локально, хоть в облаке.
Кстатит, все работы проводились на версии Docker for Windows 18.06.1