• 持续集成环境Gitlab-CI的官方安装过程解析


    持续集成环境是一个非常重要的工具,在分工合作的项目中有着举足轻重的作用。公司最近要用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为主题评论
  • 相关阅读:
    CentOS7下Tomcat启动慢的原因及解决方案
    在SpringBoot中使用RabbitMQ
    SpringBoot 中使用Redis分布式锁
    微信小程序个人入门开发
    CentOS 通过 expect 批量远程执行脚本和命令
    (七)Spring Cloud 配置中心config
    (六)Spring Cloud 网关Zuul
    (五)Spring Cloud 熔断器 hystrix
    用Sql Server自动生产html格式的数据字典
    TCP介绍
  • 原文地址:https://www.cnblogs.com/inbase/p/3276310.html
Copyright © 2020-2023  润新知