一、安装gitlab

        首先下载gitlab的安装包,地址如下:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/bionic/main/g/gitlab-ce/

        然后安装下载的包即可,一般还需要安装openssh-server等依赖包,在安装gitlab包之前可以使用dpkg -I *.deb查看所需依赖并安装。

        修改gitlab配置,主要是一些端口用户等配置:

sudo vim /etc/gitlab/gitlab.rb
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
#external_url 'http://gitlab.example.com'
external_url 'http://192.168.229.128' #修改为机器IP

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "smtp user"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_pool'] = false

        修改配置之后执行命令重新加载配置:

sudo gitlab-ctl reconfigure

        执行完该条命令之后,就会生成一个初始密码,位置如下:

sudo cat  /etc/gitlab/initial_root_password

然后通过IP即可访问,输入账号root以及密码即能登入,登入之后可以修改密码。

二、账号申请管理

        有了管理员账号之后,其它用户就能申请个人账号进行使用,申请之后,由管理账号进行通过:

gitlab搭建以及自动化部署-LMLPHP

        然后进入以下页面,可以对申请用户进行管理,编辑权限,通过之后,就可以使用申请账号进行登录 :

gitlab搭建以及自动化部署-LMLPHP

 三、创建组和项目:

        管理员账号以及有权限的个人账号,都可以创建组和项目,操作比较简单。

四、自动打包发布:

         首先根据提示在组中安装所需要的包,以及申请runner,注意是在编译的服务器中安装,不是在gitlab代码托管的服务器:

        gitlab搭建以及自动化部署-LMLPHP

 gitlab搭建以及自动化部署-LMLPHP

 gitlab搭建以及自动化部署-LMLPHP

         runner创建之后就可以在项目中创建CI/CI流水线:

gitlab搭建以及自动化部署-LMLPHP

         具体的一些配置项可以自行在网上查询.gitlab-ci.yaml的编写说明,比如设置只在特定的分支上编译等。

        同时还需要配置ssh以便于免密登录:

        1、生成密钥:

ssh-keygen

        2、将公钥传到服务器(root和host分别对应用户名和IP):

ssh-copy-id root@host

        3、测试免密登录是否成功:

ssh root@host

        接下来在gitlab的项目组中设置CI/CD变量(也可以在具体项目中单独配置):

       gitlab搭建以及自动化部署-LMLPHP

         设置的变量以及值为:

SSH_USER = 服务器用户名
SSH_HOST = 服务器ip
SSH_KNOWN_HOSTS = 文件 ~/.ssh/known_host 中服务器ip的一行(一般为第一行)
SSH_PRIVATE_KEY = 文件 ~/.ssh/id_rsa 中的内容

        这一系列配置完之后,就可以在项目中按照.gitlab-ci.yaml进行编译了,当然,CI服务器上也需要安装一些编译各种包时所需要的依赖包。

五、常见CI错误解决:

Using SSH executor...
ERROR: Preparation failed: ssh command Connect() error: getting host key callback: open /root/.ssh/known_hosts: no such file or directory
Will be retried in 3s ...

解决:在/etc/gitlab-runner/config.toml添加:
[[runners]]
...
  [runners.ssh]
    disable_strict_host_key_checking = true
...
ERROR: Job failed (system failure): prepare environment: exit status 1. Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information

解决:
删除 /home/用户/.bash_logout
05-03 17:36