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

[经验分享] 持续集成环境Gitlab-CI的官方安装过程解析

[复制链接]

尚未签到

发表于 2016-11-22 09:20:53 | 显示全部楼层 |阅读模式
  持续集成环境是一个非常重要的工具,在分工合作的项目中有着举足轻重的作用。公司最近要用Gitlab,需要配套的持续集成环境。研究了官方的文档,感觉官方的文档不是很明了。各种修改过后终于成功了。为了大家安装时不再重蹈覆辙,特写这篇博客。博客内容大部分都是官方文档的内容,我仅仅是在一些容易失误的地方做了写解释。官方文档可能会不时更新。但这些注意的点应该变化不是很大。官方安装文档网址:https://github.com/gitlabhq/gitlab-ci/wiki  进入后点击相应的版本。

Requirements:


  • GitLab 5.3+

Setup:

1. Packages / Dependencies
  sudo is not installed on Debian by default. Make sure your system is up-to-date and install it.

sudo apt-get update
sudo apt-get upgrade

  Note: Vim is an editor that is used here whenever there are files that need to be edited by hand. But, you can use any editor you like instead.

# Install vim
sudo apt-get install -y vim

  Install the required packages:

sudo apt-get install -y wget curl gcc checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libreadline6-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev openssh-server git-core libyaml-dev postfix libpq-dev libicu-dev
sudo apt-get install redis-server

2. Ruby
  Download Ruby and compile it:

mkdir /tmp/ruby && cd /tmp/ruby
curl --progress http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz | tar xz
cd ruby-1.9.3-p392
./configure
make
sudo make install

  Install the Bundler Gem:

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

3. Prepare the database
  You can use either MySQL or PostgreSQL.

MySQL

# Install the database packages
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
# Login to MySQL
$ mysql -u root -p
# Create the GitLab CI database
mysql> CREATE DATABASE IF NOT EXISTS `gitlab_ci_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
# Create the MySQL User change $password to a real password 这里的 $password密码需要替换为你希望的密码
mysql> CREATE USER 'gitlab_ci'@'localhost' IDENTIFIED BY '$password';

# Grant proper permissions to the MySQL User
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlab_ci_production`.* TO 'gitlab_ci'@'localhost';

PostgreSQL

# Install the database packages
sudo apt-get install -y postgresql-9.1 libpq-dev
# Login to PostgreSQL
sudo -u postgres psql -d template1
# Create a user for GitLab. (change $password to a real password) 这里的 $password密码需要替换为你希望的密码

template1=# CREATE USER gitlab_ci WITH PASSWORD '$password';
# Create the GitLab production database & grant all privileges on database
template1=# CREATE DATABASE gitlab_ci_production OWNER gitlab_ci;
# Quit the database session
template1=# \q
# Try connecting to the new database with the new user
sudo -u git -H psql -d gitlab_ci_production

4. GitLab CI user:

sudo adduser --disabled-login --gecos 'GitLab CI' gitlab_ci

5. Get code

cd /home/gitlab_ci/
sudo -u gitlab_ci -H git clone https://github.com/gitlabhq/gitlab-ci.git
cd gitlab-ci
sudo -u gitlab_ci -H git checkout 3-0-stable

6. Setup application

# Edit application settings
sudo -u gitlab_ci -H cp config/application.yml.example config/application.yml
sudo -u gitlab_ci -H vim config/application.yml
#下边是application.yml的例子defaults: &defaults

    



allowed_gitlab_urls:
- 'http://earth.bao.ac.cn/gitlab/' #这是你的gitlab的地址
#- 'https://dev.gitlab.org/' #这两个注释掉
#- 'https://staging.gitlab.org/'
development:
<<: *defaults
neat_setting: 800
test:
<<: *defaults
#allowed_gitlab_urls:     #这个注释掉
#  - 'http://demo.gitlab.com/'
production:
<<: *defaults
allowed_gitlab_urls:
- 'http://earth.bao.ac.cn/gitlab/'#这是你的gitlab的地址


# Create a sockets directory
sudo -u gitlab_ci -H mkdir -p tmp/sockets/
sudo chmod -R u+rwX  tmp/sockets/

Install gems

sudo -u gitlab_ci -H bundle --without development test postgres --deployment
sudo -u gitlab_ci -H bundle --without development test postgres --deployment

Setup db

# mysql
sudo -u gitlab_ci -H cp config/database.yml.mysql config/database.yml
# postgres
sudo -u gitlab_ci -H cp config/database.yml.postgres config/database.yml
# Edit user/password
sudo -u gitlab_ci -H vim config/database.yml
以下是database.yml例子


#
# PRODUCTION
#
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: gitlab_ci_production
pool: 5
username: gitlab_ci
password: "travelchallenge" #这里设置你的先前设置的gilab_ci的密码
# host: localhost
# socket: /tmp/mysql.sock
#
# Development specific
#
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: gitlab_ci_development
pool: 5
username: debian-sys-maint
password: "r0VpzdDxG33ruj0m"
# socket: /tmp/mysql.sock
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test: &test
adapter: mysql2
encoding: utf8
reconnect: false
database: gitlab_ci_test
pool: 5
username: debian-sys-maint
password: "r0VpzdDxG33ruj0m"
# socket: /tmp/mysql.sock



