我在gitlab.com上托管了一个存储库,它有几个与之关联的构建作业。我希望能够将任何给定构建的编译工件(通常以HTML / CSS / JavaScript编译文件的形式)部署到azure。
我到目前为止看到的所有指南/文档/教程(1,2,3,仅举几例),专注于直接从git部署文件存储库,我可以看到在某些情况下有用,但在这种情况下不是我需要的,因为我想要编译目标,而不是源代码。
欢迎使用解决方案,我们已经持续了好几天了。
GitLab的替代方案(如果它不在GitLab中)也将受到欢迎。
答案 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环境变量中定义,因此它们将出现在脚本环境中。