wiki/HowtoGitlab/8.14.md

489 lines
12 KiB
Markdown
Raw Normal View History

2016-11-24 16:51:15 +01:00
---
2016-11-30 20:45:58 +01:00
categories: web git
2016-11-24 16:51:15 +01:00
title: Howto GitLab
...
2016-11-30 20:45:58 +01:00
* Documentation : <https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md>
2016-11-24 16:51:15 +01:00
2016-12-02 14:38:50 +01:00
[GitLab](https://about.gitlab.com/) est un logiciel libre de gestion de développement de logiciels (appelé souvent une *forge*) permettant de créer des projets avec un dépôt Git pour le code source, un outil de tickets, un wiki, une collaboration autour de Git (merge/pull requests, etc.). GitLab ressemble sous certains aspects au logiciel propriétaire *Github*.
2016-11-24 16:51:15 +01:00
2016-11-30 20:45:58 +01:00
# Installation
2016-12-01 03:54:08 +01:00
Nous installons la version **8.14.X** sous **Debian 8** (Jessie) avec une approche multi-instances.
2016-11-30 20:45:58 +01:00
2016-12-02 14:25:26 +01:00
GitLab s'appuie sur Git, Ruby, Go, PostgreSQL et Redis.
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
> **Note** : dans les exemples ci-dessous, on va créer une instance nommée *foo*
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
## Dépendances
2016-11-24 16:51:15 +01:00
2016-12-02 14:25:26 +01:00
GitLab nécessite des versions très récentes de Git, Ruby et Go.
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
On utilise pour l'instant des versions de Jessie Backports et Stretch via un « pinning » APT :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
Package: *
Pin: release n=jessie-backports
2016-12-01 03:54:08 +01:00
Pin-Priority: 50
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
Package: *
2016-11-24 16:51:15 +01:00
Pin: release n=stretch
2016-12-01 03:54:08 +01:00
Pin-Priority: 50
2016-11-24 16:51:15 +01:00
Package: golang golang-doc golang-src golang-go
Pin: release n=jessie-backports
Pin-Priority: 999
2016-12-01 03:54:08 +01:00
Package: git git-man ruby ruby2.3 ruby-dev ruby2.3-dev libruby2.3 rake ruby-test-unit libncurses5 libreadline7 libtinfo5 libncursesw5 libncurses5-dev libtinfo-dev ncurses-bin
Pin: release n=stretch
Pin-Priority: 999
2016-11-30 20:45:58 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
On peut ainsi installer toutes les dépendances pour Gitlab :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
# apt install build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev \
libffi-dev curl openssh-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate \
python-docutils pkg-config cmake nodejs bundler ruby2.3 git golang
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
## Compte UNIX
2016-11-24 16:51:15 +01:00
2016-12-02 14:57:13 +01:00
Créer un compte UNIX *foo* :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
# adduser --disabled-login --gecos 'GitLab instance foo' foo
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 14:57:13 +01:00
> **Note** : Assurez-vous d'avoir `DIR_MODE=0750` dans `/etc/adduser.conf` pour créer le home en 750.
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
## PostgreSQL
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
GitLab recommande [PostgreSQL](HowtoPostgreSQL). On utilise donc la version 9.4 de Debian Jessie :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
# apt install postgresql postgresql-client libpq-dev postgresql-contrib
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
Création de l'utilisateur PostgreSQL :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
# sudo -u postgres createuser foo -P -D -A -R
# sudo -u postgres psql -d template1 -c 'ALTER ROLE "foo" CREATEDB;'
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
> **Note** : On donne les droits CREATEDB car GitLab doit faire un DROP DATABASE puis CREATE DATABASE lors de l'installation…
2016-11-24 16:51:15 +01:00
2016-12-02 10:19:45 +01:00
> **Note** : Pensez à conserver le mot de passe pour le mettre par la suite pour [GitLab CE](#gitlab-ce).
2016-11-24 16:51:15 +01:00
Création de l'extension `pg_trgm` :
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
# sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
2016-12-01 03:54:08 +01:00
~~~
2016-12-02 14:25:26 +01:00
> **Note** : C'est à faire seulement la première fois.
2016-11-24 16:51:15 +01:00
Création de la base pour GitLab :
2016-12-01 03:54:08 +01:00
~~~
# sudo -u postgres createdb -O foo -E UNICODE foo
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
Tester la connexion et si l'extension `pg_trgm` est bien activée :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
# sudo -u foo -H psql --password -d foo
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
psql> SELECT true AS enabled FROM pg_available_extensions
WHERE name = 'pg_trgm' AND installed_version IS NOT NULL;
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
enabled
---------
t
(1 row)
~~~
2016-11-24 16:51:15 +01:00
## Redis
2016-12-01 03:54:08 +01:00
On utilise une instance Redis dédiée à chaque instance GitLab :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
# apt install redis-server
2016-11-24 16:51:15 +01:00
# systemctl stop redis-server
# systemctl disable redis-server
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
Créer et activer le template d'unité systemd `/etc/systemd/system/redis@.service` :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
[Unit]
Description=Advanced key-value store instance %i
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/%i.conf
ExecStartPost=/bin/chgrp %i /var/run/redis/%i.sock
ExecStop=/usr/bin/redis-cli shutdown
Restart=always
User=redis
Group=%i
[Install]
WantedBy=multi-user.target
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
Puis :
~~~
# systemctl daemon-reload
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
Configuration spéciale pour l'instance :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
2016-12-02 14:09:41 +01:00
# cat /etc/redis/foo.conf
2016-11-24 16:51:15 +01:00
daemonize yes
2016-12-01 03:54:08 +01:00
pidfile /var/run/redis/foo.pid
2016-11-24 16:51:15 +01:00
port 0
2016-12-01 03:54:08 +01:00
unixsocket /var/run/redis/foo.sock
2016-11-24 16:51:15 +01:00
unixsocketperm 770
timeout 0
loglevel notice
2016-12-01 03:54:08 +01:00
logfile /var/log/redis/foo.log
2016-11-24 16:51:15 +01:00
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
2016-12-01 03:54:08 +01:00
dbfilename foo.rdb
2016-11-24 16:51:15 +01:00
dir /var/lib/redis
2016-12-01 03:54:08 +01:00
# chmod 644 /etc/redis/foo.conf
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
# systemctl enable redis@foo
# systemctl start redis@foo
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 14:25:26 +01:00
## GitLab CE
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
# sudo -iu foo
2016-11-24 16:51:15 +01:00
$ umask 002
$ git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-14-stable gitlab
$ cd gitlab
2016-12-01 03:54:08 +01:00
$ cp config/gitlab.yml.example config/gitlab.yml
$ sed -i 's@/home/git@/home/foo@g' config/gitlab.yml
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
Éditer `config/gitlab.yml` :
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
~~~
host: foo.gitlab.example.com
2016-11-24 16:51:15 +01:00
port: 443
https: true
2016-12-01 03:54:08 +01:00
user: foo
email_from: gitlab@example.com
email_display_name: GitLab foo
email_reply_to: gitlab@example.com
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 15:02:01 +01:00
Mettre une clé secrète pour le chiffrement en base.
2016-12-02 10:19:45 +01:00
2016-12-01 03:54:08 +01:00
~~~
$ cp config/secrets.yml.example config/secrets.yml
2016-12-02 15:02:01 +01:00
$ sed -i "s@^# db_key_base:@db_key_base: YOURSECRETKEY@" config/secrets.yml
2016-12-01 03:54:08 +01:00
$ chmod 600 config/secrets.yml
2016-12-02 15:02:01 +01:00
~~~
2016-12-09 10:32:09 +01:00
> **Note** : Il est conseillé de générer `YOURSECRETKEY` ainsi : `apg -m30 -n1`.
> **Note** : Il est conseillé de sauvegarder le fichier secrets.yml. Voir la section [sauvegarde](#sauvegarde).
2016-12-02 12:03:18 +01:00
2016-12-02 15:02:01 +01:00
Mettre le mot de passe PostgreSQL :
~~~
2016-12-02 12:03:18 +01:00
$ cp config/database.yml.postgresql config/database.yml
$ sed -i -e 's/database: gitlabhq_production/database: foo/' \
-e 's/# username: git/username: foo/' \
-e 's/# password:/password: PASSWORD/' config/database.yml
$ chmod o-rwx config/database.yml
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-09 10:42:40 +01:00
> **Note** : Conservez l'espace devant le `sed` pour ne pas enregistrer le mot de passe dans l'historique BASH.
2016-12-02 10:19:45 +01:00
Ajuster les droits de certains répertoires :
2016-12-01 03:54:08 +01:00
~~~
2016-12-02 14:49:30 +01:00
$ chmod 750 ~
2016-11-24 16:51:15 +01:00
$ chmod -R u+rwX,go-w log/
$ chmod -R u+rwX tmp/
$ chmod -R u+rwX tmp/pids/
2016-12-02 14:49:30 +01:00
$ chmod -R u+rwX,g+rwX tmp/sockets/
2016-11-24 16:51:15 +01:00
$ install -d -m 700 public/uploads/
$ chmod -R u+rwX builds/
$ chmod -R u+rwX shared/artifacts/
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-01 03:54:08 +01:00
## Unicorn
2016-12-02 12:03:18 +01:00
Configuration de base d'Unicorn :
2016-12-02 10:19:45 +01:00
2016-12-01 03:54:08 +01:00
~~~
$ cp config/unicorn.rb.example config/unicorn.rb
$ sed -i \
2016-12-02 10:19:45 +01:00
-e 's@/home/git@/home/foo@g' \
2016-11-24 16:51:15 +01:00
-e 's/listen "127.0.0.1:8080", :tcp_nopush => true/#listen "127.0.0.1:8080", :tcp_nopush => true/' \
config/unicorn.rb
2016-12-01 03:54:08 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 10:19:45 +01:00
## Rack attack
2016-12-01 03:54:08 +01:00
2016-12-02 12:03:18 +01:00
Initialisation de la configuration de Rack::Attack (qui permet du filtrage / rate-limiting) :
2016-12-02 10:19:45 +01:00
~~~
2016-12-02 12:03:18 +01:00
$ cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
2016-12-02 10:19:45 +01:00
~~~
2016-12-02 14:00:43 +01:00
## Git
2016-12-02 12:03:18 +01:00
Configuration :
~~~
2016-11-24 16:51:15 +01:00
$ git config --global core.autocrlf input
$ git config --global gc.auto 0
$ git config --global repack.writeBitmaps true
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
## Resque
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
Configuration :
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
~~~
$ cp config/resque.yml.example config/resque.yml
2016-12-02 14:09:41 +01:00
$ sed -i 's/redis.sock/foo.sock/' config/resque.yml
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
## Gems
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
> **Important**: Votre partition `/home` ne doit pas être montée avec l'option `noexec`.
On installe les Gems requise :
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
$ bundle install -j$(nproc) --deployment --without development test mysql aws kerberos
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
## GitLab Shell
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
Installation :
~~~
$ bundle exec rake gitlab:shell:install REDIS_URL=unix:/var/run/redis/foo.sock RAILS_ENV=production SKIP_STORAGE_VALIDATION=true
2016-11-24 16:51:15 +01:00
$ chmod -R ug+rwX,o-rwx ~/repositories/
$ chmod -R ug-s ~/repositories/
$ chmod g+s ~/repositories/
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
## gitlab-workhorse
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
Installation :
~~~
2016-11-24 16:51:15 +01:00
$ cd
$ git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
$ cd gitlab-workhorse
$ git checkout v$(cat ~/gitlab/GITLAB_WORKHORSE_VERSION)
$ make
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
## Base de données
On crée la base de données avec l'identifiant (une adresse email) et un mot de passe pour l'utilisateur *root* sur l'interface web de GitLab :
~~~
2016-12-09 10:47:13 +01:00
$ cd ~/gitlab
$ bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=yourpassword GITLAB_ROOT_EMAIL=admingitlab@example.com
~~~
> **Note** : Conservez l'espace devant le `bundle` pour ne pas enregistrer le mot de passe dans l'historique BASH.
2016-12-02 12:03:18 +01:00
## Script d'init
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
Attention, GitLab ne supporte pas officiellement systemd !
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
On doit donc encore passer pas un script d'init classique :
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
~~~
$ sed -i -e 's/app_user="git"/app_user="foo"/' \
2016-12-02 14:25:26 +01:00
-e 's/# Provides: .*gitlab/# Provides: gitlab-foo/' \
2016-12-02 12:03:18 +01:00
lib/support/init.d/gitlab
$ sed -i 's@script_path = "/etc/init.d/gitlab"@script_path = "/etc/init.d/gitlab-foo"@g' lib/tasks/gitlab/check.rake
2016-11-24 16:51:15 +01:00
$ git commit -a -m 'change default user'
2016-12-02 12:03:18 +01:00
# install -m 755 /home/foo/gitlab/lib/support/init.d/gitlab /etc/init.d/gitlab-foo
# systemctl enable gitlab-foo
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
## Logrotate
~~~
2016-12-02 14:09:41 +01:00
# install -m 644 /home/foo/gitlab/lib/support/logrotate/gitlab /etc/logrotate.d/gitlab-foo
2016-12-02 12:03:18 +01:00
# sed -i 's@/home/git@/home/foo@g' /etc/logrotate.d/gitlab-foo
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
## Nginx
On utilise Nginx, c'est le seul serveur web supporté officiellement par GitLab :
~~~
# apt install nginx
2016-12-09 10:52:18 +01:00
# adduser www-data foo
2016-12-02 14:57:13 +01:00
# chmod -R g+rwX /home/foo/gitlab/tmp/{pids,sockets}
2016-12-02 14:00:43 +01:00
# install -m 644 /home/foo/gitlab/lib/support/nginx/gitlab-ssl /etc/nginx/sites-available/foo
# sed -i -e 's@/home/git@/home/foo@g' \
-e 's/YOUR_SERVER_FQDN/foo.gitlab.example.com/g' \
-e 's@/var/log/nginx/gitlab@/var/log/nginx/foo@g' \
-e 's/upstream gitlab-workhorse/upstream gitlab-foo-workhorse/' \
-e 's@http://gitlab-workhorse@http://gitlab-foo-workhorse@' \
/etc/nginx/sites-available/foo
# ln -s /etc/nginx/sites-available/foo /etc/nginx/sites-enabled/
# /etc/init.d/nginx restart
~~~
2016-12-09 10:52:18 +01:00
> **Note** : La partie SSL/TLS n'est pas évoquée. À vous de faire le nécessaire avec un certificat Let's Encrypt par exemple. N'oubliez donc pas de modifier les directives `ssl_` dans le vhost.
> **Note** : `apt install nginx` est à faire seulement la première fois.
2016-12-02 14:00:43 +01:00
## Finalisation de l'installation
Vérification de l'état de l'installation :
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
~~~
2016-12-02 14:09:41 +01:00
# sudo -iu foo
2016-11-24 16:51:15 +01:00
$ cd gitlab
$ bundle exec rake gitlab:env:info RAILS_ENV=production
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
Compilation des assets :
2016-11-24 16:51:15 +01:00
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
$ bundle exec rake assets:precompile RAILS_ENV=production
2016-12-02 12:03:18 +01:00
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
Démarrage de l'instance :
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
~~~
# /etc/init.d/gitlab-foo start
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 14:09:41 +01:00
Vérifier le statut :
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
~~~
2016-12-02 14:09:41 +01:00
# sudo -iu foo
2016-12-02 14:00:43 +01:00
$ cd gitlab
$ bundle exec rake gitlab:check RAILS_ENV=production
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 14:09:41 +01:00
Si tout est au vert, c'est bon ! On pourra aller sur l'instance via http://foo.gitlab.example.com
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
# Sauvegarde
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
On peut réaliser des sauvegardes grâce à la commande `bundle exec rake gitlab:backup:create RAILS_ENV=production`
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
On peut ainsi mettre un cron pour l'utilisateur foo :
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
~~~
# Create a full backup of the GitLab repositories and SQL database every day at 4am
0 4 * * * cd ~/gitlab && bundle exec rake gitlab:backup:create RAILS_ENV=production CRON=1
~~~
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
Dans `~/gitlab/config/gitlab.yml` on pourra indiquer un temps de rétention. Par exemple pour garder 5j de backups `keep_time: 432000`
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
> **Note** : Par défaut, les sauvegardes sont stockées dans ~/gitlab/tmp/backups. Il est évidemment conseillé de les sauvegarder ailleurs et sur une machine distante.
2016-11-24 16:51:15 +01:00
2016-12-02 14:00:43 +01:00
Attention, le fichier `secrets.yml` contient les clés de chiffrements pour les sessions et les variables. Il n'est pas inclus dans les sauvegardes GitLab. Vous devez le copier au moins une fois dans un endroit sécurisé.
2016-11-24 16:51:15 +01:00
2016-12-02 14:09:41 +01:00
# Mises à jour
2016-11-24 16:51:15 +01:00
Le principe des mises à jour est basé sur un `git pull` et un `git checkout`.
2016-12-09 14:55:05 +01:00
## Mise à jour mineure 8.14.x vers 8.14.y
Procédure générique. Il est possible de « sauter » plusieurs versions. Par exemple, de 8.14.0 à 8.14.3.
2016-11-24 16:51:15 +01:00
2016-12-02 14:09:41 +01:00
### Sauvegarde
2016-12-02 14:09:41 +01:00
~~~
# sudo -iu foo
$ cd gitlab
$ bundle exec rake gitlab:backup:create RAILS_ENV=production
2016-12-02 14:09:41 +01:00
~~~
### Mise à jour de GitLab
2016-12-02 14:09:41 +01:00
~~~
2016-12-09 14:55:05 +01:00
$ umask 002
$ git fetch --all
$ git checkout -- Gemfile.lock db/schema.rb
2016-12-09 14:55:05 +01:00
$ git checkout v8.14.y -b v8.14.y
2016-12-02 14:09:41 +01:00
$ sed -i -e s'/app_user="git"/app_user="foo"/' \
2016-12-02 14:25:26 +01:00
-e 's/# Provides: .*gitlab$/# Provides: gitlab-foo/' \
lib/support/init.d/gitlab
2016-12-02 14:09:41 +01:00
$ sed -i 's#script_path = "/etc/init.d/gitlab"#script_path = "/etc/init.d/gitlab-foo"#g' lib/tasks/gitlab/check.rake
$ git commit -a -m 'change default user'
2016-12-02 14:09:41 +01:00
~~~
2016-12-09 14:55:05 +01:00
### Mise à jour de gitlab-shell
2016-12-02 10:25:36 +01:00
2016-12-02 12:03:18 +01:00
~~~
2016-12-09 14:55:05 +01:00
$ cd ~/gitlab-shell
$ git fetch
$ git checkout v$(cat ~/gitlab/GITLAB_SHELL_VERSION) -b v$(cat ~/gitlab/GITLAB_SHELL_VERSION)
2016-12-02 12:03:18 +01:00
~~~
2016-12-02 10:25:36 +01:00
### Mise à jour de gitlab-workhorse
2016-12-02 12:03:18 +01:00
~~~
2016-12-09 15:00:43 +01:00
$ cd ~/gitlab-workhorse
$ git fetch
$ git checkout v$(cat ~/gitlab/GITLAB_WORKHORSE_VERSION) -b v$(cat ~/gitlab/GITLAB_WORKHORSE_VERSION)
$ make
2016-12-02 12:03:18 +01:00
~~~
2016-12-02 10:25:36 +01:00
2016-12-02 14:38:50 +01:00
### Mise à jour base de données, Gems et assets
2016-12-02 10:25:36 +01:00
2016-12-02 12:03:18 +01:00
~~~
2016-12-02 10:25:36 +01:00
$ cd ~/gitlab
$ bundle install --without development test mysql aws kerberos --deployment
$ bundle clean
2016-12-09 14:55:05 +01:00
$ bundle exec rake db:migrate RAILS_ENV=production
2016-12-02 10:25:36 +01:00
$ bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production
2016-12-09 14:55:05 +01:00
$ git commit -a -m 'upgraded to 8.14.y'
2016-12-02 12:03:18 +01:00
~~~
2016-12-02 10:25:36 +01:00
### Redémarrer GitLab
2016-12-02 12:03:18 +01:00
~~~
# /etc/init.d/gitlab-foo restart
~~~
2016-12-02 14:38:50 +01:00
### Vérifier le statut
2016-12-02 14:25:26 +01:00
~~~
2016-12-02 12:03:18 +01:00
# sudo -iu foo
$ cd gitlab
$ bundle exec rake gitlab:env:info RAILS_ENV=production
$ bundle exec rake gitlab:check RAILS_ENV=production
2016-12-02 12:03:18 +01:00
~~~
2016-12-02 12:03:18 +01:00
Si tout est au vert, la migration s'est bien passée !
2016-11-24 16:51:15 +01:00
2016-12-02 14:09:41 +01:00
## Mise à jour majeure
2016-11-24 16:51:15 +01:00
2016-12-02 14:09:41 +01:00
En attente d'une nouvelle release majeure :)