创新互联建站专业为企业提供黑山网站建设、黑山做网站、黑山网站设计、黑山网站制作等企业网站建设、网页设计与制作、黑山企业网站模板建站服务,十多年黑山做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
GitLab是一个开源分布式版本控制系统,开发语言为Ruby,功能为管理项目源代码、版本控制、代码复用与查找
github分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装
gitlab分布式在线代码仓库托管软件,分社区免费版本与企业收费版本,都需要服务器安装
• 开源免费,适合中小型公司将代码放置在该系统中
• 差异化版本管理,离线同步y以及强大分支管理功能
• 便捷的GUI操作界面以及强大账户权限管理功能
• 集成度很高,能够集成绝大多数的开发工具
• 支持内置HA,保证在高并发下仍旧实现高可用性
1. Nginx静态Web服务器
2. Gitlab-workhorse轻量级的反向代理服务器
3. Gitlab-shell用于处理git命令和修改authorized keys列表
4. Logrotate 日志文件管理工具
5. Postgresql 数据库
6. redis 缓存服务器
1. 创建并克隆项目
2. 创建项目某feature分支
3. 编写代码并提交至该分支
4. 推送该项目分支至远程gitlab服务器
5. 进行代码检查并提交master主分支合并申请
6. 项目领导审查代码并确认合并申请
a. 关闭防火墙
b. 关闭SELINUX并重启系统
a. 安装gitlab依赖包
yum -y install curl policycoreutils openssh-server openssh-clients postfix
b. 配置yum仓库
wget http://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh
chmod +x script.rpm.sh
./script.rpm.sh
c. 启动postfix邮件服务
systemctl start postfix
d. 安装gitlab-ce社区版本
yum -y install gitlab-ce
生成私钥(key文件):key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
openssl genrsa -out "/etc/gitlab/ssl/gitlab.example.com.key" 2048
生成csr文件:csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.csr"
生成crt文件:crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
openssl x509 -req -days 365 -in "/etc/gitlab/ssl/gitlab.example.com.csr" -signkey "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.crt"
生成dh密钥:openssl dhparam用于生成和管理dh的文件。dh(Diffie-Hellman)是著名的密钥交换协议,或称为密钥协商协议,它可以保证通信双方安全地交换密钥。但注意,它不是加密算法,所以不提供加密功能,仅仅只是保护密钥交换的过程。
openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
修改以上文件权限为600
chmod 600 /etc/gitlab/ssl/*
备份
cp gitlab.rb gitlab.rb.backup
修改
vim /etc/gitlab/gitlab.rb
external_url 'https://gitlab.example.com'
nginx['redirect_http_to_https'] = true
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
# nginx['ssl_dhparam'] = /etc/gitlab/ssl/dhparams.pem
gitlab-ctl reconfigure
备份
cp /var/opt/gitlab/nginx/conf/gitlab-http.conf{,.backup}
server区段添加
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
rewrite ^(.*)$ https://$host$1 permanent;
gitlab-ctl restart
在/etc/hosts中添加 192.168.143.130 gitlab.example.com
默认管理员root,为root设置密码并登陆
git -c http.sslVerify=false clone https://gitlab.example.com/root/test.git
[root@node1 devops]# git -c http.sslVerify=false clone https://gitlab.example.com/root/test.git
Cloning into 'test'...
Username for 'https://gitlab.example.com': root
Password for 'https://root@gitlab.example.com':
warning: You appear to have cloned an empty repository.
[root@node1 devops]# cd test/
[root@node1 test]# vim test.py
[root@node1 test]# git add .
[root@node1 test]# git config --global user.email "admin@example.com"
[root@node1 test]# git config --global user.name "jym"
[root@node1 test]# git commit -m "First commit"
[master (root-commit) b6581b9] First commit
1 file changed, 3 insertions(+)
create mode 100644 test.py
[root@node1 test]# git -c http.sslVerify=false push origin master
模块化,调用特定的模块,完成特定的任务;基于python语言研发,由Paramiko、PyYAML和Jinja2三个关键模块;部署简单,主从模式,支持自定义模块;支持playbook;幂等性
关闭防火墙
关闭selinux
各节点时间同步
各节点主机名不一致
各节点间ssh免密
2.1、预先安装python3.6
wget http://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
tar xf Python-3.6.5.tar.xz && cd Python-3.6.5/
./configure --prefix=/usr/local --with-ensurepip=install --enable-shared
LDFLAGS="-wl , -rpath /usr/local/lib"
make && make altinstall
2.2、安装virtualenv
pip3.6 install virtualenv
2.3、创建ansible用户并安装python3.6版本virtualenv实例
useradd deploy && su - deploy
virtualenv -p python3.6 .py3-a2.10-env
2.4、Git源代码安装ansible2.10
cd /home/deploy/.py3-a2.10-env
git clone https://github.com/ansible/ansible.git
cd ansible && git checkout stable-2.10
2.5、加载python3.6 virtualenv环境
source /home/deploy/.py3-a2.10-env/bin/activate
2.6、安装ansible依赖包
pip3.6 install paramiko PyYAML jinja2
2.7、在python3.6虚拟环境下加载ansible2.10
source /home/deploy/.py3-a2.10-env/ansible/hacking/env-setup -q
2.8、验证ansible2.5安装
ansible --version
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序方式部署。
Jenkins 是一个主流的运维开发平台,兼容所有主流开发环境;通过插件可与海量业内主流开发工具实现集成;通过job配置单位与日志管理,使开发与运维人员能协同工作;通过权限管理划分不同job不同角色;强大的负载均衡功能,保证项目的可靠性。
yum install java
yum install docker-ce
下载地址:https://pkg.jenkins.io/redhat-stable/
yum install jenkins-2.199-1.1.noarch.rpm
systemctl start jenkins
查看启动情况
systemctl status jenkins.service -l
浏览器访问jenkins地址 http:
第一次访问新的jenkins实例时,系统要求使用自动生成的密码进行解锁
查看初始密码
[root@node1 jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
acd7e8eef641433b87e3358d8d6d1e34
两个选项可以设置:
• 安装建议的插件 - 安装推荐的一组插件,这些插件基于最常见的用例.
• 选择要安装的插件 - 选择安装的插件集。当你第一次访问插件选择页面时,默认选择建议的插件。
Note:可以通过Jenkins中的Manage Jenkins > Manage Plugins 页面在稍后的时间点安装(或删除)其他Jenkins插件
参考文章:
https://jenkins.io/zh/
https://www.bilibili.com/video/av71123251/?p=1