SAP 電商雲 Spartacus UI CI 指令碼分析
分析入口,開啟這個 build:有一個 build id
能檢視到 Travis 上這個 build 有很多 job 組成:
我們檢視其中名叫 E2E regression tests for B2B 的 job:
這個 job 定義在 .travis.yml 檔案的 jobs 區域裡:
我們在 travis 上點選這個 job 的超連結,開啟 job 明細頁面:
https://app.travis-ci.com/github/SAP/spartacus/jobs/553015336
往下就能檢視這個 job 的執行日誌了:
我們逐行分析。
發現 client 和 server 都使用了 docker engine 的社群版。
用命令列下載 Chrome,克隆 Spartacus 程式碼庫:
Setting environment variables from repository settings
$ export ARTIFACTS_BUCKET=[secure] $ export ARTIFACTS_KEY=[secure] $ export ARTIFACTS_SECRET=[secure] $ export CYPRESS_KEY=[secure] $ export SONAR_TOKEN=[secure] $ export SPA_ENV=[secure] $ export CYPRESS_CONFIG=cypress.ci.json $ export LHCI_GITHUB_APP_TOKEN=[secure]
這些標註了[secure] 的都是維護在 Github 程式碼倉庫上的隱私資料,只有指定許可權的 admin 才能檢視。
最終執行的是下列的命令:
export CYPRESS_CONFIG=cypress.ci.b2b.json && export SPA_ENV='ci,b2b' && ./ci-scripts/e2e-cypress.sh -s b2b
依次開始執行這個指令碼檔案裡的命令列:
指令碼檔案的第一行語句:
!/usr/bin/env bash
什麼是 bash?
Bash 是 GNU 專案的 shell——Bourne Again SHell。 這是一個與 sh 相容的 shell,它結合了 Korn shell (ksh) 和 C shell (csh) 的有用功能。 它旨在符合 IEEE POSIX P1003.2/ISO 9945.2 外殼和工具標準。 它為程式設計和互動使用提供了對 sh 的功能改進。 此外,大多數 sh 指令碼無需修改即可由 Bash 執行。
那麼 sh 又是指什麼?
在類 Unix 作業系統上,sh 是 Bourne shell 的命令名稱,它是 Unix 和許多類 Unix 作業系統(包括 Linux)的標準命令語言直譯器。
Bourne shell 的概念?
Bourne shell 最初由 AT&T 的 Steven Bourne 開發,經常用於編寫指令碼。 Bourne shell 在 Linux 或 Unix 提示符下通過執行 bsh 或 sh 命令來執行。
GNU 是一種作業系統,它是自由軟體——也就是說,它尊重使用者的自由。 GNU 作業系統由 GNU 軟體包(由 GNU 專案專門釋出的程式)以及第三方釋出的免費軟體組成。 GNU 的發展使得在沒有軟體會踐踏您的自由的情況下使用計算機成為可能。
GNU 代表 GNU's not Unix,這使得該術語成為遞迴首字母縮略詞(其中一個字母代表首字母縮略詞本身的首字母縮略詞)。
更多Jerry的原創文章,盡在:"汪子熙":