說到Azure Container Registry,想必你們都有必定的瞭解,ACR是Azure中提供的私有的容器映像倉庫。ACR Task是 ACR中的一個功能套件。 它爲 Linux、Windows 和 ARM 等平臺提供基於雲的容器映像生成,並能夠針對 Docker 容器自動執行 OS 和框架修補。 ACR Task不只可使用按需容器映像生成將「內部循環」開發週期擴展到雲,並且還能啓用源代碼更新、容器基礎映像或計時器更新所觸發的自動生成。 例如,使用基本映像更新觸發器,能夠自動執行 OS 和應用程序框架修補工做流,在遵照不可變容器原則的前提下維護安全的環境。
使用ACR Task能夠在如下狀況下自動進行容器構建:git
閒言少敘,下面咱們就一塊兒看一下如何使用ACR Task在提交代碼/代碼變動時自動生產容器鏡像:
完成本次實驗咱們須要準備一下先決條件:github
建立Github我的訪問令牌:
若要在向 Git 存儲庫提交內容時觸發任務,ACR 任務須要用於訪問存儲庫的我的訪問令牌 (PAT)。 若是尚未 PAT,請按照如下步驟在 GitHub 中生成一個:
導航到 GitHub 上的 PAT 建立頁面 :https://github.com/settings/tokens/new
輸入令牌的簡短說明,例如「ACR Task Demo」,而後選擇 ACR 的做用域以訪問存儲庫。 要像本次博客同樣訪問公共存儲庫,請在「repo」下方,啓用「repo:status」和「public_repo」,而後點擊生產令牌:
docker
生產令牌後,咱們點擊複製並將其保存(在後面咱們會用到):
windows
建立生成任務:
現已完成啓用 ACR Task以讀取提交狀態和在存儲庫中建立 Webhook 所需的步驟,接下來能夠建立Task,以便在向存儲庫提交內容時觸發容器映像生成。
執行以下命令以建立對於的環境變量:安全
ACR_NAME=ACR_NAme GIT_USER=GIT_USER GIT_PAT=GIT_PAT
使用以下命令建立ACR構建任務:
注意:{{.Run.ID}}構成標籤值。這樣能夠確保圖像被惟一標記。–Context僅連接到您的git repo。而後,設置要與–branch開關一塊兒使用的分支。–file是您的docker文件的位置和名稱。git-access-token是您先前從GitHub建立的令牌。
若是要建立Windows容器,則須要使用–platform 開關。若是要建立Linux容器,則不須要提供它。框架
az acr task create \ --registry $ACR_NAME \ --name buildhelloword \ --image helloworld:{{.Run.ID}} \ --context https://github.com/$GIT_USER/acrtaskdemo.git \ --branch master \ --file ACRTasks/dockerfile \ --git-access-token $GIT_PAT \ --platform windows
測試生成任務
使用以下命令來手動出發ACR Task生產鏡像:az acr task run --registry $ACR_NAME --name buildhelloword
能夠看到,容器鏡像已經生產成功,而且已經上傳到ACR:
ide
測試了手動觸發構建之後,咱們來測試一下當提交代碼時自動觸發構建鏡像,在這裏我直接在GIThub上對文件進行編輯了,固然也能夠在本地進行編輯而後再推送到github
當我編輯完提交之後,將觸發ACR Task建立的Webhook,並開始構建過程。若是想查看日誌,可使用如下命令:az acr task logs --registry $DEV_ACR_NAME
測試
咱們也可使用如下命令來查看構建狀態:az acr task list-runs --registry $DEV_ACR_NAME --output table
ui
同時咱們能夠在Azure Portal中查看對於ACR存儲庫中的容器鏡像:
3d