Поделиться через


Bash@3 — задача Bash версии 3

Используйте эту задачу для запуска скрипта Bash в macOS, Linux или Windows.

Заметка

На узле Windows выполняется bash из дистрибутива WSL по умолчанию. WSL должен быть установлен, и пользователь, который агент запускает, как должен иметь настройку распространения. WSL устанавливается на образы агентов Windows, размещенных в Майкрософт. Дополнительные сведения см. в разделе размещенных корпорацией Майкрософт агентов — программное обеспечение.

Синтаксис

# Bash v3
# Run a Bash script on macOS, Linux, or Windows.
- task: Bash@3
  inputs:
    #targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
    filePath: # string. Required when targetType = filePath. Script Path. 
    #arguments: # string. Optional. Use when targetType = filePath. Arguments. 
    #script: # string. Required when targetType = inline. Script. 
  # Advanced
    #workingDirectory: # string. Working Directory. 
    #failOnStderr: false # boolean. Fail on Standard Error. Default: false.
    #bashEnvValue: # string. Set value for BASH_ENV environment variable.
# Bash v3
# Run a Bash script on macOS, Linux, or Windows.
- task: Bash@3
  inputs:
    #targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
    filePath: # string. Required when targetType = filePath. Script Path. 
    #arguments: # string. Optional. Use when targetType = filePath. Arguments. 
    #script: # string. Required when targetType = inline. Script. 
  # Advanced
    #workingDirectory: # string. Working Directory. 
    #failOnStderr: false # boolean. Fail on Standard Error. Default: false.
    #noProfile: true # boolean. Don't load the profile startup/initialization files. Default: true.
    #noRc: true # boolean. Don't read the `~/.bashrc' initialization file. Default: true.
# Bash v3
# Run a Bash script on macOS, Linux, or Windows.
- task: Bash@3
  inputs:
    #targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
    filePath: # string. Required when targetType = filePath. Script Path. 
    #arguments: # string. Optional. Use when targetType = filePath. Arguments. 
    #script: # string. Required when targetType = inline. Script. 
  # Advanced
    #workingDirectory: # string. Working Directory. 
    #failOnStderr: false # boolean. Fail on Standard Error. Default: false.

Входы

типа targetType -
string. Допустимые значения: filePath (путь к файлу), inline. Значение по умолчанию: filePath.

Целевой тип скрипта: путь к файлу или встроенный.


Путьк скрипту filePath -
string. Требуется, если targetType = filePath.

Путь к выполнению скрипта. Это должен быть полный путь или относительно $(System.DefaultWorkingDirectory).


arguments - аргументы
string. Необязательный. Используется при targetType = filePath.

Аргументы, переданные скрипту оболочки. Порядковые параметры или именованные параметры.


скрипта script -
string. Требуется, если targetType = inline. Значение по умолчанию: # Write your commands here\n\necho 'Hello world'.

Содержимое скрипта.


скрипта script -
string. Требуется, если targetType = inline. Значение по умолчанию: # Write your commands here\n\n# Use the environment variables input below to pass secret variables to this script.

Содержимое скрипта.


workingDirectory - рабочий каталог
string.

Указывает рабочий каталог, в котором требуется выполнить команду. Если оставить его пустым, рабочий каталог $(Build.SourcesDirectory).


failOnStderr - сбой стандартной ошибки
boolean. Значение по умолчанию: false.

Если это верно, эта задача завершится ошибкой, если в поток StandardError записываются ошибки.


bashEnvValue - Задать значение для переменной среды BASH_ENV
string.

Если входные данные заданы, его значение развертывается и используется в качестве пути к файлу запуска перед выполнением скрипта. Если переменная среды BASH_ENV уже определена, задача переопределит эту переменную только для текущей задачи. Дополнительные сведения о файлах запуска Bash.


noProfile - не загружайте файлы запуска и инициализации профиля
boolean. Значение по умолчанию: true.

Не загружайте файл запуска на уровне системы /etc/profile или любой из файлов инициализации личных данных.


noRc - **Не считывайте логическое значение ~/.bashrc' initialization file**<br> . Default value: true.


Параметры управления задачами

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

Выходные переменные

Никакой.

Замечания

Задача bash имеет ярлык в YAML: steps.bash.

steps:
- bash: string # Required as first property. An inline script. 
  ## Other task inputs

Задача Bash найдет первую реализацию Bash в вашей системе. Запуск which bash в Linux или macOS или where bash в Windows даст вам представление о том, какой из них будет выбран.

Сведения о файлах запуска Bash

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

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

variables:
  BASH_ENV: "~/.profile"

steps:
- task: Bash@3
  inputs:
    targetType: 'inline'
    script: env

Еще одним вариантом является установка BASH_ENV для одного конкретного экземпляра задачи Bash. Это можно сделать двумя способами.

Первый способ — использовать входные данные bashEnvValue задачи, см. пример для справки:

steps:
- task: Bash@3
  inputs:
    targetType: 'inline'
    script: env
    bashEnvValue: '~/.profile'

Другой способ — задать переменную BASH_ENV в качестве переменной среды для задачи конвейера с помощью ключевого слова env, например:

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: env
  env:
    BASH_ENV: '~/.profile'

Заметка

Обратите внимание, что если входные данные bashEnvValue определены в задаче Bash, задача конвейера переопределит значение переменной BASH_ENV значением из входных данных bashEnvValue в случае, когда переменная среды BASH_ENV уже определена в среде.

Скрипты Bash, зарегистрированные в репозитории, должны быть заданы исполняемым файлом (chmod +x). В противном случае задача отобразит предупреждение и source вместо него.

Примеры

Можно сопоставить переменные с помощью параметра env, который является общим для всех задач, и представляет собой список дополнительных элементов для сопоставления с средой процесса. Например, секретные переменные не сопоставляются автоматически. Если у вас есть секретная переменная с именем Foo, ее можно сопоставить следующим образом:

steps:
- task: Bash@3
  inputs:
    targetType: 'inline'
    script: echo $MYSECRET
  env:
    MYSECRET: $(Foo)

В macOS или Linux приведенный выше пример эквивалентен следующему:

steps:
- script: echo $MYSECRET
  env:
    MYSECRET: $(Foo)

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
требования Никакой
возможностей Эта задача не удовлетворяет требованиям к последующим задачам в задании.
ограничения команд Любой
переменные settable Любой
Версия агента 2.115.0 или более поздней версии
Категория задач Полезность