设为首页 收藏本站
查看: 566|回复: 0

[经验分享] ubuntu 16.04.2 源码安装gitlab并且利用runner持续集成

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-1-11 14:51:21 | 显示全部楼层 |阅读模式
  参考原档:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md#using-https
  本章只写重要的
  Gitlab安装包括设置一下组件:


  • Packages / Dependencies
  • Ruby
  • Go
  • Node
  • System Users
  • Database
  • Redis
  • GitLab
  • Nginx
  1. Packages / Dependencies(可有可无的更新)
  

# run as root!  
apt-get update -y
  
apt-get upgrade -y
  
apt-get install sudo -y
  

  

  安装所需的软件包(需要编译Ruby和Ruby gem的本机扩展):
  

sudo apt-get install -y 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  

  

  如果要使用Kerberos进行用户身份验证,请安装libkrb5-dev:
  

sudo apt-get install libkrb5-dev  

  

  注意:如果你不知道Kerberos是什么,你可以假设你不需要它。
  确保您安装了正确版本的Git
  

# Install Git  
sudo apt-get install -y git-core
  

  
# Make sure Git is version 2.8.4 or higher
  
git --version
  

  

  系统打包Git是否太老了?从源文件中删除并编译。
  

# Remove packaged Git  
sudo apt-get remove git-core
  

  
# Install dependencies
  
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential
  

  
# Download and compile from source
  
cd /tmp
  
curl --remote-name --progress https://www.kernel.org/pub/software/scm/git/git-2.8.4.tar.gz
  
echo '626e319f8a24fc0866167ea5f6bf3e2f38f69d6cb2e59e150f13709ca3ebf301  git-2.8.4.tar.gz' | shasum -a256 -c - && tar -xzf git-2.8.4.tar.gz
  
cd git-2.8.4/
  
./configure
  
make prefix=/usr/local all
  

  
# Install into /usr/local/bin
  
sudo make prefix=/usr/local install
  

  
# When editing config/gitlab.yml (Step 5), change the git -> bin_path to /usr/local/bin/git
  

  

  注意:为了接收邮件通知,请确保安装邮件服务器。默认情况下,Debian随exim4一起提供,但Ubuntu并没有出现问题。推荐的邮件服务器是后缀,您可以安装它:
  

sudo apt-get install -y postfix  

  

  然后选择“Internet站点”,然后按确认确认主机名。
  2.Ruby
  注意:目前支持的Ruby(MRI)版本为2.3.x。GitLab 9.0支持Ruby 2.1.x。
  查看Ruby的版本:
  

sudo ruby -v  

  

  删除旧的Ruby 1.8如果存在:
  

sudo apt-get remove ruby1.8  

  

  下载Ruby并编译它:
  

mkdir /tmp/ruby && cd /tmp/ruby  
curl --remote-name --progress https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz
  
echo '1014ee699071aa2ddd501907d18cbe15399c997d  ruby-2.3.3.tar.gz' | shasum -c - && tar xzf ruby-2.3.3.tar.gz
  
cd ruby-2.3.3
  
./configure --disable-install-rdoc
  
make
  
sudo make install
  

  

  然后安装Bundler Gem:
  

sudo gem install bundler --no-ri --no-rdoc  

  

  3.Go
  

# Remove former Go installation folder  
sudo rm -rf /usr/local/go
  

  
curl --remote-name --progress https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
  
echo '1862f4c3d3907e59b04a757cfda0ea7aa9ef39274af99a784f5be843c80c6772  go1.8.3.linux-amd64.tar.gz' | shasum -a256 -c - && \
  sudo tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
  
sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
  
rm go1.8.3.linux-amd64.tar.gz
  

  

  4.Node
  由于GitLab 8.17,GitLab需要使用node> = v4.3.0来编译javascript资源,而且使用“>> = v0.17.0来管理javascript依赖关系。在许多发行版中,官方软件包版本提供的版本已过期,因此我们需要通过以下命令进行安装:
  

# install node v7.x  
curl --location https://deb.nodesource.com/setup_7.x | sudo bash -
  
sudo apt-get install -y nodejs
  

  
# install yarn
  
curl --location https://yarnpkg.com/install.sh | bash -
  

  

  如果如上述安装时出现问题,就去官网查看相应的地方,会有解决方法,相信我,我成功了。
  node:https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions
  yarn:https://yarnpkg.com/en/docs/install/
  5.System Users
  git为GitLab 创建一个用户:
  

sudo adduser --disabled-login --gecos 'GitLab' git  

  

  6.Database
  我们建议使用PostgreSQL数据库。对于MySQL,请查看MySQL安装指南,官网相应的地方也有链接。
  1.安装数据库包:
  

