我在GitLab中有一个git存储库,我需要在某个任意触发器上发布到Azure Web App(即它不能在每次更新存储库时触发,但我们对触发发布的方式相当灵活)。据我所知,最简单的方法是创建一个Azure Automation Powershell脚本,该脚本将以某种方式启动,然后对GitLab进行身份验证,拉出存储库并发布它。但是,我不确定如何在不登录Azure管理门户的情况下触发任意Powershell脚本,或者如何获取Azure的部署密钥以使其向Gitlab进行身份验证。
这些是可解决的问题,还是有更好的方法?
答案 0 :(得分:3)
更新:更好的更新文章在此处:https://christianliebel.com/2016/05/auto-deploying-to-azure-app-services-from-gitlab/
一旦您阅读并理解了那个,那么您可以查看Azure和VSTS https://www.visualstudio.com/en-us/docs/build/get-started/aspnet-4-ci-cd-azure-automatic#faq
旧答案: 我偶然发现了这篇文章https://github.com/projectkudu/kudu/wiki/Continuous-deployment
底部区域是最有用的部分。它应该适用于GitLab。 为了清理它,Kudo服务已经在你所有的azure web项目上运行,应该已经存在了。只需添加" scm"到网址访问它。
好的文章底部部分:
设置Web Hook,以便在部署发生时通知Kudu
hook URL是Kudu服务上的/ deploy路径。所以它看起来像https://mysite.scm.azurewebsites.net/deploy。但由于该服务使用基本身份验证,因此您需要传递URL中的信用。通常,您希望在此处使用站点级凭据,而不是用户凭据(请参阅部署凭据)。所以完整的URL看起来像https:// $ mysite:BigRandomPassword@mysite.scm.azurewebsites.net/deploy
获取此URL的最简单方法是直接从Azure门户复制它。您可以在“配置”选项卡的“部署触发器URL”字段中找到它。
获得网址后,您可以将其设置为 GitHub / Bitbucket / GitLab挂钩。
对于私人回购,请设置部署密钥
如果回购是私有的,您还需要设置SSH'部署密钥'在 GitHub / Bitbucket / GitLab 。
可以使用以下步骤完成:
获取上面的完整部署URL,并使用/ api / sshkey替换/ deploy?ensurePublicKey = 1。所以它看起来像https:// $ mysite:BigRandomPassword@mysite.scm.azurewebsites.net/api/sshkey?ensurePublicKey = 1 在此URL上运行curl,该URL返回SSH公钥。它以JSON字符串形式返回,因此您需要删除引号。它应该看起来像ssh-rsa AAAAB3NzaC1etc ... 将此字符串设置为'部署密钥'在您的GitHub / Bitbucket / GitLab存储库中。