Chmod +x для запуска сценария в YML Azure Devops

Я начал практиковаться в создании yml в Azure Devops. У меня есть следующий простой пример.

azure-pipelines.yml

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

parameters:
- name: name
  type: string

trigger:
- master

pool:
 vmImage: ubuntu-latest

steps:
- checkout: self
  persistCredentials: true
  fetchTags: true
  clean: true

- task: Bash@3
  displayName: 'Run hello script'
  inputs:
    targetType: 'inline'
    script: |
      chmod +x "./scripts/hello.sh"
      ./scripts/hello.sh  ${{ parameters.name}}
  continueOnError: false

привет.ш

#!/bin/sh

# Parameters
NAME=$1

echo "Hello $NAME, this is a script"

Что я хотел бы знать?

Добавление chmod +x "./scripts/hello.sh" — хороший подход? Потому что, когда я это не добавляю, я всегда получаю "script has no permission" ошибка. Как только я запускаю конвейер с этой строкой, он работает правильно.

Почему я это спрашиваю?

Я много исследовал примеры YML в Интернете и никогда не видел, чтобы они добавляли эту строку chmod +x "script_name", поэтому мне это интересно..

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
193
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

При вызове файла сценария Bash (.sh) из исходного репозитория в Azure Pipeline вам не нужно использовать команду «chmod +x», чтобы назначить доступ к файлу сценария. вы можете напрямую вызвать файл сценария в задаче Bash с типом «filePath».

parameters:
- name: name
  type: string
  default: 'xxxx'

trigger:
- master

pool:
 vmImage: ubuntu-latest

steps:
- checkout: self
  . . .

- task: Bash@3
  displayName: 'Run hello script'
  inputs:
    targetType: filePath
    filePath: 'scripts/hello.sh'
    arguments: '"${{ parameters.name }}"'

Спасибо, Брайт! Что, если я захочу записать выходные данные файла сценария и сохранить их в глобальной переменной, расположенной в моем файле yml? Раньше я делал это так: скрипт: | chmod +x "./scripts/my-script.sh" output=$(./scripts/my-script.sh $(FIRST_PARAMETER)) echo "##vso[task.setvariablevariable=GLOBAL_VARIABLE]$output" Как можно Я делаю это сейчас, используя filePath?

depreston 06.05.2024 18:45

Я обнаружил, что добавление следующей строки в файл сценария работает... вы думаете, это хороший подход? echo "##vso[task.setvariablevariable=GLOBAL_VARIABLE]$output

depreston 06.05.2024 19:09

@depreston, Да, использование команды журнала «SetVariable» для установки вывода в скрипте является рекомендуемым способом в Azure Pipelines.

Bright Ran-MSFT 07.05.2024 03:23

Другие вопросы по теме

Есть ли способ скопировать файлы из виртуальной машины в System.ArtifactsDirectory или репозиторий Github с помощью конвейера Azure DevOps?
Azure Devops Pipeline: строковая переменная JSON теряет все свои двойные кавычки
Расширение Visual Studio для Team Explorer
Azure Devops Pipeline — как установить переменную env на основе переменной, заданной в предыдущей задаче
Запросить все вложенные рабочие элементы на наличие элементов с определенным типом ссылки
Публикация артефакта в Azure Devops Pipeline: ошибка получения разрешения на доступ к пути
Функции Azure добавляют пользовательскую переменную среды во время публикации
Не удалось загрузить версию js узла в автономном агенте Azure Devops Ubuntu
Конвейер Azure DevOps выдает сообщение «##[ошибка]Файлы проекта, соответствующие указанному шаблону, не найдены». при публикации моего приложения?
Сбой конвейера с ОШИБКОЙ: недостаточно значений для распаковки (ожидалось 2, получено 1) при попытке перенести версию платформы APIM с stv1 на stv2

Похожие вопросы

Есть ли способ скопировать файлы из виртуальной машины в System.ArtifactsDirectory или репозиторий Github с помощью конвейера Azure DevOps?
Как изменить громкость преобразования текста в речь для объектов SpeechSynthesizer в Azure CognitiveServices SDK без изменения громкости системы в С#
Powershell с Graph API и PSCustomObject
Не удалось добавить настройки приложения с двоеточием с помощью сценария Bicep в службу приложений Azure
Извлечь значение из Key Vault для использования в локальном файле web.config
Azure AI Studio — вызовы API развертывания индекса ML GPT4 не работают из-за ошибки access_token
Роли, назначенные управляемому удостоверению в Azure, отсутствуют в токене
Могу ли я иметь секреты, срок действия которых не истекает в системе единого входа Microsoft через Azure Microsoft Entra ID?
Az Powershell – невозможно прочитать содержимое файла CSV
Бета-версия C# Graph позволяет получить все типы назначений с их правилами обнаружения для всех Win32LobApps за один вызов