一、安装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以及密码即能登入,登入之后可以修改密码。
二、账号申请管理
有了管理员账号之后,其它用户就能申请个人账号进行使用,申请之后,由管理账号进行通过:
然后进入以下页面,可以对申请用户进行管理,编辑权限,通过之后,就可以使用申请账号进行登录 :
三、创建组和项目:
管理员账号以及有权限的个人账号,都可以创建组和项目,操作比较简单。
四、自动打包发布:
首先根据提示在组中安装所需要的包,以及申请runner,注意是在编译的服务器中安装,不是在gitlab代码托管的服务器:
runner创建之后就可以在项目中创建CI/CI流水线:
具体的一些配置项可以自行在网上查询.gitlab-ci.yaml的编写说明,比如设置只在特定的分支上编译等。
同时还需要配置ssh以便于免密登录:
1、生成密钥:
ssh-keygen
2、将公钥传到服务器(root和host分别对应用户名和IP):
ssh-copy-id root@host
3、测试免密登录是否成功:
ssh root@host
接下来在gitlab的项目组中设置CI/CD变量(也可以在具体项目中单独配置):
设置的变量以及值为:
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