GitLab es un sistema de control de versiones basado en web y desarrollo de software colaborativo basado en Git. Sus características incluyen cosas como el repositorio de código, wiki o sistema de seguimiento de problemas. En este artículo, le mostraré cómo instalar la Edición comunitaria de GitLab en FreeBSD.
Hagámoslo
Base de datos
La única base de datos admitida es PostgreSQL. Puede seguir este tutorial si no tiene uno ejecutándose:https://unixcop.com/how-to-install-postgresql-in-freebsd/ .
Necesitaremos la extensión pgtrgm, si no tiene el puerto postgresl_contrib, instálelo con:
# cd /usr/ports/databases/postgresql14-contrib
make install clean
Si está utilizando paquetes, instálelo con:
pkg add postgresql14-contrib
Cree un usuario de base de datos llamado git y la base de datos de producción de gitlab:
root@fbsd:~ # su postgres
$ psql
psql (14beta1)
Type "help" for help.
postgres=# CREATE USER git CREATEDB SUPERUSER;
CREATE ROLE
postgres=# ALTER ROLE git WITH PASSWORD 'superpass';
ALTER ROLE
postgres=# CREATE DATABASE gitlabhq_production OWNER git;
CREATE DATABASE
A continuación, conéctese a la base de datos gitlabhq_production y habilite la extensión pg_trgm:
postgres=# \connect gitlabhq_production
You are now connected to database "gitlabhq_production" as user "postgres".
gitlabhq_production=# CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION
GitLab-ce
Ahora, compilemos gitlab-ce y sus dependencias:
root@fbsd:~ # cd /usr/ports/www/gitlab-ce/
root@fbsd:/usr/ports/www/gitlab-ce # make install clean
Esto llevará más o menos tiempo dependiendo de los puertos ya instalados. Sigue las instrucciones en la pantalla. La compilación de todo tomó un par de horas en mi computadora lenta:
Redis
La memoria caché de Redis debe instalarse con el puerto gitlab-ce; si no lo ha instalado, ejecute:
# cd /usr/ports/databases/redis
# make install clean
Agregue las siguientes líneas al archivo de configuración /usr/local/etc/redis.conf
:
unixsocket /var/run/redis/redis.sock
unixsocketperm 770
Esto habilitará y otorgará permisos al socket redis. Ahora habilite los servicios redis e inícielo:
# /usr/local/etc/rd.d/redis enable
# /usr/local/etc/rd.d/redis start
Agregue el usuario de git al grupo de redis y hemos terminado con la configuración de redis:
# pw groupmod redis -m git
Configuración previa de Gitlab
Tenemos que hacer un poco de trabajo extra.
Cambiar el directorio de inicio del usuario git
Gitlab espera que el directorio de inicio del usuario de git sea /usr/home/git . Puedes cambiarlo con:
# chsh git
Como no me gusta el programa vi, cambiaré a ee con este comando:
# EDITOR=/usr/bin/ee chsh git
Configurar gitlab
Vaya al directorio de instalación de gitlab y edite el archivo de configuración:
# cd /usr/local/www/gitlab-ce
# ee config/gitlab.yml
Entonces, estoy cambiando host:localhost → host:192.168.122.234
(mi IP ya que no tengo un FQDN en esta máquina virtual de prueba) y no uso https para este tutorial. Y para email_from estoy usando un genérico noreply@localhost
. Puede buscar esos elementos presionando ctrl-y
en el editor ee.
En config/unicorn.rb
establezca el número de trabajadores en al menos el número de núcleos:
# ee config/unicorn.rb
Cambie a usuario git y ejecute lo siguiente:
# su - git
$ git config --global core.autocrlf input
$ git config --global gc.auto 0
$ git config --global repack.writeBitmaps true
$ git config --global receive.advertisePushOptions true
El primero es para el editor web que necesita autocrlf; el segundo es porque GitLab ejecutará 'git gc' cuando sea necesario; el tercero habilita mapas de bits de archivos empaquetados; y el último habilita las opciones push.
Configure los ajustes de la base de datos en config/database.yml
:
Inicializar la BD
Otorgue permisos de escritura temporales al usuario de git:
# chown git /usr/local/share/gitlab-shell
Inicialice la base de datos con este comando (como usuario de git):
# su - git
$ cd /usr/local/www/gitlab-ce/
$ rake gitlab:setup RAILS_ENV=production
Regrese al usuario raíz y deshaga los permisos temporales:
# chown root /usr/local/share/gitlab-shell
Ya casi llegamos, vamos a comprobar si todo hasta ahora está configurado correctamente:
# su - git
$ cd /usr/local/www/gitlab-ce && rake gitlab:env:info RAILS_ENV=production
Ahora, continúe (como usuario de git) compilando los archivos y activos GetText PO:
$ rake gettext:compile RAILS_ENV=production
Created app.js in /usr/local/www/gitlab-ce/app/assets/javascripts/locale/bg
Created app.js in /usr/local/www/gitlab-ce/app/assets/javascripts/locale/de
(...)
All files created, make sure they are being added to your assets.
If they are not, you can add them with this line (configurable):
//= require_tree ./locale
//= require gettext/all
$ yarn install --production --pure-lockfile
yarn install v1.22.10
[1/5] Validating package.json...
[2/5] Resolving packages...
(...)
success Dependency postinstall check passed.
Done in 150.47s.
$ rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production
[long output that I didn't capture the begin because a distraction]
`gitlab:assets:fix_urls` finished in 31.47730386 seconds
`gitlab:assets:check_page_bundle_mixins_css_for_sideeffects` finished in 10.420508114 seconds
$ ^d
Ahora habilite e inicie el servicio GitLab, ejecútelo como root:
# /usr/local/etc/rc.d/gitlab enable
gitlab enabled in /etc/rc.conf
# /usr/local/etc/rc.d/gitlab start
Nginx
Ngninx es el servidor web oficialmente compatible. Instálalo con:
# cd /usr/ports/www/nginx
make install clean
La configuración de nginx es bastante simple:incluya la configuración proporcionada por gitlab agregando la siguiente línea dentro del bloque http en /usr/local/etc/nginx/nginx.conf
:
include /usr/local/www/gitlab-ce/lib/support/nginx/gitlab;
Habilite e inicie Nginx:
# /usr/local/etc/rc.d/nginx enable
# /usr/local/etc/rd.d/nginx start
Primer inicio de sesión
Como se ve al final de la inicialización de la base de datos, se le pedirá que cambie la contraseña de root:
Y eso es todo, ahora puede iniciar sesión con el usuario root y la nueva contraseña, y comenzar a trabajar.
Adónde ir desde aquí
Como siempre digo:ve a la documentación, en GitLab está incluido en el menú de la parte superior derecha de la pantalla:
Y en la siguiente pantalla encontrará algunos enlaces útiles como: