happyfreeangel 2019-10-27
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
[ 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://‘: warning: You appear to have cloned an empty repository.
[ devops]# cd test/ [ test]# vim test.py
[ test]# git add .
[ test]# git config --global user.email "" [ test]# git config --global user.name "jym"
[ test]# git commit -m "First commit" [master (root-commit) b6581b9] First commit 1 file changed, 3 insertions(+) create mode 100644 test.py
[ 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:<ip或域名>:8080
第一次访问新的jenkins实例时,系统要求使用自动生成的密码进行解锁
查看初始密码
[ 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