说到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