sudo apt-get install -y postgresql postgresql-client libpq-dev postgresql-contrib  

  

  2.为GitLab创建数据库用户:
  

sudo -u postgres psql -d template1 -c "CREATE USER git CREATEDB;"  

  

  3.创建pg_trgm扩展名(GitLab 8.6+需要):
  

sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"  

  

  4. 创建GitLab生产数据库并授予数据库所有权限:
  

sudo -u postgres psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;"  

  

  5.尝试使用新用户连接到新数据库:
  

sudo -u git -H psql -d gitlabhq_production  

  

  6.检查pg_trgm分机是否启用:
  

SELECT true AS enabled  
FROM pg_available_extensions
  
WHERE name = 'pg_trgm'
  
AND installed_version IS NOT NULL;
  

  

  如果分机启用,则会产生以下输出: 
  

enabled  
---------
  t
  
(1 row)
  

  

  7.退出数据库会话:
  

gitlabhq_production> \q  

  

  7.Redis:
  GitLab至少需要Redis 2.8。
  如果您使用的是Debian 8或Ubuntu 14.04及更高版本,那么您可以简单地安装Redis 2.8:
  

sudo apt-get install redis-server  

  

  如果您使用的是Debian 7或Ubuntu 12.04,请遵循备用Redis安装的特殊文档(官网对应处)。完成后,请遵循指南的其余部分。
  

# Configure redis to use sockets  
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig
  

  
# Disable Redis listening on TCP by setting 'port' to 0
  
sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | sudo tee /etc/redis/redis.conf
  

  
# Enable Redis socket for default Debian / Ubuntu path
  
echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis/redis.conf
  

  
# Grant permission to the socket to all members of the redis group
  
echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf
  

  
# Create the directory which contains the socket
  
mkdir /var/run/redis
  
chown redis:redis /var/run/redis
  
chmod 755 /var/run/redis
  

  
# Persist the directory which contains the socket, if applicable
  
if [ -d /etc/tmpfiles.d ]; then
  echo 'd  /var/run/redis  0755  redis  redis  10d  -' | sudo tee -a /etc/tmpfiles.d/redis.conf
  
fi
  

  
# Activate the changes to redis.conf
  
sudo service redis-server restart
  

  
# Add git to the redis group
  
sudo usermod -aG redis git
  

  

  8.GitLab
  

# We'll install GitLab into home directory of the user "git"  
cd /home/git
  

  

  克隆来源
  

# Clone GitLab repository  
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-7-stable gitlab
  

  

  版本不要装最新的,最好是差1~2个大版本。 
  

# Go to GitLab installation folder  
cd /home/git/gitlab
  

  
# Copy the example GitLab config
  
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
  

  
# Update GitLab config file, follow the directions at top of file
  
sudo -u git -H editor config/gitlab.yml
  #修改host:localhost 为host:你的域名或者ip,我改的是192.168.222.131
  #修改bin_path:/usr/bin/git 为bin_path:/usr/local/bin/git
  

  
# Copy the example secrets file
  
sudo -u git -H cp config/secrets.yml.example config/secrets.yml
  
sudo -u git -H chmod 0600 config/secrets.yml
  

  
# Make sure GitLab can write to the log/ and tmp/ directories
  
sudo chown -R git log/
  
sudo chown -R git tmp/
  
sudo chmod -R u+rwX,go-w log/
  
sudo chmod -R u+rwX tmp/
  

  
# Make sure GitLab can write to the tmp/pids/ and tmp/sockets/ directories
  
sudo chmod -R u+rwX tmp/pids/
  
sudo chmod -R u+rwX tmp/sockets/
  

  
# Create the public/uploads/ directory
  
sudo -u git -H mkdir public/uploads/
  

  
# Make sure only the GitLab user has access to the public/uploads/ directory
  
# now that files in public/uploads are served by gitlab-workhorse
  
sudo chmod 0700 public/uploads
  

  
# Change the permissions of the directory where CI job traces are stored
  
sudo chmod -R u+rwX builds/
  

  
# Change the permissions of the directory where CI artifacts are stored
  
sudo chmod -R u+rwX shared/artifacts/
  

  
# Change the permissions of the directory where GitLab Pages are stored
  
sudo chmod -R ug+rwX shared/pages/
  

  
# Copy the example Unicorn config
  
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
  

  
# Find number of cores
  
nproc
  

  
# Enable cluster mode if you expect to have a high load instance
  
# Set the number of workers to at least the number of cores
  
# Ex. change amount of workers to 3 for 2GB RAM server
  
