С помощью переменных и выражений в задачах конвейера можно задавать входные и выходные параметры. Вводимые параметры связывают задачу конвейера с одной или несколькими переменными, выражениями или условиями и определяют особенности работы конвейера при его выполнении.

Конвейеры могут запускать простые или сложные решения по доставке программного обеспечения

При связывании задач конвейера друг с другом можно добавлять выражения по умолчанию и сложные выражения. В результате конвейер может запускать простые или сложные решения по доставке программного обеспечения.

Чтобы создать параметры в конвейере, перейдите на вкладку Входные данные или Выходные данные и добавьте переменную, введя знак доллара $ и выражение. Например, следующий параметр используется в качестве входных данных задачи, вызывающей 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 можно получить привязки $ для любого свойства.

  1. В области выходных свойств задачи щелкните ПРОСМОТР ВЫХОДНЫХ ДАННЫХ JSON.
  2. Чтобы найти привязку $, введите любое свойство.
  3. Нажмите значок поиска с соответствующей привязкой $.

Пример выходных данных JSON:

Выходные данные JSON включают в себя определитель пути, с помощью которого можно искать термины, например address, а Code Stream отображает полное определение для привязки.

Образец объекта сведений о развертывании:

{
	"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>}

Дополнительные сведения

Дополнительные сведения о переменных привязки в задачах см. здесь: