簡體   English   中英

Pulumi:添加Azure Web App Service web hook到Azure Container Registry進行持續部署

[英]Pulumi: Add Azure Web App Service web hook to Azure Container Registry for continuous deployment

我想部署一個 Azure Web 應用程序,通過 pulumi 啟用 docker CD。 AFAIK 我必須在我的容器注冊表中為它創建一個 webhook。 但我無法弄清楚如何從 web 應用程序獲取 webhook URL。

這是我設置基礎設施的方式

const config = new pulumi.Config();
const location = config.require("location");
const resourceGroup = new resources.ResourceGroup("rootResourceGroup", { ... });
const registry = new container.Registry("containerRegistry", { ... });
const appServicePlan = new web.AppServicePlan("appserviceplan", { ... });
const suffix = new random.RandomString("suffix", { ... });

const credentials = pulumi.all([resourceGroup.name, registry.name])
.apply(([resourceGroupName, registryName]) => container.listRegistryCredentials({
    resourceGroupName: resourceGroupName,
    registryName: registryName,
}));
const adminUsername = credentials.apply(credentials => credentials.username!);
const adminPassword = credentials.apply(credentials => credentials.passwords![0].value!);

const app = { name: "foo-demo", container: "foo/demo" };

const webApp = new web.WebApp(app.name, {
    name: pulumi.interpolate`${app.name}-${suffix.result}`,
    resourceGroupName: resourceGroup.name,
    location,
    serverFarmId: appServicePlan.id,
    siteConfig: {
        appSettings: [{
            name: "WEBSITES_ENABLE_APP_SERVICE_STORAGE",
            value: "false"
        }, {
            name: "DOCKER_ENABLE_CI",
            value: "true"
        }, {
            name: "DOCKER_REGISTRY_SERVER_URL",
            value: pulumi.interpolate`https://${registry.loginServer}`,
        }, {
            name: "DOCKER_REGISTRY_SERVER_USERNAME",
            value: adminUsername,
        }, {
            name: "DOCKER_REGISTRY_SERVER_PASSWORD",
            value: adminPassword,
        }],
        alwaysOn: true,
        linuxFxVersion: registry.loginServer.apply(url => `DOCKER|${url}/${app.container}:latest`)
    }});

const webHookName = `${app.name}-webhook`;
const hook = new container.Webhook(webHookName, {
    resourceGroupName: resourceGroup.name,
    location,
    registryName: registry.name,
    actions: ["push"],
    scope: `${app.container}:latest`,
    status: "enabled",
    serviceUri: "TODO", // <----- HOW!?!?
    webhookName: webHookName
});

讀取 webhook URL 的 azure CLI 命令是:

az webapp deployment container config -n sname -g rgname -e true

如果 webhook 不是正確的方法:如何實現從 Azure Container Registry 到 Azure Web App 的持續部署?

嘗試使用listWebAppPublishingCredentials 我對 Azure CLI 的功能進行了逆向工程:

const webhook = pulumi.all([resourceGroup.name, webApp.name])
    .apply(([resourceGroupName, name]) => 
        web.listWebAppPublishingCredentials({ resourceGroupName, name }))
    .apply(creds => creds.scmUri + "/docker/hook");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM