С помощью переменных и выражений в задачах конвейера можно задавать входные и выходные параметры. Вводимые параметры связывают задачу конвейера с одной или несколькими переменными, выражениями или условиями и определяют особенности работы конвейера при его выполнении.
Конвейеры могут запускать простые или сложные решения по доставке программного обеспечения
При связывании задач конвейера друг с другом можно добавлять выражения по умолчанию и сложные выражения. В результате конвейер может запускать простые или сложные решения по доставке программного обеспечения.
Чтобы создать параметры в конвейере, перейдите на вкладку Входные данные или Выходные данные и добавьте переменную, введя знак доллара $ и выражение. Например, следующий параметр используется в качестве входных данных задачи, вызывающей URL-адрес: ${Stage0.Task3.input.URL}
.
В формате привязки переменной используются компоненты синтаксиса, которые называются областями и ключами. SCOPE
определяет контекст как входные или выходные данные, а KEY
определяет сведения. В примере параметра ${Stage0.Task3.input.URL}
input
— SCOPE
, а URL-адрес — KEY
.
Выходные свойства любой задачи можно сопоставить с любым количеством вложенных уровней привязки переменных.
Дополнительные сведения об использовании привязок переменных в конвейерах см. в разделе Как использовать привязки переменных в конвейерах Code Stream.
Использование выражений со значком доллара с областями и ключами для связывания задач конвейера
Задачи конвейера можно связать с помощью выражений с переменными со значком доллара. Выражения вводятся в формате ${SCOPE.KEY.<PATH>}
.
Чтобы определить поведение задачи конвейера, в каждом выражении SCOPE
представляет собой контекст, который используется в Code Stream. Области нужен ключ KEY
, определяющий параметры действия, выполняемого задачей. Если значение KEY
является вложенным объектом, можно указать дополнительный путь PATH
.
В этих примерах содержится описание SCOPE
и KEY
и показано, как их можно использовать в конвейере.
Табл. 1.
Использование ОБЛАСТИ (SCOPE) и КЛЮЧА (KEY)
SCOPE |
Назначение выражения и примера |
KEY |
Способ применения SCOPE и KEY в конвейере |
input |
Входные свойства конвейера: ${input.input1} |
Имя входного свойства |
Для создания ссылки на входное свойство конвейера в задаче используйте следующий формат:
tasks:
mytask:
type: REST
input:
url: ${input.url}
action: get
input:
url: https://www.vmware.com
|
output |
Выходные свойства конвейера: ${output.output1} |
Имя выходного свойства |
Для создания ссылки на выходное свойство для отправки уведомления используйте следующий формат:
notifications:
email:
- endpoint: MyEmailEndpoint
subject: "Deployment Successful"
event: COMPLETED
to:
- [email protected]
body: |
Pipeline deployed the service successfully. Refer ${output.serviceURL}
|
task input |
Входные данные для задачи: ${MY_STAGE.MY_TASK.input.SOMETHING} |
Показывает входные данные задачи в уведомлении |
При запуске задания Jenkins оно может ссылаться на имя задания, запускаемого из входных данных задачи. В этом случае используйте следующий формат для отправки уведомления:
notifications:
email:
- endpoint: MyEmailEndpoint
stage: MY_STAGE
task: MY_TASK
subject: "Build Started"
event: STARTED
to:
- [email protected]
body: |
Jenkins job ${MY_STAGE.MY_TASK.input.job} started for commit id ${input.COMMITID}.
|
task output |
Результат выполнения задачи: ${MY_STAGE.MY_TASK.output.SOMETHING} |
Показывает результат выполнения задачи в следующей задаче |
Для создания ссылки на результат выполнения задачи 1 конвейера в задаче 2 используйте следующий формат:
taskOrder:
- task1
- task2
tasks:
task1:
type: REST
input:
action: get
url: https://www.example.org/api/status
task2:
type: REST
input:
action: post
url: https://status.internal.example.org/api/activity
payload: ${MY_STAGE.task1.output.responseBody}
|
var |
Переменная: ${var.myVariable} |
Ссылка на переменную в конечной точке |
Чтобы создать ссылку на секретную переменную в конечной точке для пароля, используйте следующий формат:
---
project: MyProject
kind: ENDPOINT
name: MyJenkinsServer
type: jenkins
properties:
url: https://jenkins.example.com
username: jenkinsUser
password: ${var.jenkinsPassword}
|
var |
Переменная: ${var.myVariable} |
Ссылка на переменную в конвейере |
Для создания ссылки на переменную в URL-адресе конвейера используйте следующий формат:
tasks:
task1:
type: REST
input:
action: get
url: ${var.MY_SERVER_URL}
|
task status |
Состояние выполнения задачи: ${MY_STAGE.MY_TASK.status} ${MY_STAGE.MY_TASK.statusMessage} |
|
|
stage status |
Состояние выполнения этапа: ${MY_STAGE.status} ${MY_STAGE.statusMessage} |
|
|
Выражения по умолчанию
В конвейере можно использовать переменные с выражениями. Эта сводка содержит доступные для использования выражения по умолчанию.
Выражение |
Описание |
${comments} |
Комментарии, вводимые при запросе выполнения конвейера. |
${duration} |
Продолжительность выполнения конвейера. |
${endTime} |
Время окончания выполнения конвейера в формате UTC (если закончено). |
${executedOn} |
Время запуска конвейера, аналогичное времени начала, в формате UTC. |
${executionId} |
Идентификатор выполнения конвейера. |
${executionUrl} |
URL-адрес для перехода к выполнению конвейера в пользовательском интерфейсе. |
${name} |
Имя конвейера. |
${requestBy} |
Имя пользователя, запросившего выполнение. |
${stageName} |
Имя текущего этапа, используется в области этапа. |
${startTime} |
Время начала выполнения конвейера в формате UTC. |
${status} |
Состояние выполнения. |
${statusMessage} |
Сообщение о состоянии выполнения конвейера. |
${taskName} |
Имя текущей задачи, используется при вводе задачи или создании уведомления. |
Использование SCOPE и KEY в задачах конвейера
Можно использовать выражения с любыми поддерживаемыми задачами конвейера. В этих примерах показано, как определить SCOPE
и KEY
и проверить синтаксис. В примерах кода в качестве имен этапа и задачи конвейера используются MY_STAGE
и MY_TASK
.
Дополнительные сведения о доступных задачах см. в разделе Типы задач, доступные в Code Stream.
Табл. 2.
Задачи перехода к следующему этапу
Задача |
Scope |
Key |
Использование SCOPE и KEY в задаче |
Пользовательская операция |
|
Input |
summary : сводка по запросу пользовательской операции description : описание запроса пользовательской операции approvers : список адресов электронной почты утверждающих, каждая запись в котором может быть переменной, отделяемой запятой; также можно использовать точку с запятой для отдельных адресов электронной почты. approverGroups : список адресов групп утверждающих для платформы и удостоверения sendemail : если задано значение «истина», отправляется дополнительное уведомление по электронной почте при создании запроса или ответе expirationInDays : количество дней, соответствующее сроку действия запроса |
${MY_STAGE.MY_TASK.input.summary} ${MY_STAGE.MY_TASK.input.description} ${MY_STAGE.MY_TASK.input.approvers} ${MY_STAGE.MY_TASK.input.approverGroups} ${MY_STAGE.MY_TASK.input.sendemail} ${MY_STAGE.MY_TASK.input.expirationInDays} |
|
Output |
index : шестизначная шестнадцатеричная строка, представляющая запрос respondedBy : имя учетной записи пользователя, утвердившего или отклонившего пользовательскую операцию respondedByEmail : адрес электронной почты ответившего пользователя comments : комментарии, предоставленные во время ответа |
${MY_STAGE.MY_TASK.output.index} ${MY_STAGE.MY_TASK.output.respondedBy} ${MY_STAGE.MY_TASK.output.respondedByEmail} ${MY_STAGE.MY_TASK.output.comments} |
Условие |
|
|
Input |
condition : оцениваемое условие. Если условие принимает значение «истина», задача отмечается как завершенная; другие ответы приводят к сбою выполнения задачи. |
${MY_STAGE.MY_TASK.input.condition} |
|
Output |
result : результат оценки |
${MY_STAGE.MY_TASK.output.response} |
Табл. 3.
Задачи конвейера
Задача |
Scope |
Key |
Использование SCOPE и KEY в задаче |
Конвейер |
|
Input |
name : имя конвейера для запуска inputProperties : входные свойства, которые нужно передать в цикл выполнения вложенного конвейера |
${MY_STAGE.MY_TASK.input.name} ${MY_STAGE.MY_TASK.input.inputProperties} # Ссылка на все свойства ${MY_STAGE.MY_TASK.input.inputProperties.input1} # Ссылка на значение input1 |
|
Output |
executionStatus : состояние выполнения конвейера executionIndex : индекс выполнения конвейера outputProperties : выходные свойства цикла выполнения конвейера |
${MY_STAGE.MY_TASK.output.executionStatus} ${MY_STAGE.MY_TASK.output.executionIndex} ${MY_STAGE.MY_TASK.output.outputProperties} # Ссылка на все свойства ${MY_STAGE.MY_TASK.output.outputProperties.output1} # Ссылка на значение output1 |
Табл. 4.
Автоматизация задач непрерывной интеграции
Задача |
Scope |
Key |
Использование SCOPE и KEY в задаче |
CI |
|
Input |
steps : набор строк, представляющих собой команды, которые требуется выполнить export : переменные среды, которые требуется сохранить после выполнения шагов artifacts : пути артефактов, которые требуется сохранить в общем пути process : набор элементов конфигурации для обработки JUnit, JaCoCo, Checkstyle, FindBugs |
${MY_STAGE.MY_TASK.input.steps} ${MY_STAGE.MY_TASK.input.export} ${MY_STAGE.MY_TASK.input.artifacts} ${MY_STAGE.MY_TASK.input.process} ${MY_STAGE.MY_TASK.input.process[0].path} # Ссылка на путь первой конфигурации |
|
Output |
exports : пара «ключ-значение», которая представляет собой экспортированные переменные среды из входного параметра export artifacts : путь успешно сохраненных артефактов processResponse : набор обработанных результатов для входного параметра process |
${MY_STAGE.MY_TASK.output.exports} # Ссылка на все операции экспорта ${MY_STAGE.MY_TASK.output.exports.myvar} # Ссылка на значение myvar ${MY_STAGE.MY_TASK.output.artifacts} ${MY_STAGE.MY_TASK.output.processResponse} ${MY_STAGE.MY_TASK.output.processResponse[0].result} # Результат выполнения первой конфигурации процесса |
Настраиваемое |
|
Input |
name : имя настраиваемой интеграции version : версия настраиваемой интеграции, опубликованная или устаревшая properties : свойства для отправки в настраиваемую интеграцию |
${MY_STAGE.MY_TASK.input.name} ${MY_STAGE.MY_TASK.input.version} ${MY_STAGE.MY_TASK.input.properties} # Ссылка на все свойства ${MY_STAGE.MY_TASK.input.properties.property1} # Ссылка на значение property1 |
|
Output |
properties : выходные свойства из ответа настраиваемой интеграции |
${MY_STAGE.MY_TASK.output.properties} # Ссылка на все свойства ${MY_STAGE.MY_TASK.output.properties.property1} # Ссылка на значение property1 |
Табл. 5.
Автоматизация задач непрерывного развертывания: облачный шаблон
Задача |
Scope |
Key |
Использование SCOPE и KEY в задаче |
Облачный шаблон |
|
|
Input |
action : одно из следующих значений: createDeployment, updateDeployment, deleteDeployment, rollbackDeployment. blueprintInputParams : используется для действий создание развертывания и обновление развертывания. allowDestroy : позволяет уничтожать компьютеры в процессе обновления развертывания. CREATE_DEPLOYMENT
blueprintName : имя облачного шаблона
blueprintVersion : версия облачного шаблона
ИЛИ
fileUrl : URL-адрес файла YAML удаленного облачного шаблона после выбора сервера GIT.
UPDATE_DEPLOYMENT Любые из следующих комбинаций:
blueprintName : имя облачного шаблона
blueprintVersion : версия облачного шаблона
ИЛИ
fileUrl : URL-адрес файла YAML удаленного облачного шаблона после выбора сервера GIT.
------
deploymentId : идентификатор развертывания.
ИЛИ
deploymentName : имя развертывания.
------ DELETE_DEPLOYMENT
deploymentId : идентификатор развертывания.
ИЛИ
deploymentName : имя развертывания.
ROLLBACK_DEPLOYMENT Любые из следующих комбинаций:
deploymentId : идентификатор развертывания.
ИЛИ
deploymentName : имя развертывания.
------
blueprintName : имя облачного шаблона
rollbackVersion : версия, до которой необходимо выполнить откат
|
|
|
Output |
|
Параметры, которые можно привязать к другим задачам или выходным данным конвейера:
- Для доступа к имени развертывания используйте ${Stage0.Task0.output.deploymentName}
- Для доступа к идентификатору развертывания используйте: ${Stage0.Task0.output.deploymentId}
- Сведения о развертывании — это сложный объект. Доступ к внутренним сведениям можно получить с помощью результатов JSON.
Для доступа к любому свойству используйте оператор точки в соответствии с иерархией JSON. Например, для доступа к адресу ресурса Cloud_Machine_1[0] привязка $ будет следующей: ${Stage0.Task0.output.deploymentDetails.resources['Cloud_Machine_1[0]'].address} Аналогично, для конфигурации ресурсов привязка $ будет выглядеть следующим образом: ${Stage0.Task0.output.deploymentDetails.resources['Cloud_Machine_1[0]'].flavor} В пользовательском интерфейсе Code Stream можно получить привязки $ для любого свойства.
- В области выходных свойств задачи щелкните ПРОСМОТР ВЫХОДНЫХ ДАННЫХ JSON.
- Чтобы найти привязку $, введите любое свойство.
- Нажмите значок поиска с соответствующей привязкой $.
|
Пример выходных данных JSON:
Образец объекта сведений о развертывании:
{
"id": "6a031f92-d0fa-42c8-bc9e-3b260ee2f65b",
"name": "deployment_6a031f92-d0fa-42c8-bc9e-3b260ee2f65b",
"description": "Pipeline Service triggered operation",
"orgId": "434f6917-4e34-4537-b6c0-3bf3638a71bc",
"blueprintId": "8d1dd801-3a32-4f3b-adde-27f8163dfe6f",
"blueprintVersion": "1",
"createdAt": "2020-08-27T13:50:24.546215Z",
"createdBy": "[email protected]",
"lastUpdatedAt": "2020-08-27T13:52:50.674957Z",
"lastUpdatedBy": "[email protected]",
"inputs": {},
"simulated": false,
"projectId": "267f8448-d26f-4b65-b310-9212adb3c455",
"resources": {
"Cloud_Machine_1[0]": {
"id": "/resources/compute/1606fbcd-40e5-4edc-ab85-7b559aa986ad",
"name": "Cloud_Machine_1[0]",
"powerState": "ON",
"address": "10.108.79.33",
"resourceLink": "/resources/compute/1606fbcd-40e5-4edc-ab85-7b559aa986ad",
"componentTypeId": "Cloud.vSphere.Machine",
"endpointType": "vsphere",
"resourceName": "Cloud_Machine_1-mcm110615-146929827053",
"resourceId": "1606fbcd-40e5-4edc-ab85-7b559aa986ad",
"resourceDescLink": "/resources/compute-descriptions/1952d1d3-15f0-4574-ae42-4fbf8a87d4cc",
"zone": "Automation / Vms",
"countIndex": "0",
"image": "ubuntu",
"count": "1",
"flavor": "small",
"region": "MYBU",
"_clusterAllocationSize": "1",
"osType": "LINUX",
"componentType": "Cloud.vSphere.Machine",
"account": "bha"
}
},
"status": "CREATE_SUCCESSFUL",
"deploymentURI": "https://api.yourenv.com/automation-ui/#/deployment-ui;ash=/deployment/6a031f92-d0fa-42c8-bc9e-3b260ee2f65b"
}
Табл. 6.
Автоматизация задач непрерывного развертывания: Kubernetes
Задача |
Scope |
Key |
Использование SCOPE и KEY в задаче |
Kubernetes |
|
Input |
action : одно из следующих значений — GET, CREATE, APPLY, DELETE, ROLLBACK.
timeout : общее время ожидания для любого действия.
filterByLabel : дополнительная метка для фильтрации по действию GET с помощью K8S labelSelector
GET, CREATE, DELETE, APPLY
yaml : встроенный код YAML для обработки и отправки в Kubernetes.
parameters : пара KEY, VALUE — замените $$KEY на VALUE в области ввода YAML.
filePath : относительный путь от конечной точки SCM Git (если указано), из которой нужно извлечь YAML.
scmConstants : пара KEY, VALUE — замените $$ {KEY} на VALUE в YAML, который извлечен по SCM.
continueOnConflict : если задано значение true и ресурс уже существует, выполнение задачи будет продолжено.
ROLLBACK
resourceType : тип ресурса для отката
resourceName : имя ресурса для отката
namespace : пространство имен, в котором необходимо выполнить откат
revision : версия, до которой необходимо выполнить откат
|
${MY_STAGE.MY_TASK.input.action} # Определяет выполняемое действие. ${MY_STAGE.MY_TASK.input.timeout} ${MY_STAGE.MY_TASK.input.filterByLabel} ${MY_STAGE.MY_TASK.input.yaml} ${MY_STAGE.MY_TASK.input.parameters} ${MY_STAGE.MY_TASK.input.filePath} ${MY_STAGE.MY_TASK.input.scmConstants} ${MY_STAGE.MY_TASK.input.continueOnConflict} ${MY_STAGE.MY_TASK.input.resourceType} ${MY_STAGE.MY_TASK.input.resourceName} ${MY_STAGE.MY_TASK.input.namespace} ${MY_STAGE.MY_TASK.input.revision} |
|
Output |
response : получение полного ответа response.<RESOURCE> : ресурс соответствует следующим значениям: configMaps, deployments, endpoints, ingresses, jobs, namespaces, pods, replicaSets, replicationControllers, secrets, services, statefulSets, nodes, loadBalancers. response.<RESOURCE>.<KEY> — ключ соответствует одному из следующих значений: apiVersion, kind, metadata, spec. |
${MY_STAGE.MY_TASK.output.response} ${MY_STAGE.MY_TASK.output.response.} |
Табл. 7.
Интеграция приложений для разработки, тестирования и развертывания
Задача |
Scope |
Key |
Использование SCOPE и KEY в задаче |
Bamboo |
|
Input |
plan : имя плана planKey : ключ плана variables : переменные, которые будут переданы в план parameters : параметры, которые будут переданы в план |
${MY_STAGE.MY_TASK.input.plan} ${MY_STAGE.MY_TASK.input.planKey} ${MY_STAGE.MY_TASK.input.variables} ${MY_STAGE.MY_TASK.input.parameters} # Ссылка на все параметры ${MY_STAGE.MY_TASK.input.parameters.param1} # ссылка на значение param1 |
|
Output |
resultUrl : URL-адрес результирующей сборки buildResultKey : ключ результирующей сборки buildNumber : номер сборки buildTestSummary : сводка выполненных тестов. successfulTestCount : тест пройден failedTestCount : тест не пройден skippedTestCount : тест пропущен artifacts : артефакты из сборки |
${MY_STAGE.MY_TASK.output.resultUrl} ${MY_STAGE.MY_TASK.output.buildResultKey} ${MY_STAGE.MY_TASK.output.buildNumber} ${MY_STAGE.MY_TASK.output.buildTestSummary} # Ссылка на все результаты ${MY_STAGE.MY_TASK.output.successfulTestCount} # Ссылка на определенный тестовый результат ${MY_STAGE.MY_TASK.output.buildNumber} |
Jenkins |
|
Input |
job : имя задания Jenkins parameters : параметры, которые будут переданы в задание |
${MY_STAGE.MY_TASK.input.job} ${MY_STAGE.MY_TASK.input.parameters} # Ссылка на все параметры ${MY_STAGE.MY_TASK.input.parameters.param1} # Ссылка на значение параметра |
|
Output |
job : имя задания Jenkins jobId : идентификатор результирующего задания, например 1234 jobStatus : состояние в Jenkins jobResults : результаты по объему протестированного/проверенного кода jobUrl : URL-адрес результирующего цикла выполнения задания |
${MY_STAGE.MY_TASK.output.job} ${MY_STAGE.MY_TASK.output.jobId} ${MY_STAGE.MY_TASK.output.jobStatus} ${MY_STAGE.MY_TASK.output.jobResults} # Ссылка на все результаты ${MY_STAGE.MY_TASK.output.jobResults.junitResponse} # Ссылка на результаты JUnit ${MY_STAGE.MY_TASK.output.jobResults.jacocoRespose} # Ссылка на результаты JaCoCo ${MY_STAGE.MY_TASK.output.jobUrl} |
TFS |
|
Input |
projectCollection : коллекция проектов из TFS teamProject : выбранный проект из доступной коллекции buildDefinitionId : идентификатор определения сборки, которую требуется запустить |
${MY_STAGE.MY_TASK.input.projectCollection } ${MY_STAGE.MY_TASK.input.teamProject} ${MY_STAGE.MY_TASK.input.buildDefinitionId} |
|
Output |
buildId : результирующий идентификатор сборки buildUrl : URL-адрес для перехода к сводке по сборке logUrl : URL-адрес для перехода к журналам dropLocation : расположение сброса артефактов (при наличии) |
${MY_STAGE.MY_TASK.output.buildId} ${MY_STAGE.MY_TASK.output.buildUrl} ${MY_STAGE.MY_TASK.output.logUrl} ${MY_STAGE.MY_TASK.output.dropLocation} |
vRO |
|
Input |
workflowId : идентификатор рабочего процесса, который требуется запустить parameters : параметры, которые будут переданы в рабочий процесс |
${MY_STAGE.MY_TASK.input.workflowId} ${MY_STAGE.MY_TASK.input.parameters} |
|
Output |
workflowExecutionId : идентификатор цикла выполнения рабочего процесса properties : выходные свойства из цикла выполнения рабочего процесса |
${MY_STAGE.MY_TASK.output.workflowExecutionId} ${MY_STAGE.MY_TASK.output.properties} |
Табл. 8.
Интеграция других приложений с помощью API-интерфейса
Задача |
Scope |
Key |
Использование SCOPE и KEY в задаче |
REST |
|
Input |
url : URL-адрес вызова action : используемый метод HTTP headers : передаваемые заголовки HTTP payload : полезные данные запроса fingerprint : отпечаток пальца для сопоставления, если для URL-адреса используется протокол https allowAllCerts : если задано значение «истина», принимается любой сертификат с URL-адресом типа https |
${MY_STAGE.MY_TASK.input.url} ${MY_STAGE.MY_TASK.input.action} ${MY_STAGE.MY_TASK.input.headers} ${MY_STAGE.MY_TASK.input.payload} ${MY_STAGE.MY_TASK.input.fingerprint} ${MY_STAGE.MY_TASK.input.allowAllCerts} |
|
Output |
responseCode : код ответа HTTP responseHeaders : заголовки ответа HTTP responseBody : строковый формат полученного ответа responseJson : активный ответ, если параметр content-type имеет значение application/json |
${MY_STAGE.MY_TASK.output.responseCode} ${MY_STAGE.MY_TASK.output.responseHeaders} ${MY_STAGE.MY_TASK.output.responseHeaders.header1} # Ссылка на заголовок ответа header1 ${MY_STAGE.MY_TASK.output.responseBody} ${MY_STAGE.MY_TASK.output.responseJson} # Ссылка на ответ в формате JSON ${MY_STAGE.MY_TASK.output.responseJson.a.b.c} # Ссылка на вложенный объект после пути JSON "a.b.с" в ответе |
Опрос |
|
Input |
url : URL-адрес вызова headers : передаваемые заголовки HTTP exitCriteria : критерии успешного или неудачного выполнения задачи. Пара ключ-значение: "успех" → выражение, "сбой" → выражение pollCount : количество выполняемых итераций. Максимальное количество опросов, которое может указать администратор Code Stream, составляет 10 000. pollIntervalSeconds : время ожидания между итерациями в секундах. Интервал между опросами должен быть не менее 60 секунд. ignoreFailure : если задано значение «истина», ошибки в промежуточных ответах игнорируются fingerprint : отпечаток пальца для сопоставления, если для URL-адреса используется протокол https allowAllCerts : если задано значение «истина», принимается любой сертификат с URL-адресом типа https |
${MY_STAGE.MY_TASK.input.url} ${MY_STAGE.MY_TASK.input.headers} ${MY_STAGE.MY_TASK.input.exitCriteria} ${MY_STAGE.MY_TASK.input.pollCount} ${MY_STAGE.MY_TASK.input.pollIntervalSeconds} ${MY_STAGE.MY_TASK.input.ignoreFailure} ${MY_STAGE.MY_TASK.input.fingerprint} ${MY_STAGE.MY_TASK.input.allowAllCerts} |
|
Output |
responseCode : код ответа HTTP responseBody : строковый формат полученного ответа responseJson : активный ответ, если параметр content-type имеет значение application/json |
${MY_STAGE.MY_TASK.output.responseCode} ${MY_STAGE.MY_TASK.output.responseBody} ${MY_STAGE.MY_TASK.output.responseJson} # Refer to response as JSON |
Табл. 9.
Запуск удаленных и пользовательских сценариев
Задача |
Scope |
Key |
Использование SCOPE и KEY в задаче |
PowerShell Чтобы запустить оболочку PowerShell, необходимо,
- чтобы было открыто подключение к удаленному узлу Windows.
- Если предполагается ввести команду PowerShell в формате base64, сначала следует вычислить общую длину команды. Подробности см. в разделе Типы задач, доступные в Code Stream.
|
|
Входные данные |
host : IP-адрес или имя узла компьютера username : имя пользователя, используемое для подключения password : пароль, используемый для подключения useTLS : попытка подключения по протоколу https trustCert : если задано значение «истина», разрешено доверять самозаверяющим сертификатам. script : запускаемый сценарий workingDirectory : путь к каталогу, на который требуется переключиться перед запуском сценария environmentVariables : пара «ключ-значение» переменной среды, которую требуется задать arguments : аргументы для передачи в сценарий |
${MY_STAGE.MY_TASK.input.host} ${MY_STAGE.MY_TASK.input.username} ${MY_STAGE.MY_TASK.input.password} ${MY_STAGE.MY_TASK.input.useTLS} ${MY_STAGE.MY_TASK.input.trustCert} ${MY_STAGE.MY_TASK.input.script} ${MY_STAGE.MY_TASK.input.workingDirectory} ${MY_STAGE.MY_TASK.input.environmentVariables} ${MY_STAGE.MY_TASK.input.arguments} |
|
Выходные данные |
response : содержимое файла $SCRIPT_RESPONSE_FILE responseFilePath : значение $SCRIPT_RESPONSE_FILE exitCode : код завершения процесса logFilePath : путь к файлу, содержащему stdout errorFilePath : путь к файлу, содержащему stderr |
${MY_STAGE.MY_TASK.output.response} ${MY_STAGE.MY_TASK.output.responseFilePath} ${MY_STAGE.MY_TASK.output.exitCode} ${MY_STAGE.MY_TASK.output.logFilePath} ${MY_STAGE.MY_TASK.output.errorFilePath} |
SSH |
|
Input |
host : IP-адрес или имя узла компьютера username : имя пользователя, используемое для подключения password : пароль, используемый для подключения (при необходимости может использоваться закрытый ключ privateKey) privateKey : закрытый ключ privateKey, используемый для подключения passphrase : дополнительная парольная фраза для разблокировки закрытого ключа privateKey script : запускаемый сценарий workingDirectory : путь к каталогу, на который требуется переключиться перед запуском сценария environmentVariables : пара «ключ-значение» переменной среды, которую требуется задать |
${MY_STAGE.MY_TASK.input.host} ${MY_STAGE.MY_TASK.input.username} ${MY_STAGE.MY_TASK.input.password} ${MY_STAGE.MY_TASK.input.privateKey} ${MY_STAGE.MY_TASK.input.passphrase} ${MY_STAGE.MY_TASK.input.script} ${MY_STAGE.MY_TASK.input.workingDirectory} ${MY_STAGE.MY_TASK.input.environmentVariables} |
|
Output |
response : содержимое файла $SCRIPT_RESPONSE_FILE responseFilePath : значение $SCRIPT_RESPONSE_FILE exitCode : код завершения процесса logFilePath : путь к файлу, содержащему stdout errorFilePath : путь к файлу, содержащему stderr |
${MY_STAGE.MY_TASK.output.response} ${MY_STAGE.MY_TASK.output.responseFilePath} ${MY_STAGE.MY_TASK.output.exitCode} ${MY_STAGE.MY_TASK.output.logFilePath} ${MY_STAGE.MY_TASK.output.errorFilePath} |
Использование привязки переменных в разных задачах
В этом примере показано, как использовать привязки переменных в задачах конвейера.
Табл. 10.
Примеры форматов синтаксиса
Пример |
Синтаксис |
Использование результата выполнения задачи для уведомлений конвейера и выходных свойств конвейера |
${<Stage Key>.<Task Key>.output.<Task output key>} |
Использование результата выполнения предыдущей задачи в качестве входных данных для текущей |
${<Previous/Current Stage key>.<Previous task key not in current Task group>.output.<task output key>} |
Дополнительные сведения
Дополнительные сведения о переменных привязки в задачах см. здесь: