基于 docker 的 jenkins-ansible-gitlab 實現(xiàn)自動化部署

項目環(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
安裝 docker

2. pip install docker-compose
安裝 docker-compose

3. 或者創(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 start

4. 執(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)
    成功自動拉取

\ (^^) 好啦燥爷!以上就是今天的所有內(nèi)容蜈亩,大家有什么不明白的或者有什么好的建議,歡迎留言隨時溝通哦~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末前翎,一起剝皮案震驚了整個濱河市稚配,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌港华,老刑警劉巖道川,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異立宜,居然都是意外死亡冒萄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門尊流,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灯帮,你說我怎么就攤上這事崖技。” “怎么了钟哥?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵迎献,是天一觀的道長。 經(jīng)常有香客問我腻贰,道長忿晕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任银受,我火速辦了婚禮,結(jié)果婚禮上鸦采,老公的妹妹穿的比我還像新娘宾巍。我一直安慰自己,他們只是感情好渔伯,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布顶霞。 她就那樣靜靜地躺著,像睡著了一般锣吼。 火紅的嫁衣襯著肌膚如雪选浑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天玄叠,我揣著相機(jī)與錄音古徒,去河邊找鬼。 笑死读恃,一個胖子當(dāng)著我的面吹牛隧膘,可吹牛的內(nèi)容都是我干的代态。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼疹吃,長吁一口氣:“原來是場噩夢啊……” “哼蹦疑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起萨驶,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤歉摧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后腔呜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叁温,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年育谬,在試婚紗的時候發(fā)現(xiàn)自己被綠了券盅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡膛檀,死狀恐怖锰镀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咖刃,我是刑警寧澤泳炉,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站嚎杨,受9級特大地震影響花鹅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枫浙,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一刨肃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箩帚,春花似錦真友、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至是嗜,卻和暖如春愈案,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹅搪。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工站绪, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丽柿。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓崇众,卻偏偏與公主長得像掂僵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子顷歌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容