使用 CODING 進行 Hexo 項目的持續集成

本文做者:CODING 用戶 - 廖石榮

關於持續集成的概念

持續集成指的是,頻繁地(一天屢次)將代碼集成到主幹。

持續集成的過程

如圖所示:php

7.png

  1. CI 過程:代碼編寫 -> 源代碼庫(GitHub or gitlab)-> CI 服務器(代碼構建、自動化測試、結果反饋【構建結果】)
  2. 涉及 CI 工具:Jenkins、Travis CI、TeamCity、Gitlab CI、CircleCI、Codeship 等,相關資料能夠查詢對應的官網,其中應用普遍的 Jenkins 和 Travis CI,Gitlab CI 是開源的 Rails 項目 GitLab 的一個組成部分,GitLab CI 能與 GitLab 徹底集成,能夠經過使用 GitLab API 輕鬆地做爲項目的鉤子。

關於持續集成的優勢

快速發現錯誤。每完成一點更新,就集成到主幹,能夠快速發現錯誤,定位錯誤也比較容易。

防止分支大幅偏離主幹。若是不是常常集成,主幹又在不斷更新,會致使之後集成的難度變大,甚至難以集成。html

持續集成服務的選擇

關於網上集成服務的工具不少,其中尤爲以 Jenkins 服務最受歡迎,可是 Jenkins 服務須要在本身服務器上進行配置安裝,以及安裝各類插件,對於剛上手的小白來講,可能存在必定的門檻,操做步驟繁多,操做不夠智能,不是真正的自動化運維,缺乏一鍵發佈構建服務。因此咱們選擇了「CODING 持續集成」java

CODING 提供的集成服務是什麼

CODING 推出的持續集成服務,「CODING 持續集成」是基於 Jenkins 的,兼容 Jenkinsfile 配置文件,若是您以前有使用過或者寫過 Jenkinsfile 相信您會很快上手。node

如何使用 CODING 持續集成服務

「CODING 持續集成」是基於 Jenkins 的,經過 Jenkinsfile 配置文件完成CI的步驟,接下來將引導您一步步建立一個持續集成示例。python

  • 登陸 coding,進入項目中心,點擊左邊菜單集成服務,開通集成服務,配置完成以後會手動觸發第一次構建過程

2.png

  • 找到或者建立 Jenkinsfile,若是你對於Jenkins 比較熟悉的話,能夠本身編寫 Jenkinsfile 配置文件,也能夠採用CODING 提供的模板文件,以下我就採用了Jenkinsfile 模板文件來實行自動化持續集成服務,您能夠在修改 Jenkinsfile 的時候修改觸發方式,您能夠自行選擇是推送到某個標籤或者某個分支時間觸發構建。jenkins 以及可以爲 agent 默認配置好 timezone 和 localtime(默認中國上海)

3.png

  • 配置好 Jenkinsfile 文件以及配置好環境變量,點擊保存,即可以進行持續集成項目了

如圖所示,集成步驟分爲拉取代碼-》構建-》測試-》部署等步驟,點擊每一個步驟能夠看到相應的命令執行狀況,下面來一個一個步驟配合 Jenkinsfile 文件解釋命令的一些執行狀況:git

1.檢出項目,以下所示 Jenkinsfile 配置文件第一步經過 Git 檢出在遠程倉庫分支的代碼,至於哪一個分支能夠經過環境變量配置讀取 REF 這個環境變量npm

stage("檢出") {
            steps {
                sh 'ci-init'
                checkout(
                  [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], 
                  userRemoteConfigs: [[url: env.GIT_REPO_URL]]]
                )
            }
        }

4.png

如上圖所示,第一步主要是執行從 Git 倉庫遠程拉取代碼,因此命令都是 Git 裏面的,包括讀取 Git 配置的環境變量包括更新 Jenkinsfile 文件緩存

2.構建項目,以下命令所示構建這一步主要是初始化代碼和打包代碼,由於咱們這個工程是以 Node.js 爲主要開發語言,因此重點關注 Node.js 版本和 安裝 hexo 腳手架命令便可打包,目前Coding 提供的語言環境包括了 java-1.8.0_181, go-1.7.4, node-10.11.0, php-7.0.30, ruby-2.3, python-2.7.13 等。若有須要能夠聯繫客服進行開通其它語言環境。tomcat

stage("構建") {
            steps {
                echo "構建中..."
                sh 'go version'
                sh 'node -v'
                sh 'java -version'
                sh 'php -v'
                sh 'python -V'
                sh 'gcc -v'
                sh 'make -v'
                // 請在這裏放置您項目代碼的單元測試調用過程,例如:
                // sh 'mvn package' // mvn 示例
                // sh 'make' // make 示例
                sh 'npm install -g hexo-cli' //安裝hexo 腳手架
                echo "構建完成."
                // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集構建產物
            }
        }

5.png
由於這個 Hexo 項目是以 Node.js 爲主的項目,因此在 Jenkinsfile 文件命令裏面其實能夠把其它語言的檢查版本命令去掉,只須要執行 node - v 命令便可ruby

3.測試項目,以下所示,若是是 maven 項目能夠經過 mvn 命令執行測試語句,咱們 Hexo 這個工程經過 hexo 腳手架構建測試命令便可,若是單元測試不經過則會顯示不經過,(hexo 對文件格式存在要求,若是文件格式不符合正規 MarkDown 語法,則會拋出錯誤)

stage("測試") {
            steps {
                echo "單元測試中..."
                // 請在這裏放置您項目代碼的單元測試調用過程,例如:
                sh 'hexo clean' //清除緩存
                sh 'hexo g ' // 將 md 文件構建爲 html 頁面示例
                echo "單元測試完成."
                // junit 'target/surefire-reports/*.xml' // 收集單元測試報告的調用過程
            }
        }

image.png
*正確構建測試結果以下圖:
image.png

4.部署項目
以下所示,部署項目命令能夠執行本身寫的部署腳本文件,也能夠配置好「_config.yml」文件以後直接執行 hexo 腳手架自帶的命令。

以下圖整個代碼結構圖:
6.png

配置文件部分截圖
7.png

部署命令:

stage("部署") {
            steps {
                echo "部署中..."
                // 請在這裏放置收集單元測試報告的調用過程,例如:
                // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:
                // sh './deploy.sh' // 自研部署腳本
                sh 'npm install hexo-deployer-git --save' // 安裝 deploy 腳手架
                sh 'hexo deploy' // 部署
                echo "部署完成"
            }
        }

服務啓動展現

系統主頁,能夠做爲團隊以及小型公司共享文件的社區論壇,hexo 構建速度快,採用純靜態框架,語法採用純markdown 語言,適合編寫文檔。image.png

頁面詳情,能夠經過配置是否開啓評論功能以及能夠添加讚揚功能,而且能夠統計字數,建議時長等功能,分類標籤等適合文檔歸集等功能image.png

總結

CODING 是一個面向開發者的雲端開發平臺,提供 Git/SVN 代碼託管、任務管理、在線 WebIDE、Cloud Studio、開發協做、文件管理、Wiki 管理、提供我的服務及企業服務,其中「CODING 企業版」實現了 DevOps 流程全自動化,爲企業提供軟件研發全流程管理工具,打通了從團隊構建、產品策劃、開發測試到部署上線的全過程。 集成了 Jenkins 等主流企業開發流程工具,如上所示,這個 Hexo 博客即可以在 CODING 上面實現團隊協做開發,一鍵部署做爲團隊以及公司文檔共享社區論壇等做用。

本文適量引用: 阮一峯的博客
相關文章
相關標籤/搜索