如何将构建工件从GitLab CI部署到Azure应用服务?

时间:2017-11-24 08:43:51

标签: azure deployment continuous-integration gitlab

我在gitlab.com上托管了一个存储库,它有几个与之关联的构建作业。我希望能够将任何给定构建的编译工件(通常以HTML / CSS / JavaScript编译文件的形式)部署到azure。

我到目前为止看到的所有指南/文档/教程(123,仅举几例),专注于直接从git部署文件存储库,我可以看到在某些情况下有用,但在这种情况下不是我需要的,因为我想要编译目标,而不是源代码。

欢迎使用解决方案,我们已经持续了好几天了。

GitLab的替代方案(如果它不在GitLab中)也将受到欢迎。

1 个答案:

答案 0 :(得分:0)

添加一个部署阶段,该阶段具有一个作业或一个以上作业的构建依赖性,从而下载这些作业的工件,请参见下面的.gitlab-ci.yml:

stages:
- build
- ...
- deploy

buildjob:1:
  stage: build
  script:
  - build_to_web_dir.sh
  artifacts:
    paths:
     - web

buildjob:2:
  stage: build
  script:
  - build_to_web_dir.sh
  artifacts:
    paths:
     - web

deploy:
  stage: deploy
  GIT_STRATEGY: none
  image:  microsoft/azure-cli
  dependecies:
   - buildjob:1
   - buildjob:2
  script:
  - export containerName=mynewcontainername
  - export storageAccount=mystorageaccount
  - az storage blob delete-batch --source ${containerName} --account-name ${storageAccount} --output table
  - az storage blob upload-batch --source ./web --destination ${containerName} --account-name ${storageAccount} --output table --no-progress

在部署作业中,CI_PROJECT_DIR ./web中只有一个目录,其中包含构建作业已生成的所有文件。

结帐storage quickstart azure,用于创建和设置存储容器,帐户详细信息等。

在部署阶段,我们可以使用microsoft/azure-cli码头工人镜像,因此我们可以从脚本中调用az命令,有关详细说明,请参见storage-quickstart-blobs-cli

az storage blob upload-batch --source ./web --destination ${containerName} --account-name ${storageAccount} --output blobname --no-progress

将./web复制到存储容器

出于安全原因,我们不应该在.gitlab-ci.yml中导出

export AZURE_STORAGE_ACCOUNT="mystorageaccountname"
export AZURE_STORAGE_ACCESS_KEY="myStorageAccountKey"

但是它们应该在project_or_group/settings/ci_cd环境变量中定义,因此它们将出现在脚本环境中。