# Setup tables
sudo -u gitlab_ci -H bundle exec rake db:setup RAILS_ENV=production
# Setup scedules
#
sudo -u gitlab_ci -H bundle exec whenever -w RAILS_ENV=production

7. Install Init Script
  Download the init script (will be /etc/init.d/gitlab_ci):

sudo wget https://raw.github.com/gitlabhq/gitlab-ci/master/lib/support/init.d/gitlab_ci -P /etc/init.d/
sudo chmod +x /etc/init.d/gitlab_ci

  Make GitLab start on boot:

sudo update-rc.d gitlab_ci defaults 21

  Start your GitLab instance:

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

8. Nginx

Installation

sudo apt-get install nginx

Site Configuration
  Download an example site config:

sudo wget https://raw.github.com/gitlabhq/gitlab-ci/master/lib/support/nginx/gitlab_ci -P /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/gitlab_ci /etc/nginx/sites-enabled/gitlab_ci

  Make sure to edit the config file to match your setup:

# Change **YOUR_SERVER_IP** and **YOUR_SERVER_FQDN**
# to the IP address and fully-qualified domain name
# of your host serving GitLab CI
sudo vim /etc/nginx/sites-enabled/gitlab_ci
#下面是gitlab_ci的例子


upstream gitlab_ci {
server unix:/home/gitlab_ci/gitlab-ci/tmp/sockets/gitlab-ci.socket;
}
server {

#设置访问gitlab_ci的地址
listen 192.168.47.46:9292;
server_name 192.168.47.46;

root /home/gitlab_ci/gitlab-ci/public;

  access_log  /var/log/nginx/gitlab_ci_access.log;
  error_log   /var/log/nginx/gitlab_ci_error.log;

  location / {
    try_files $uri $uri/index.html $uri.html @gitlab_ci;
  }

  location @gitlab_ci {
    proxy_read_timeout 300;
    proxy_connect_timeout 300;
    proxy_redirect     off;

    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Sendfile-Type X-Accel-Redirect;

    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host              $http_host;
    proxy_set_header   X-Real-IP         $remote_addr;

    proxy_pass http://gitlab_ci;
  }
}
Restart

sudo /etc/init.d/nginx restart

9. Runners

Requirements
  The project is designed for the Linux operating system.
  We officially support (recent versions of) these Linux distributions:


  • Ubuntu Linux
  • Debian/GNU Linux

Installation



# Get code
git clone https://github.com/gitlabhq/gitlab-ci-runner.git
# Enter code dircd gitlab-ci-runner
# Install dependencies
# a) Linux
sudo apt-get install libicu-dev
# b) MacOSx (make sure you have brew installed)
sudo brew install icu4c
gem install bundler
bundle install
# Install runner in interactive mode
bundle exec ./bin/install
# SSH into your GitLab server and confirm to add host key to known_hosts
ssh git@<your gitlab url>

Run



bundle exec ./bin/runner

Autostart Runners
  On linux machines you can have your runners operate like daemons with the following steps

# make sure you install any system dependancies first
administrator@server:~$ sudo adduser --disabled-login --gecos 'GitLab CI Runner' gitlab_ci_runner
administrator@server:~$ sudo su gitlab_ci_runner
gitlab_ci_runner@server:/home/administrator$ cd ~/
# perform the setup above
gitlab_ci_runner@server:~$ exit;
gitlab_ci_runner@server:/home/gitlab_ci_runner$ sudo cp ./gitlab-ci-runner/lib/support/init.d/gitlab_ci_runner /etc/init.d/gitlab-ci-runner
gitlab_ci_runner@server:/home/gitlab_ci_runner$ cd ~
administrator@server:~$ sudo chmod +x /etc/init.d/gitlab-ci-runner
administrator@server:~$ sudo update-rc.d gitlab-ci-runner defaults 21
administrator@server:~$ sudo service gitlab-ci-runner start
Done!


#这个得注意,这条告诉你用gitlab的密码来登录gitlab_ci 而不是 什么admin@local.host  Visit YOUR_SERVER for your first GitLab CI login. You should use your GitLab credentials in orider to login


Enjoy!



#说是enjoy,我一开始还是没有明白。我搞了半天都没发现如何启动一次构建。后来发现你需要到gitlab中找到你要构建的项目,在其settings中的service中激活你构建。这需要你填写你的gitlab_ci的对应的项目中的integration的相关项。



好吧现在你可以Enjoy 了

如果你还是没有Enjoy,请以Enjoy为主题评论

运维网声明 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-303813-1-1.html 上篇帖子: 在自己的服务器上部署 GitLab 社区版 下篇帖子: Github Atom 1.11 正式版发布
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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