作者:CODING - 朱增輝
前言
make 工具非常強大,配合 makefile 文件可以實現軟件的自動化構建,但是執行 make 命令依然需要經歷手動輸入執行、等待編譯完成、將目標文件轉移到合適位置等過程,我們真正關心的是最終的輸出,卻在這些中間過程上浪費了很多時間。利用 CODING 持續集成功能可以實現自動觸發構建,構建全程自動化,無須分心看護,節省時間。
本文通過一個 C 語言 + Makefile Demo 項目講解如何使用 CODING 持續集成功能創建構建計划,自動觸發構建,以及如何將生成的目標文件發布到 CODING generic 制品庫。
准備工作
環境
本文涉及到以下工具,請確認已存在,或者根據鏈接的文檔進行安裝。
另外,您還需准備一個 CODING 項目。
代碼
我已經准備了一份簡單的示例代碼,使用 make 工具構建 Hello-world 程序。
// hello.c
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
您可以通過下面的命令克隆到本地。
git clone https://e.coding.net/coding-public/demo-c-make.git
倉庫中還包含了一個 makefile 文件,定義了簡單的規則來完成軟件構建。
all: hello
hello: hello.o
gcc -o hello hello.o
hello.o: hello.c
gcc -c hello.c
clean:
rm -rf hello.o hello
您可以在本地執行 make 命令以驗證構建正常。
下面我們正式開始通過一個 Demo 演示 CODING 平台持續集成功能的使用。
步驟一 創建制品庫
為了方便隨時使用構建出來的目標文件,我們將構建物存儲到 CODING 平台制品庫,因此需要先創建合適的制品倉庫,這里創建 generic 倉庫比較合適。
從左側導航欄打開制品庫
。
單擊新建倉庫,選擇 generic 類型,按照提示指定倉庫名稱,這里倉庫名取為 generic。
步驟二 創建並配置構建計划
從左側導航欄打開持續集成 --> 構建計划
頁面,點擊新建構建計划配置
創建並配置新的構建計划。在彈出的頁面中,輸入構建計划名稱,選擇代碼倉庫,配置來源
指的的該構建計划的構建腳本存放位置,對於簡單的、變動不頻繁的腳本可以使用靜態配置的選項,否則更推薦使用代碼倉庫中的腳本,這樣更加靈活,方便管理
點擊使用模板,可根據自己需要選擇合適模板,這里選擇 簡易模板
。
保存構建計划后,系統會自動將構建模板對應的 Jenkinsfile 推送到倉庫,默認為 master 分支。
步驟三 編寫構建腳本
構建腳本定義構建過程的具體步驟,是構建計划的核心部分。CODING 平台提供了圖形化編輯器方便您快速編寫構建腳本。
CODING 持續集成底層基於開源 CI/CD 軟件領導者 Jenkins 實現,完全兼容 Jenkins pipeline 構建腳本語法,根據 Jenkins 官方提供的腳本編寫指南,可以實現更復雜的構建任務,CODING 也提供了文本編輯器方便您在線編輯。
代碼倉庫中已包含一個簡單的構建腳本(Jenkisnfile),您可以按照自己的想法參考編寫。
// Jenkinsfile
pipeline {
agent any
stages {
stage('檢出') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[
url: env.GIT_REPO_URL,
credentialsId: env.CREDENTIALS_ID
]]])
}
}
stage('構建') {
steps {
echo '構建中...'
sh 'make'
echo '構建完成.'
}
}
stage('發布') {
steps {
echo '發布中...'
codingArtifactsGeneric(
files: 'hello',
repoName: "${env.GENERIC_REPO_NAME}",
version: "${env.GIT_COMMIT}",
)
echo '發布完成'
}
}
}
}
}
構建腳本中的大部分內容都比較容易理解,稍顯陌生的是 codingArtifactsGeneric 步驟,這是 CODING 官方提供的插件,方便上傳到 CODING generic 制品庫。該插件通過環境變量 GENERIC_REPO_NAME 獲取倉庫名,因此需要配置構建計划設置該變量值。
步驟四 配置觸發構建規則
CODING 持續功能支持多種觸發方式包括代碼源觸發、定時觸發、API 觸發及手動觸發,這幾種觸發方式可以同時配置互不沖突,其中代碼源觸發又可配置為推送到指定分支或標簽觸發,觸發方式多樣,可滿足絕大部分場景需要。
如前言中所說,我們希望把更多的精力放在源代碼上,盡量減少構建所帶來的干擾,因此這里必不可少的是配置通過代碼源觸發,通過配置如下正則表達式,可以在推送代碼到匹配的分支名時自動觸發構建。
^refs/(heads/(release|release-.*|build-.*|feat-.*|fix-.*|test-.*|mr/.*))
步驟五 執行構建
執行構建最簡單的方式是手動觸發構建,選中想要構建的構建計划,單擊立即構建會彈出配置窗口,在這里可以配置此次構建使用的參數,單擊確定即可開始構建。
按照步驟四的配置,我們的構建計划也支持推送的匹配分支觸發構建,您可以執行如下命令創建新分支並推送到遠端倉庫,即可觸發構建。
git checkout -b build-ci-test
git push origin HEAD
觸發后,構建會自動執行,您可以繼續做其他事情。
步驟六 下載目標文件
步驟三中定義的構建腳本會將構建出的目標文件發布到 CODING 制品庫,如果我們想要在本地使用也是很方便下載的。在制品倉庫中單擊文件名即可看到指引頁,里面給出了對文件不同操作的命令。
總結
本文通過一個 C 語言 + makefile 的 Demo 項目講解了 CODING 持續集成、制品庫的簡單使用。借由 CODING 平台的這些功能,我們像是雇了一個永不會累的助手,承擔了耗時的構建工作,從而節省了時間,提高了效率。