sudo -u git -H editor config/unicorn.rb
  

  
# Copy the example Rack attack config
  
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
  

  
# Configure Git global settings for git user
  
# 'autocrlf' is needed for the web editor
  
sudo -u git -H git config --global core.autocrlf input
  

  
# Disable 'git gc --auto' because GitLab already runs 'git gc' when needed
  
sudo -u git -H git config --global gc.auto 0
  

  
# Enable packfile bitmaps
  
sudo -u git -H git config --global repack.writeBitmaps true
  

  
# Configure Redis connection settings
  
sudo -u git -H cp config/resque.yml.example config/resque.yml
  

  
# Change the Redis socket path if you are not using the default Debian / Ubuntu configuration
  
sudo -u git -H editor config/resque.yml
  

  

  重要注意事项:请确保同时编辑gitlab.yml和unicorn.rb匹配您的设置。  
  配置GitLab数据库设置
  

# PostgreSQL only:  
sudo -u git cp config/database.yml.postgresql config/database.yml
  

  
# MySQL only:
  
sudo -u git cp config/database.yml.mysql config/database.yml
  

  
# MySQL and remote PostgreSQL only:
  
# Update username/password in config/database.yml.
  
# You only need to adapt the production settings (first part).
  
# If you followed the database guide then please do as follows:
  
# Change 'secure password' with the value you have given to $password
  
# You can keep the double quotes around the password
  
sudo -u git -H editor config/database.yml
  

  
# PostgreSQL and MySQL:
  
# Make config/database.yml readable to git only
  
sudo -u git -H chmod o-rwx config/database.yml
  

  

  Install Gems
  注意:从捆绑器1.5.2开始,您可以调用bundle install -jN(N处理器内核的数量),并享受并行宝石安装,并在完成时间内可以有显着差异(约60%)。检查你的核心数量nproc。有关更多信息,请查看此信息。首先确保你有一个bundle => 1.5.2(run bundle -v),因为它解决了在1.5.2 中修复的一些问题。
  

# For PostgreSQL (note, the option says "without ... mysql")(过程会比较慢,不要急,会成功的,网上说的那些都是骗人的。)  
sudo -u git -H bundle install --deployment --without development test mysql aws kerberos
  

  
# Or if you use MySQL (note, the option says "without ... postgres")
  
sudo -u git -H bundle install --deployment --without development test postgres aws kerberos
  

  

  注意:如果要使用Kerberos进行用户身份验证,请kerberos在上述--without选项中省略。
  安装GitLab Shell 
  GitLab Shell是专门为GitLab开发的SSH访问和存储库管理软件。
  

# Run the installation task for gitlab-shell (replace `REDIS_URL` if needed):  
sudo -u git -H bundle exec rake gitlab:shell:install REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production SKIP_STORAGE_VALIDATION=true
  

  
# By default, the gitlab-shell config is generated from your main GitLab config.
  
# You can review (and modify) the gitlab-shell config as follows:
  
sudo -u git -H editor /home/git/gitlab-shell/config.yml(此处修改时需要将gitlab_url:http://127.0.0.1:8080/)
  

  

  安装gitlab-workhorse
  GitLab-Workhorse使用GNU Make。以下命令行将安装GitLab-Workhorse,/home/git/gitlab-workhorse其中是推荐的位置。
  

sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production(这个安装方式会出现问题,然后我从网上找了另一个方式)  在gitlab的上层目录git下安装:
  sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
  cd gitlab-workhorse
  sudo -u git -H make
  

  

  您可以通过将其作为额外参数来指定不同的Git仓库:
  

sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse,https://example.com/gitlab-workhorse.git]" RAILS_ENV=production  

  

  初始化数据库并激活高级功能
  

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

  
# Type 'yes' to create the database tables.
  

  
# When done you see 'Administrator account created:'
  

  

  注意:您可以通过在环境变量提供他们设置管理员/ root密码和电子邮件,GITLAB_ROOT_PASSWORD并GITLAB_ROOT_EMAIL分别如下所示。如果您没有设置密码(并且设置为默认密码),请等待公开GitLab到公共网络,直到安装完成,并且您已经首次登录到服务器。在第一次登录时,您将被迫更改默认密码。
  

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=yourpassword GITLAB_ROOT_EMAIL=youremail(这个可以不设置,无所谓)  

  

  安装Init脚本  
  下载init脚本(将是/etc/init.d/gitlab):
  

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab  

  

  如果您使用非默认文件夹或用户副本进行安装并编辑默认文件:
  

sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab  

  

  如果您将GitLab安装在另一个目录或默认设置之外,您应该更改这些设置/etc/default/gitlab。不要编辑,/etc/init.d/gitlab因为它将在升级时更改。
  使GitLab启动时启动:
  

sudo update-rc.d gitlab defaults 21  

  

  安装Gitaly
  

# Fetch Gitaly source with Git and compile with Go  
sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly]" RAILS_ENV=production
  

  

  您可以通过将其作为额外参数来指定不同的Git仓库:
  

sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,https://example.com/gitaly.git]" RAILS_ENV=production  

  

  接下来,确保配置gitaly:
  

# Restrict Gitaly socket access  
sudo chmod 0700 /home/git/gitlab/tmp/sockets/private
  
sudo chown git /home/git/gitlab/tmp/sockets/private
  

  
# If you are using non-default settings you need to update config.toml
  
cd /home/git/gitaly
  
sudo -u git -H editor config.toml
  

  

  如果你安装出错,请看后面信息,我安装的是gitlab8-7:Gitaly(在GitLab 9.0中引入)是一种为Git存储库提供高级RPC访问权限的服务。从GitLab 9.3起,它仍然是一个可选的组件,范围有限。
  访问Git存储库(gitlab-rails,gitlab-shell,gitlab-workhorse)的GitLab组件充当Gitaly的客户端。最终用户无法直接访问Gitaly。
  安装Logrotate
  

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab  

  

  检查应用程序状态
  检查GitLab及其环境是否正确配置:
  

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

  

  编译资产  
  

sudo -u git -H yarn install --production --pure-lockfile  
sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production(这个有可能会出错,但是问题不大)
  sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production(这个不错,如果没有尝试需要修复的信息就完成了)
  

  

  编译GetText PO文件 
  

sudo -u git -H bundle exec rake gettext:compile RAILS_ENV=production(这个也是有问题的没事)  

  

  启动您的GitLab实例
  

sudo service gitlab start  
# or
  
sudo /etc/init.d/gitlab restart
  

  

  Nginx 
  注意: Nginx是GitLab正式支持的Web服务器。如果您不能或不想使用Nginx作为Web服务器,请查看GitLab配方。
  安装
  

sudo apt-get install -y nginx  

  

  站点配置
  复制示例站点配置:
  

sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab  
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
  

  

  确保编辑配置文件以匹配您的设置。另外,请确保您将路径与GitLab相匹配,特别是如果为“git”用户以外的用户安装:
  

# Change YOUR_SERVER_FQDN to the fully-qualified  
# domain name of your host serving GitLab.
  
#
  
# Remember to match your paths to GitLab, especially
  
# if installing for a user other than 'git'.
  
#
  
# If using Ubuntu default nginx install:
  
# either remove the default_server from the listen line
  
# or else sudo rm -f /etc/nginx/sites-enabled/default
  
sudo editor /etc/nginx/sites-available/gitlab(可以该一下server_name,我改的是本机的ip)
  

  

  测试:
  

sudo nginx -t  

  

  如果此时报错如下:
  

nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/gitlab:29  
nginx: configuration file /etc/nginx/nginx.conf test failed
  解决方法:
  

  bill@bill:/home/git/gitlab$ sudo rm -rf /etc/nginx/sites-enabled/default
  bill@bill:/home/git/gitlab$ sudo nginx -t
  nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  nginx: configuration file /etc/nginx/nginx.conf test is successful
  最后再检查一下:
  

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production  并且重启服务:
  sudo service nginx restart
  sudo service gitlab restart
  还有就是一定要关闭防火墙,除非你自己制定规则,省去麻烦直接关闭吧
  sudo service ufw stop
  

  接下来就是搭建gitlab-runner,持续集成
  可以参考:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner
  https://docs.gitlab.com/runner/register/index.html
  1.添加GitLab的官方资料库:
  

# For Debian/Ubuntu  
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
  

  
# For RHEL/CentOS
  
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
  

  

  2.安装gitlab-ci-multi-runner:
  

# for DEB based systems  
root@host:# apt-get install gitlab-ci-multi-runner=1.11.2
  

  
# for RPM based systems
  
root@host:# yum install gitlab-ci-multi-runner-1.11.2-1
  

  

  3.注册
  

sudo gitlab-ci-multi-runner register  注册就可以看看官网的资料:https://docs.gitlab.com/runner/register/index.html
  

  4.一些操作
  参考:https://help.aliyun.com/document_detail/52857.html,还有自己新建一个项目的时候也会给出参数便于你设置。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433927-1-1.html 上篇帖子: gitlab 建立本地仓库 下篇帖子: GitHub vs GitLab:它们有什么区别?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表