GitLab是一个开源分布式版本控制系统,开发语言为Ruby,功能为管理项目源代码、版本控制、代码复用与查找java
github分布式在线代码托管仓库,我的版本可直接在线无偿使用,企业版本收费且须要服务器安装
gitlab分布式在线代码仓库托管软件,分社区免费版本与企业收费版本,都须要服务器安装node
• 开源免费,适合中小型公司将代码放置在该系统中 • 差别化版本管理,离线同步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;幂等性python
关闭防火墙 关闭selinux 各节点时间同步 各节点主机名不一致 各节点间ssh免密
2.一、预先安装python3.6linux
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.二、安装virtualenvnginx
pip3.6 install virtualenv
2.三、建立ansible用户并安装python3.6版本virtualenv实例git
useradd deploy && su - deploy virtualenv -p python3.6 .py3-a2.10-env
2.四、Git源代码安装ansible2.10github
cd /home/deploy/.py3-a2.10-env git clone https://github.com/ansible/ansible.git cd ansible && git checkout stable-2.10
2.五、加载python3.6 virtualenv环境算法
source /home/deploy/.py3-a2.10-env/bin/activate
2.六、安装ansible依赖包sql
pip3.6 install paramiko PyYAML jinja2
2.七、在python3.6虚拟环境下加载ansible2.10docker
source /home/deploy/.py3-a2.10-env/ansible/hacking/env-setup -q
2.八、验证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实例时,系统要求使用自动生成的密码进行解锁
查看初始密码
[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