- 1Instalação da gem omniauth-remote-user no gitlab
Fazer clone do repositório omniauth-remote-user :
https://beta.softwarepublico.gov.br/gitlab/softwarepublico/omniauth-remote-user.git no path "gitlab/vendor/plugins/"
Adicionar a linha abaixo o Gemfile do gitlab:
gem "omniauth-remote-user", :path => "vendor/plugins/omniauth-remote-user"
no inicioapp/controller/omniauth_callbacks_controler.rb
adicionar:skip_before_filter :verify_authenticity_token
Editar o arquivo
gitlab/config/gitlab.yml
- OmniAuth settings
omniauth:
enabled: true
- # permitir omniauth como método de login
allow_single_sign_on: true
# permitir cadastro usando omniauthblock_auto_created_users: false
# não é necessario o administrador aceitar o usuário
providers:
- { name: "RemoteUser" }
# habilitando o provider remote-user
/etc/nginx/conf.d/gitlab,conf
proxy_set_header REMOTE_USER "thiago";
proxy_set_header REMOTE_USER_DATA ' {"name": "thiago", "email": "thiago@teste.com"}'
agora basta restartar os serviços
sudo service nginx restart
sudo service gitlab restart
- 2Personalizar gitlab antes de gerar o RPM
1) Em files/gitlab-cookbooks/gitlab/templates/default/gitlab.yml.erb
<% if @env_enable >
env:
enabled: <%= @env_enable %>
database_name: <%= single_quote(@env_database_name) %>
host: <%= single_quote(@env_database_host) %>
user: <%= single_quote(@env_database_user) %>
password: <%= single_quote(@env_database_password) %>
< end %>
2) em files/gitlab-cookbooks/gitlab/attributes/default.rb
default['gitlab']['gitlab-rails']['env_enable'] = false
default['gitlab']['gitlab-rails']['env_database_name'] = nil
default['gitlab']['gitlab-rails']['env_database_host'] = nil
default['gitlab']['gitlab-rails']['env_database_user'] = nil
default['gitlab']['gitlab-rails']['env_database_password'] =nil
3) Relative URL
- Em /etc/gitlab/gitlab.rb adicionamos a linha:
- gitlab_rails['internal_api_url'] = 'http://162.243.88.56/gitlab' - Em files/gitlab-cookbooks/gitlab/templates/default/gitlab.yml.erb descomentar a linha:
- relative_url_root: /gitlab - Em files/gitlab-cookbooks/gitlab/templates/default/unicorn.rb.erb adicionar:
- ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" - Em embedded/service/gitlab-rails/config/application.rb descomentar a linha:
- config.relative_url_root = "/gitlab" - Criar links simbolico (obs: Isso não é necessário se o Nginx tratar os links estáticos do Gitlab):
- mkdir /opt/gitlab/embedded/service/gitlab-rails/public/gitlab/
- ln -s /opt/gitlab/embedded/service/gitlab-rails/public/assets/ /opt/gitlab/embedded/service/gitlab-rails/public/gitlab
-
3Criação de RPM gitlab
Configuração de ambiente:
- Instruções na url [[https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/build.md]]
- Editar a url dos repositórios a serem utilizados
Obs: o pacote cmake deve estar instalado.
Criação do pacote:
- Execute o comando:
- bin/omnibus build project gitlab
- 4Configuração de hook para espelhar repositório do gitlab no github
-
Dado o projeto principal no gitlab
e um projeto qualquer no github1- criar uma chave ssh publica com usuario git aonde o gitlab está instalado.
$ su git
e depois seguir https://help.github.com/articles/generating-ssh-keys/
PS: Não adicionar passprhase
2- Adicionar a chave publica ao perfil no github ( alguém com permissão de dar push no repositório).
3- Adicionar um remote no repositório do gitlab
$ cd /var/opt/gitlab/git-data/repositories/root/colab.git
(nosso exemplo é um repositório git chamado colab)$ git remote add --mirror github git@github.com:thiagovsk/teste.git
(nosso exemplo é com meu usuário, thiagovsk)Verifique se foi adicionado corretamente
$ git remote -v
4- Adicione o hook na pasta hooks
$ vi hooks/post-receive
Adicione essa linha exec( 'git push --mirror github --quiet & ')
5- Teste O mirror
$ git push --mirror github
Verifique se o repositório foi espelhado no github.
6- Teste o hook
Clone o repositorio que está no gitlab crie um commit, dê um push e veja se replicou no github.
- 5Configuração do Gitlab no ambiente
-
Em /etc/gitlab/gitlab.rb
external_url 'http://162.243.88.56'
gitlab_rails['internal_api_url'] = 'http://127.0.0.1:8090/gitlab'nginx['enable'] = false
unicorn['enable'] = true
unicorn['port'] = 8091
postgresql['port'] = 5433gitlab_rails['env_enable'] = true
gitlab_rails['env_database_name'] = 'colab'
gitlab_rails['env_database_host'] = '127.0.0.1'
gitlab_rails['env_database_user'] = 'colab'
gitlab_rails['env_database_password'] = 'colab'gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = true
gitlab_rails['omniauth_block_auto_created_users'] = falsegitlab_rails['gitlab_shell_ssh_port'] = 51122