Gitlab
安装
Docker 安装
YUM 源安装
vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
yum clean all
yum makecache
#安装依赖
yum -y install curl policycoreutils policycoreutils-python openssh-server openssh-clients postfix
yum -y install gitlab-ce
RPM 文件安装
访问 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 下载 rpm 文件进行安装
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.1.5-ce.0.el7.x86_64.rpm
rpm -ivh gitlab-ce-14.1.5-ce.0.el7.x86_64.rpm
使用官方提供的方法安装
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum -y install gitlab-ce
配置
配置文件
/etc/gitlab/gitlab.rb
gitlab-ctl reconfigure
配置完成以后,网页访问设置root账户密码,登录,修改中文界面
vim /etc/gitlab/gitlab.rb
### 基础配置 ###
external_url 'https://gitlab.xxx.cn'
#用户访问所使用的URL,域名或者IP地址
gitlab_rails['time_zone'] = 'Asia/Shanghai'
#时区
### SSH配置 ###
gitlab_rails['gitlab_shell_ssh_port'] = 10222
#使用SSH协议拉取代码所使用的连接端口。
### 邮箱配置 ###
gitlab_rails['smtp_enable'] = true
#启用SMTP邮箱功能,绑定一个第三方邮箱,用于邮件发送
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
#设置SMTP服务器地址
gitlab_rails['smtp_port'] = 465
#设置SMTP服务器端口
gitlab_rails['smtp_user_name'] = "xxx@xxx.cn"
#设置邮箱账号
gitlab_rails['smtp_password'] = "xxx"
#设置邮箱密码
gitlab_rails['smtp_authentication'] = "login"
#设置邮箱账号密码身份验证方式,"login"表示采用账号密码的方式登陆
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
#设置开启SMTP邮件使用TLS传输加密协议传输邮件,以保证邮件安全传输
gitlab_rails['gitlab_email_from'] = 'xxx@xxx.cn'
#设置Gitlab来源邮箱地址,设置登陆所使用的邮箱地址
### WEB配置 ###
nginx['enable'] = true
#启用Nginx服务
nginx['client_max_body_size'] = '250m'
#设置客户端最大文件上传大小
nginx['redirect_http_to_https'] = true
#设置开启自动将HTTP跳转到HTTPS
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.xxx.cn.pem"
#设置HTTPS所使用的证书
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.xxx.cn.key"
#设置HTTPS所使用的证书密码
nginx['ssl_protocols'] = "TLSv1.1 TLSv1.2 TLSv1.3"
#设置HTTPS所使用的TLS协议版本
nginx['ssl_session_cache'] = "builtin:1000 shared:SSL:10m"
#设置开启SSL会话缓存功能
nginx['ssl_session_timeout'] = "5m"
#设置SSL会话超时时间
nginx['listen_addresses'] = ['*', '[::]']
#设置Nginx监听地址,"*"表示监听主机上所有网卡的地址
nginx['gzip_enabled'] = true
#设置开启Nginx的传输压缩功能,以节约传输带宽,提高传输效率
当配置文件发生变化时,或者是第一次启动时,我们需要刷新配置。
systemctl restart gitlab-runsvdir
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-ctl status
gitlab-ctl tail
通过 cat /etc/gitlab/initial_root_password
查看初始密码(文件在 24 小时后删除);
首次登录修改 root 账户密码,设置中文,关闭用户注册
SSH 密钥
Webhook
Jenkins
安装
Docker 安装
docker search jenkins
docker pull jenkins/jenkins
mkdir -p /mnt/jenkins_home
#需要修改下目录权限,因为当映射本地数据卷时,/data/jenkins_home/ 目录的拥有者为 root 用户,而容器中 jenkins 用户的 uid 为 1000。
chown -R 1000:1000 /mnt/jenkins_home/
docker run \
--detach \
--publish 8888:8080 \
--publish 50000:50000 \
--name jenkins \
--restart unless-stopped \
-v /mnt/jenkins_home:/var/jenkins_home \
jenkins/jenkins
YUM 源安装
yum install java-1.8.0-openjdk
yum install java-11-openjdk
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
导入 rpm 密钥
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum clean all
yum makecache
yum -y install jenkins
报错:“Delta RPMs disabled because /usr/bin/applydeltarpm not installed.”,执行 yum install deltarpm
继续安装
PS.如果报错:No Presto metadata available for Jenkins,这是没有重建 YUM 源缓存,重建继续安装;或者浏览器直接访问 https://get.jenkins.io/redhat/ 下载 rpm 文件安装:
wget https://get.jenkins.io/redhat/jenkins-2.313-1.1.noarch.rpm
rpm -ivh jenkins-2.313-1.1.noarch.rpm
yum install -y epel-release
yum install -y daemonize
配置文件:/etc/sysconfig/jenkins
程序目录:/usr/lib/jenkins/
rpm -ql jenkins 查询安装路径
注意:如果要修改端口,先修改网页再更改配置文件,否则无法访问。
升级
systemctl stop jenkins
cp /usr/lib/jenkins/jenkins.war /usr/lib/jenkins/jenkins.war.2.288
wget https://updates.jenkins.io/download/war/2.300/jenkins.war
mv jenkins.war /usr/lib/jenkins/jenkins.war
systemctl start jenkins
配置
相关命令
systemctl daemon-reload
systemctl status jenkins
systemctl start jenkins
systemctl stop jenkins
systemctl enable jenkins
初始化
网页访问初始化http://IP:8080/,解锁 Jenkins
cat /var/lib/jenkins/secrets/initialAdminPassword
然后安装相应的插件
邮件通知
安装 Email Extension Template 插件
设置系统管理员邮件地址
移动到邮件通知
配置要通知的 Job,构建后操作
汉化不完全
安装好插件 Locale 和 Localization: Chinese (Simplified) 后,先设置为 zh_US 重新启动,再设置回来
其他插件重启 Jenkins 后,又出现了部分中文简体不翻译的情况;方法如下,可以完美修复。
- 将语言设定为 zh_US,Jenkins 切换为英文;
- 调用 restart 重启 Jenkins:http://域名/restart;
- 再次语言设定为 zh_CN,刷新即可。
备份和迁移
网页登录,系统管理->配置,查看并主目录:/var/jenkins_home,打包需要备份的目录和文件即可
- config.xml:配置
- jobs 文件夹:工程
- users 文件夹:用户
- plugins 文件夹:插件
然后重启:scp /mnt/jenkins_home/config.xml root@192.168.100.101:/var/lib/jenkins/
scp -r /mnt/jenkins_home/jobs root@192.168.100.101:/var/lib/jenkins/
scp -r /mnt/jenkins_home/users root@192.168.100.101:/var/lib/jenkins/
scp -r /mnt/jenkins_home/plugins root@192.168.100.101:/var/lib/jenkins/
注意修改用户权限
chown jenkins:jenkins /var/lib/jenkins/config.xml
chown -R jenkins:jenkins /var/lib/jenkins/jobs
chown -R jenkins:jenkins /var/lib/jenkins/users
chown -R jenkins:jenkins /var/lib/jenkins/plugins
systemctl restart jenkins
插件 Update Site
| 维护方 | 镜像中心地址 | | —- | —- | | 官方 | https://updates.jenkins.io/current/update-center.json | | 官方 | https://updates.jenkins.io/experimental/update-center.json | | Jenkins 中文社区 | https://updates.jenkins-zh.cn/update-center.json | | 清华大学 | https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json | | 华为开源镜像站 | https://mirrors.huaweicloud.com/jenkins/updates/update-center.json | | 腾讯 | https://mirrors.cloud.tencent.com/jenkins/updates/update-center.json | | USTC | https://mirrors.ustc.edu.cn/jenkins/updates/update-center.json | | BIT | https://mirror.bit.edu.cn/jenkins/updates/update-center.json | | LEWORK | https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/tencent/update-center.json https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/tsinghua/update-center.json https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/ustc/update-center.json https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/bit/update-center.json |
构建
所在服务器需要安装 git 客户端:yum -y install git
Git
服务器生成 SSH 密钥:ssh-keygen -t rsa -b 4096
,顺便拷贝到目标服务器做免密码登录:ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip
。
然后服务器的私钥用来创建 SSH 凭据,点击下图红框按钮进行添加:
选中“SSH Username with private key”,然后下拉到“Private Key”部分,点击“Add”进行添加。cat /root/.ssh/id_rsa
Gitlab 设置部署密钥
cat /root/.ssh/id_rsa.pub
NodeJS
系统管理->全局工具配置->NodeJS->NodeJS 安装,选择需要的版本即可。
npm install —registry=https://registry.npm.taobao.org
.NET
1.安装插件与环境
编译.NET应用程序可通过微软提供的 MSBuild 工具,先安装插件:MSBuild。
注意:Jenkins 服务器需安装 MSBuild,Windows 系统可以安装 VS 开发工具,构建出问题的时候打开 VS 调试。https://dotnet.microsoft.com/download
Linux 系统先安装 Core 也有 https://docs.microsoft.com/zh-cn/dotnet/core/install/linux
安装 Mono
https://www.mono-project.com/download/stable/#download-lin-centos
rpmkeys --import "http://pool.sks-keyservers.net/pks/lookup?op=get&search=0x3fa7e0328081bff6a14da29aa6a19b38d3d831ef"
su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo'
yum install mono-devel mono-complete
2.全局配置
插件安装完毕后,进入系统管理->全局工具配置(ConfigureTools)找到 MSBuild 配置选项,并点击“新增 MSBuild”按钮:
运行 **whereis xbuild**
查看 Jenkins 中 Path to MSBuild 的位置:
报错
Host key verification failed
cat /etc/passwd
可以看到 Jenkins 普通用户无法执行某些系统命令并且没有为 Jenkins生成过密钥对,也没有将公钥拷到目标服务器上。
sed -i 's/jenkins:\/bin\/false/jenkins:\/bin\/bash/g' /etc/passwd
su jenkins
ssh-keygen -t rsa -b 4096
ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub root@IP
/usr/bin/xbuild is not a directory on the Jenkins master (but perhaps it exists on some agents)
Active: active (exited)
权限问题:
JENKINS_USER=”jenkins” 改为 root
chown -R jenkins:jenkins /var/lib/jenkins
chown -R jenkins:jenkins /var/cache/jenkins
chown -R jenkins:jenkins /var/log/jenkins
上述三个文件夹里面没文件,使用 journalctl -xu jenkins
命令查看错误信息无果,直接运行 war 文件成功;
cd /usr/lib/jenkins/
java -jar /usr/lib/jenkins/jenkins.war
应该是内存不够后台杀进程,添加 swap,并修改 vm.swappiness=30
;
创建并挂载交换分区
非 root 用户无法监听 80 端口,需要修改的的话,使用 root 运行
Webhook 报错 403
全局设置 -> 关闭防止跨站请求(高版本需要添加以下启动参数):
vim /etc/sysconfig/jenkins
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
Jenkins 安全设置后报“HTTP Status 404 j_acegi_security_check”,导致无法登录
vim /var/lib/jenkins/congi.xml