微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pulumi:将Azure Web App Service Web挂钩添加到Azure容器注册表以进行连续部署

如何解决Pulumi:将Azure Web App Service Web挂钩添加到Azure容器注册表以进行连续部署

我想部署通过pulumi启用了docker CD的Azure Web App。 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,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

如果网络挂钩不是正确的方式:如何从Azure容器注册表中实现对Azure Web应用程序的连续部署?

解决方法

尝试使用listWebAppPublishingCredentials。我对Azure CLI的功能进行了反向工程:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。