做門的網(wǎng)站1688的網(wǎng)站特色
主要參考資料
B站樂鑫信息科技《【樂鑫全球開發(fā)者大會】DevCon23 #15 |通過 CI/CD 進行流水線開發(fā)》
pytest-embedded樂鑫文檔: https://docs.espressif.com/projects/pytest-embedded/en/latest/api.html
目錄
- CI/CD簡介
- 樂鑫內部CI/CD測試
- GitLab CI/CD
- GitHub Actions
CI/CD簡介
CI(Continuous Integration,持續(xù)集成)/CD(Continuous Delivery,持續(xù)交付/Continuous Deployment,持續(xù)部署)屬于DevOps的概念,指將傳統(tǒng)開發(fā)過程中的代碼構建、測試、部署以及基礎設施配置等一系列流程的人工干預轉變?yōu)樽詣踊?/mark>。使用CI/CD,代碼經(jīng)由開發(fā)人員更改后,可進行自動化測試并完成交付和部署。恰當?shù)腃I/CD管道可使計算機停機時間最小化,從而更快發(fā)布代碼。
樂鑫內部CI/CD測試
- idf-build-apps
idf-build-apps的作用只有兩個,找到編譯文件和編譯。 - pytest-embeded
GitLab CI/CD
stages:- build- deploybefore_script:- echo "Preparing the environment..."build_job:stage: buildscript:- echo "Building the project..."- make builddeploy_job:stage: deployscript:- echo "Deploying the project..."- make deploy
- stages定義了兩個階段:build和deploy。這表示流水線將按照這個順序先執(zhí)行build階段,然后執(zhí)行deploy階段。
- before_script是所有作業(yè)執(zhí)行之前的鉤子(hook),在這里輸出了準備環(huán)境的信息。
- build_job是build階段的一個作業(yè),它將執(zhí)行script部分定義的命令,比如回顯"Building the project…"和執(zhí)行make build命令。
- deploy_job是deploy階段的一個作業(yè),它也將執(zhí)行script部分定義的命令,比如回顯"Deploying the project…"和執(zhí)行make deploy命令。
GitHub Actions
GitHub的CI/CD功能是通過GitHub Actions實現(xiàn)的。GitHub Actions允許你在GitHub倉庫中直接構建、測試和部署代碼。與GitLab CI/CD類似,你可以定義多個工作流程(workflows)和作業(yè)(jobs),并在不同的階段執(zhí)行不同的任務。
name: CI/CD Workflowon: [push, pull_request]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Set up JDK 1.8uses: actions/setup-java@v1with:java-version: 1.8- name: Build projectrun: ./gradlew builddeploy:needs: buildruns-on: ubuntu-latestif: github.event_name == 'push' && github.ref == 'refs/heads/main'steps:- uses: actions/checkout@v2- name: Set up Node.jsuses: actions/setup-node@v1with:node-version: '12'- name: Deploy projectrun: npm run deployenv:CI: true
- name: 定義了工作流程的名稱。
- on: 指定觸發(fā)工作流程的事件,這里使用了push和pull_request。
- jobs: 包含了一個或多個作業(yè)的定義。
- build: 定義了build作業(yè),它將在Ubuntu最新版本上運行。
- steps: 包含了作業(yè)需要執(zhí)行的步驟。
- uses: 使用了actions市場中的actions/checkout@v2動作來檢出代碼。
- name和run: 定義了步驟的名稱和要運行的命令。
- deploy: 定義了deploy作業(yè),它依賴于build作業(yè)的成功完成(needs: build),并且只有在推送到main分支時才會運行(if條件)。
- env: 定義了部署步驟所需的環(huán)境變量。
- build: 定義了build作業(yè),它將在Ubuntu最新版本上運行。