#shell #azure-devops #azure-pipelines
#оболочка #azure-devops #azure-конвейеры
Вопрос:
Я пытаюсь настроить переменные из предопределенных переменных с помощью скрипта bash с помощью скрипта bash. но не удалось добиться успеха. ниже приведена моя задача в конвейере Azure
resources:
pipelines:
- pipeline: pipeline1
project: appcom
source: pipeline-api
trigger:
branches:
- develop
- feat/*
- pipeline: pipeline2
project: appcom
source: pipeline2-api
trigger:
branches:
- develop
- feat/*
variables:
- name: alias
value: $(resources.triggeringAlias)
stages:
- stage: ScanImage
jobs:
- job: ScanImage
pool:
vmImage: 'ubuntu-16.04'
steps:
- script: echo $(alias)
- task: Bash@3
inputs:
targetType: 'inline'
script: |
if [ "$(alias)" == "pipeline1" ]; then
echo ("##vso[task.setvariable variable=apiname]$(resources.pipeline.pipeline1.pipelineName)")
echo ("##vso[task.setvariable variable=dockertag]$(resources.pipeline.pipeline1.sourceCommit) | cut -c -7")
echo ("##vso[task.setvariable variable=helmpath]P02565Mallorca/pipeline1-api")
elif [ "$(alias)" == "pipeline2" ]; then
echo ("##vso[task.setvariable variable=apiname]$(resources.pipeline.pipeline2.pipelineName)")
echo ("##vso[task.setvariable variable=dockertag]$(resources.pipeline.pipeline2.sourceCommit) | cut -c -7")
echo ("##vso[task.setvariable variable=helmpath]P02565Mallorca/pipeline2")
fi
- script: echo $(dockertag)
- script: echo $(helmpath)
- script: echo $(apiname)
это выдает ошибку с ## [ошибка] Bash завершается с кодом ‘2
Ответ №1:
По ссылке на этот документ: Установка переменных в сценариях, приведенных ниже, yaml должен работать должным образом.
resources:
pipelines:
- pipeline: pipeline1
project: appcom
source: pipeline-api
trigger:
branches:
- develop
- feat/*
- pipeline: pipeline2
project: appcom
source: pipeline2-api
trigger:
branches:
- develop
- feat/*
variables:
- name: alias
value: $(resources.triggeringAlias)
stages:
- stage: ScanImage
jobs:
- job: ScanImage
pool:
vmImage: 'ubuntu-16.04'
steps:
- script: echo $(alias)
- task: Bash@3
inputs:
targetType: 'inline'
script: |
if [ "$(alias)" == "pipeline1" ]; then
echo "##vso[task.setvariable variable=apiname]$(resources.pipeline.pipeline1.pipelineName)"
echo "##vso[task.setvariable variable=dockertag]$(resources.pipeline.pipeline1.sourceCommit) | cut -c -7"
echo "##vso[task.setvariable variable=helmpath]P02565Mallorca/pipeline1-api"
elif [ "$(alias)" = "pipeline2" ]; then
echo "##vso[task.setvariable variable=apiname]$(resources.pipeline.pipeline2.pipelineName)"
echo "##vso[task.setvariable variable=dockertag]$(resources.pipeline.pipeline2.sourceCommit) | cut -c -7"
echo "##vso[task.setvariable variable=helmpath]P02565Mallorca/pipeline2-api"
fi
- script: echo $(dockertag)
- script: echo $(helmpath)
- script: echo $(apiname)
Дополнительные сведения см. в разделе:Ресурсы: конвейеры.
Комментарии:
1. Я с удовольствием помогу вам.
2. Привет, Эдвард, я последовал, как вы упомянули, и настроил branchName как переменную, как показано ниже echo «##vso [task.setvariable variable=branchName] $ (resources.pipeline.pipeline2.sourceBranch)», но я не смог использовать эту переменную в условии для этапов as stage: — stage: DEV_DCR условие:и(successed(), или(eq(переменные $(branchName), ‘ссылки / главы / разработка’), eq(переменные $(branchName), ‘ссылки / главы / релиз’), содержит (переменные $(branchName), ‘ссылки / главы / исправление /’),содержит (переменные $(branchName), ‘ссылки / заголовки / исправление/’)))….. это дает ошибку. есть идеи, как мы можем это использовать
3. Вы должны использовать
stageDependencies.stageName.jobName.outputs['stepName.variableName']
notvariables$(branchName)
in condition, см.: docs.microsoft.com/en-us/azure/devops/release-notes/2020 /… и docs.microsoft.com/en-us/azure/devops/pipelines/process /… для получения подробной информации. Кстати, пожалуйста, отправьте новый запрос, если у вас есть дополнительные вопросы с подробной информацией. Спасибо.4. можно ли пометить выше конвейера с помощью $ (псевдоним), чтобы у меня был фильтр для списка релизов для каждого API??
5. или можно назвать конвейер примерно таким именем: $(псевдоним)