歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 持續集成環境Gitlab CI的官方安裝過程解析

持續集成環境Gitlab CI的官方安裝過程解析

日期:2017/2/28 14:38:08   编辑:Linux教程

持續集成環境是一個非常重要的工具,在分工合作的項目中有著舉足輕重的作用。公司最近要用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 而不是 什麼[email protected]

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為主題評論

GitLab 的詳細介紹:請點這裡
GitLab 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved