項目環(huán)境:
- 操作系統(tǒng):SUSE Linux Enterprise Server 12 SP3 (x86_64)
- 軟件:docker物赶,jenkins江耀,ansible遂填,gitlab
軟件介紹:
- Docker:Docker 是一個開源的應(yīng)用容器引擎族展,基于 Go 語言 并遵從Apache2.0協(xié)議開源缎脾。Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級悬垃、可移植的容器中游昼,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實現(xiàn)虛擬化尝蠕。容器是完全使用沙箱機(jī)制烘豌,比虛擬機(jī)更加強大,體積小看彼,運行速度快廊佩,Docker 容器可以打包為鏡像文件(類似VM虛擬機(jī)的那些快照文件),遷移的時候我們只需要在新服務(wù)器上安裝 Docker,就能把之前打包好的鏡像文件導(dǎo)入到 Docker 里面靖榕,運行容器标锄,就能實現(xiàn)訪問,不需要重新配置環(huán)境
- Jenkins:Jenkins 是一個開源軟件項目茁计,是基于 Java 開發(fā)的一種持續(xù)集成工具料皇,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能
- Ansible:ansible 是新出現(xiàn)的自動化運維工具践剂,基于 Python 開發(fā)鬼譬,集合了眾多運維工具(puppet、cfengine舷手、chef拧簸、func、fabric)的優(yōu)點男窟,實現(xiàn)了批量系統(tǒng)配置盆赤、批量程序部署、批量運行命令等功能歉眷。ansible 是基于模塊工作的牺六,本身沒有批量部署的能力。真正具有批量部署的是ansible 所運行的模塊汗捡,ansible 只是提供一種框架
-
GitLab:GitLab 是一個用于倉庫管理系統(tǒng)的開源項目淑际,使用 Git 作為代碼管理工具,并在此基礎(chǔ)上搭建起來的web服務(wù)扇住。GitLab 是由 GitLabInc. 開發(fā)春缕,使用 MIT 許可證的基于網(wǎng)絡(luò)的 Git 倉庫管理工具,且具有 wiki 和 issue 跟蹤功能艘蹋。使用 Git 作為代碼管理工具锄贼,并在此基礎(chǔ)上搭建起來的 web 服務(wù)
真正的大師永遠(yuǎn)抱著一顆學(xué)徒的心
1、安裝 pip(通用的 Python 包管理工具):
1. zypper se pip
2. zypper install python-pip
3. pip --version (檢測 pip 是否安裝成功)
安裝 pip
2女阀、安裝docker:
1. pip install docker
安裝 docker2. pip install docker-compose
安裝 docker-compose3. 或者創(chuàng)建一個 install_docker.sh 文件宅荤,輸入如下內(nèi)容:
- 安裝 docker
cd ../pkgs/docker-ee
yum install docker-ee-selinux-17.03.1.ee.3-1.el7.centos.noarch.rpm
yum install docker-ee-17.03.1.ee.3-1.el7.centos.x86_64.rpm- 安裝 docker-compose
cd ..
cp docker-compose /usr/local/bin
chmod +x /usr/local/bin/docker-compose
mkdir /etc/docker
cp daemon.json /etc/docker/daemon.json- 啟動 docker
service docker start4. 執(zhí)行 install_docker.sh
- bash install_docker.sh
3、拉取 jenkins 鏡像
- docker pull jenkins:alpine
拉取 jenkins 鏡像
4浸策、生成并啟動 jenkins 容器
- 生成 jenkins:docker run -itd -p 3003:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/hzq/jenkins:/var/jenkins_home jenkins
- Jenkins 工作空間: /home/hzq/jenkins/workspace/
- 查看 jenkins 日志:docker logs jenkins
- 啟動 jenkins:docker start jenkins
- 查看 jenkins 容器是否啟動
jenkins 容器成功啟動- 進(jìn)入 /home/hzq/jenkins 目錄,復(fù)制 secrets/initialAdminPassword 里的密鑰冯键,在下面安裝 jenkins 的時候會用到
5、安裝 jenkins
- 在瀏覽器輸入服務(wù)器 IP地址 + 3003 端口進(jìn)入安裝頁面
- 輸入上面復(fù)制的密鑰后點擊繼續(xù)
輸入密鑰
自定義插件
開始安裝
設(shè)置管理員信息
進(jìn)入主頁
6. 下載 gitlab 鏡像庸汗,并啟動 gitlab
- 下載 gitlab 鏡像
docker pull gitlab/gitlab-ce- 啟動 gitlab:
sudo docker run --detach
--hostname gitlab.xxxxx.com
--publish 443:443 --publish 80:80 --publish 10022:22
--name gitlab
--restart always
--volume /data/gitlab/config:/etc/gitlab
--volume /data/gitlab/logs:/var/log/gitlab
--volume /data/gitlab/data:/var/opt/gitlab
gitlab/gitlab-ce:latest (注:改為10022 端口惫确,避免與系統(tǒng)的 22 端口發(fā)生沖突)
啟動 gitlab 容器
通過設(shè)定的地址 + 端口進(jìn)入gitlab 登錄界面
進(jìn)入到個人項目頁面
7. 進(jìn)入 jenkins 頁面配置 jenkins 和 gitlab
- 新建一個任務(wù)
創(chuàng)建好項目的名稱,選擇一個構(gòu)建一個自由風(fēng)格的軟件項目
創(chuàng)建任務(wù)
添加描述
Repository URL 處填寫 git 倉庫地址
Credentials 處添加 ssh 密鑰
觸發(fā)器構(gòu)建夫晌,點擊高級
點擊高級按鈕后雕薪,生成一個 secret token(復(fù)制到gitlab當(dāng)中)
gitlab和 jenkins 通訊,需要此 token 和上面的 url
生成 secret token登錄到gitlab頁面晓淀,進(jìn)入 Settings 里的 Integrations
配置 webhooks
填寫 jenkins 上配置的參數(shù)
8. 項目測試
- 克隆 gitlab上面的項目到本地
克隆項目
測試項目
成功自動拉取項目進(jìn)入 jenkins 工作空間 (/home/hzq/jenkins/workspace/)
創(chuàng)建和推送的first_demo.txt 已經(jīng)被成功拉取
9.使用 ansible 自動化部署項目
- Ansible 配置: /etc/ansible/ansible.cfg
- 配置管理主機(jī): /etc/ansible/hosts
- 在hosts文件中添加管理主機(jī)的IP地址列表:172.17.0.1 ... etc.
- 關(guān)于 ansible 的配置可以參考: Jenkins配置ansible
- ansible 配置好后所袁,我們在本地新建一個 ansible.sh 的腳本 (執(zhí)行一些 git 命令)
ansible.sh- 刪除剛剛創(chuàng)建的 first_demo.txt 文件,執(zhí)行ansible.sh 腳本凶掰,測試結(jié)果
成功執(zhí)行- jenkins 也成功響應(yīng)
成功自動拉取