BigW Consortium Gitlab

5.4-to-6.0.md 4.52 KB
Newer Older
Sytse Sijbrandij committed
1 2
# From 5.4 to 6.0

3
## Warning
4

5
GitLab 6.0 is affected by critical security vulnerabilities CVE-2013-4490 and CVE-2013-4489.
6

7
## Deprecations
Sytse Sijbrandij committed
8

9
### Global projects
Sytse Sijbrandij committed
10

Sytse Sijbrandij committed
11
The root (global) namespace for projects is deprecated.
12

John Weis committed
13
So you need to move all your global projects under groups or users manually before update or they will be automatically moved to the project owner namespace during the update. When a project is moved all its members will receive an email with instructions how to update their git remote url. Please make sure you disable sending email when you do a test of the upgrade.
Sytse Sijbrandij committed
14

15
### Teams
Sytse Sijbrandij committed
16

17
We introduce group membership in 6.0 as a replacement for teams.
18

Sytse Sijbrandij committed
19
The old combination of groups and teams was confusing for a lot of people.
20

Sytse Sijbrandij committed
21
And when the members of a team where changed this wasn't reflected in the project permissions.
22

Sytse Sijbrandij committed
23
In GitLab 6.0 you will be able to add members to a group with a permission level for each member.
24

Sytse Sijbrandij committed
25
These group members will have access to the projects in that group.
26

Sytse Sijbrandij committed
27
Any changes to group members will immediately be reflected in the project permissions.
28

Sytse Sijbrandij committed
29 30
You can even have multiple owners for a group, greatly simplifying administration.

31
## 0. Backup
Sytse Sijbrandij committed
32

33
It's useful to make a backup just in case things go south (with MySQL, this may require granting "LOCK TABLES" privileges to the GitLab user on the database version):
Sytse Sijbrandij committed
34 35 36

```bash
cd /home/git/gitlab
37
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
Sytse Sijbrandij committed
38 39
```

40
## 1. Stop server
Sytse Sijbrandij committed
41 42 43

    sudo service gitlab stop

44
## 2. Get latest code
Sytse Sijbrandij committed
45 46 47 48

```bash
cd /home/git/gitlab
sudo -u git -H git fetch
lurdan committed
49
sudo -u git -H git checkout 6-0-stable
Sytse Sijbrandij committed
50 51
```

52
## 3. Update gitlab-shell
53 54 55 56

```bash
cd /home/git/gitlab-shell
sudo -u git -H git fetch
57
sudo -u git -H git checkout v1.7.9
58 59
```

60
## 4. Install additional packages
Sytse Sijbrandij committed
61 62 63 64 65 66

```bash
# For reStructuredText markup language support install required package:
sudo apt-get install python-docutils
```

67
## 5. Install libs, migrations, etc.
Sytse Sijbrandij committed
68 69 70 71 72 73 74

```bash
cd /home/git/gitlab

# MySQL
sudo -u git -H bundle install --without development test postgres --deployment

75
# PostgreSQL
Sytse Sijbrandij committed
76 77 78 79 80 81 82
sudo -u git -H bundle install --without development test mysql --deployment

sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
sudo -u git -H bundle exec rake migrate_groups RAILS_ENV=production
sudo -u git -H bundle exec rake migrate_global_projects RAILS_ENV=production
sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production
sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production
83
sudo -u git -H bundle exec rake gitlab:satellites:create RAILS_ENV=production
Sytse Sijbrandij committed
84

85 86
# Clear redis cache
sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
87

88 89 90
# Clear and precompile assets
sudo -u git -H bundle exec rake assets:clean RAILS_ENV=production
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
Sytse Sijbrandij committed
91 92
```

93
## 6. Update config files
Sytse Sijbrandij committed
94

95 96
Note: We switched from Puma in GitLab 5.4 to unicorn in GitLab 6.0.

97 98
- Make `/home/git/gitlab/config/gitlab.yml` the same as https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example but with your settings.
- Make `/home/git/gitlab/config/unicorn.rb` the same as https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/unicorn.rb.example but with your settings.
Sytse Sijbrandij committed
99

100
## 7. Update Init script
Sytse Sijbrandij committed
101 102 103

```bash
sudo rm /etc/init.d/gitlab
104
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
Sytse Sijbrandij committed
105 106 107
sudo chmod +x /etc/init.d/gitlab
```

108
## 8. Start application
Sytse Sijbrandij committed
109 110 111 112

    sudo service gitlab start
    sudo service nginx restart

113
## 9. Check application status
Sytse Sijbrandij committed
114 115 116 117 118 119 120 121 122 123

Check if GitLab and its environment are configured correctly:

    sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

To make sure you didn't miss anything run a more thorough check with:

    sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

If all items are green, then congratulations upgrade complete!
124

125 126
## Troubleshooting

127 128
The migrations in this update are very sensitive to incomplete or inconsistent data. If you have a long-running GitLab installation and some of the previous upgrades did not work out 100% correct this may bite you now. The following commands can be run in the rails console to look for 'bad' data.

129 130
All project owners should have an owner:

131 132 133 134
```
Project.all.select { |project| project.owner.blank? }
```

135 136
Every user should have a namespace:

137 138 139 140
```
User.all.select { |u| u.namespace.blank? }
```

141 142
Projects in the global namespace should not conflict with projects in the owner namespace:

143 144 145
```
Project.where(namespace_id: nil).select { |p| Project.where(path: p.path, namespace_id: p.owner.try(:namespace).try(:id)).present? }
```