Сопровождающая няня Москва, Планерная на Pomogatel.ru
Возраст: 25-55 лет
Опыт: любой
Оплата: 200 руб/час
Оплата: 5000 руб/мес
Дата создания: 23.08.2020 года
Дата начала работы: 01.09.2020
Связаться с нанимателем
Описание
Требуется сопровождающая няня для девочки 10-ти лет. Необходимо 2 раза в неделю отводить ребёнка в бассейн и обратно. Понедельник/среда, 14.00-16.00. Забирать из школы №827 1й корпус, отводить в бассейн Лазурный, и обратно домой на ул.Героев Панфиловцев. Ищу строго по району Северное Тушино.
Навыки няни:
Возраст ребенка:
Школьники (10+ лет)
Опыт работы:
Прогулка, сопровождение в сад/ на занятия
Дополнительные обязанности:
- Разовые поручения
Максимум детей в семье для одновременной работы:
Кратко
Место работы:- Без проживания
Белоруссия
Молдавия
Россия
Украина
Национальность:Белоруссия
Россия
Украина
График работыВакансии
РЕАСАНМЕД — это многопрофильный медицинский центр, оказывающий амбулаторную, профилактическую и реабилитационную помощь взрослым и детям. На рынке медицинских услуг с 2016 года.
> 4200 м2 | 5 этажей | > 150 сотрудников |
В распоряжении клиники имеются:
- кабинеты для приемов врачей,
- процедурные кабинеты,
- водолечебница,
- залы групповых тренировок и ЛФК,
- тренажерный зал,
- 3 бассейна с разной температурой воды.
Преимущества работы у нас
1. Гибкий график работы.
Независимо от того — основное это место работы или совместительство, мы вместе с вами подберем удобный график, который устроит всех.
2. Стабильные выплаты.
Выплачиваем заработную плату вовремя и в полной объеме.
3. Близко к метро.
От метро Электросила до нашего центра — всего 5-7 минут пешком. А для автовладельцев — удобная парковка.
4. Возможности для развития.
Мы поддерживаем стремление сотрудников к саморазвитию. К этому также располагает имеющееся оборудование в центре и специфика имеющихся пациентов.
5. Бесплатный фитнес и бассейн.
Работая в РЕАСАНМЕД, вы можете свободно посещать тренажерный зал и бассейн.
В центре созданы комфортные условия для сотрудников: раздевалка с личным шкафчиком, ординаторская с микроволновой печью, чайником и холодильником, и о вашей форме позаботится санитарка.
Кого мы ищем
В нашу сплоченную команду мы ищем новых сотрудников, желающих помогать пациентам и делать этот мир лучше:
1. Врачи.
2. Средний медицинский персонал (инструкторы-методисты ЛФК, процедурные медсестры, медсестры физиотерапии, медсестры в водолечебницу).
3. Младший медицинский персонал (санитарки).
Присылайте свое резюме на почту [email protected], даже если вы не нашли нужную вам вакансию ниже — мы всегда рады принять в команду хорошего специалиста.
Лазурный
Интересные факты:
Скалы Адалары – памятник природы и визитная карточка Крыма — находятся в море напротив лагеря «Лазурный».
Одно из таинственных мест «Артека» — в «Лазурном». Это склеп бывших хозяев курорта «Суук-Су» Березиных, построенный по проекту Н. Краснова.
Пушкинская площадка «Лазурного» — одна из самых известных видовых площадок Крыма, здесь открывается панорама местности от горы Аю-Даг до мыса Мартьян (Ялта): весь «Артек», Гурзуф, Ай-Даниль, Никита и бесконечные морские просторы.
27 июня 1982 года на Пушкинской площади был установлен бюст А. С. Пушкина работы скульптора А. Емельянцева в память о пребывании великого поэта в этих местах.
На известной картине Айвазовского «Пушкин в Крыму у гурзуфских скал» (1899 год) поэт изображен на скале (ныне Пушкинская) в «Лазурном». Картина хранится в Одесском художественном музее.
Пушкинский грот «Лазурного» изображен на рисунке итальянского художника Карло Боссоли, вошедшем в уникальный альбом литографий о Крыме, изданный в Лондоне в 1856 году.
В августе 1988 года студентами Уфимского нефтяного института закончено строительство «Пушкинской тропы» в парке лагеря. Строительство продолжалось три летних сезона. В это же время была построена «Греческая эстрада».
Июль 1954 г. — строй действующих введена новая столовая лагеря (три зала, варочный зал, разделочные помещения и др.) На первом этаже отреставрированная «Палехская роспись». Выполнена в 1984 году по мотивам сказок А.С. Пушкина, к 185-летию со дня рождения поэта. Авторы проекта и живописцы студенты-выпускники Палехского училища. Палехская роспись – это вид русской народной миниатюрной живописи, выполненная темперными красками.
До 1954 года в лагере «Лазурный» отдыхали только девочки.
В сентябре 1956 года в лагеря открыта Буденновская аллея. По инициативе ребят десятого отряда в дружине были созданы ударные строительные бригады и «пионерское стройуправление». Ребята кирками и лопатами расширяли и планировали тропинку, по которой 10 лет назад в апреле 1946 года ходил и беседовал с ребятами С. М. Буденный.
6 ноября 1957 года в лагере установлена мемориальная доска в память героев артековцев.
Поляна сказок – известный экскурсионный объект Ялты — до 60-х годов находился в «Лазурном».
60-70 годы стали для «Лазурного» местом проведения всесоюзных сборов и слетов: юных друзей милиции и пограничников, сбор победителей всесоюзного турнира смекалистых, слет юных филателистов страны и другие.
Владимир Михайлович Комаров, известный летчик-космонавт, не раз бывал в гостях у артековцев. После трагической гибели летчика-космонавта в сентябре 1967 года лагерю было присвоено имя героя. 4 августа 1985 года на площадке у столовой установлен бюст летчика-космонавта Владимира Михайловича Комарова, выполненный скульптором А. Емельянцевым.
В 80-е годы «Лазурный» стал регулярно принимать зарубежные делегации, проводились международные смены.
В 1985 году в «Лазурном» студенты Уфимского института начали строительство сказочного городка «Пушкинская тропа» и завершили его в 1988 году.
20 марта 1987 года «Лазурный» отметил свое 50-тилетие.
К началу 90-х годов лагерь заметно преобразился. Благодаря инициативности и энергии начальника лагеря С. Ю. Лебедева был осуществлен капитальный ремонт почти всего лагеря: реконструирована летняя эстрада, переделана «Буденовская аллея», костровая площадь лагеря была перенесена на «Пушкинскую». В лагере открыли детское кафе. У детей появилась возможность освоить компьютеры. Полностью телефонизирован лагерь, проведено кабельное телевидение. На 2-й даче открыт эстетический центр.
Летом 2010 года в «Лазурном» снимался телесериал «Сваты-4».
В октябре 2016 года на территории лагеря построили новую дачу, дети решили её назвать «Белой». Весь Артек поддержал их инициативу.
20 марта 2017 года «Лазурный» отметил свое 80-тилетие.
заданий и задач в пакетной службе Azure — пакетная служба Azure
- 000Z» data-article-date-source=»ms.date»> 11.06.2021
- Читать 12 минут
В этой статье
В пакетной службе Azure задача представляет собой единицу вычислений. задание представляет собой набор этих задач. Подробнее о заданиях и задачах, а также о том, как они используются в рабочем процессе пакетной службы Azure, рассказывается ниже.
Вакансий
Задание — это набор задач. Он управляет выполнением вычислений его задачами на вычислительных узлах в пуле.
Задание указывает пул, в котором должна выполняться работа. Вы можете создать новый пул для каждого задания или использовать один пул для множества заданий. Вы можете создать пул для каждого задания, связанного с расписанием заданий, или один пул для всех заданий, связанных с расписанием заданий.
Приоритет задания
Создаваемым вами заданиям можно назначить необязательный приоритет задания.Пакетная служба использует значение приоритета задания для определения порядка планирования (для всех задач в задании) в каждом пуле.
Чтобы обновить приоритет задания, вызовите Обновление свойств задания (Batch REST) или измените CloudJob.Priority (Batch .NET). Значения приоритета варьируются от -1000 (самый низкий приоритет) до 1000 (самый высокий приоритет).
В рамках одного пула задания с более высоким приоритетом имеют приоритет планирования по сравнению с заданиями с более низким приоритетом. Задачи в заданиях с более низким приоритетом, которые уже выполняются, не будут вытеснены задачами в задании с более высоким приоритетом.Задания с одинаковым уровнем приоритета имеют равные шансы быть запланированными, и порядок выполнения задач не определен.
Задание с высоким приоритетом, выполняемое в одном пуле, не влияет на планирование заданий, выполняемых в отдельном пуле или в другой учетной записи пакетной службы. Приоритет задания не применяется к автоматическим пулам, которые создаются при отправке задания.
Рабочие ограничения
Вы можете использовать ограничения заданий, чтобы указать определенные ограничения для ваших заданий:
- Вы можете установить максимальное время настенных часов , чтобы, если задание выполняется дольше указанного максимального времени настенных часов, задание и все его задачи прекращаются.
- В качестве ограничения можно указать максимальное количество повторных попыток задачи , в том числе, будет ли задача всегда повторяться или никогда не повторяться. Повторная попытка задачи означает, что в случае сбоя задачи она будет повторно запущена.
Задачи менеджера заданий и автоматическое завершение
Ваше клиентское приложение может добавлять задачи в задание, или вы можете указать задачу диспетчера заданий. Задача диспетчера заданий содержит информацию, необходимую для создания необходимых задач для задания, при этом задача диспетчера заданий выполняется на одном из вычислительных узлов в пуле.Задачу диспетчера заданий выполняет пакетная обработка; оно ставится в очередь сразу после создания задания и перезапускается в случае сбоя. Задача диспетчера заданий требуется для заданий, созданных по расписанию заданий, потому что это единственный способ определить задачи до создания экземпляра задания.
По умолчанию задания остаются в активном состоянии, когда все задачи в задании завершены. Вы можете изменить это поведение, чтобы задание автоматически завершалось по завершении всех задач в задании. Задайте для задания свойство onAllTasksComplete (OnAllTasksComplete в пакетном режиме.NET) на terminatejob
* `, чтобы автоматически завершить задание, когда все его задачи находятся в состоянии завершения.
Пакетная служба считает задание с нет задачами выполненными. Поэтому этот параметр чаще всего используется с задачей диспетчера заданий. Если вы хотите использовать автоматическое завершение задания без диспетчера заданий, вам следует сначала установить для свойства onAllTasksComplete нового задания значение noaction
, а затем установить его в terminatejob
* `только после того, как вы закончите добавлять задачи в задание.
Плановые работы
Расписания заданий позволяют создавать повторяющиеся задания в пакетной службе. Расписание заданий указывает, когда запускать задания, и включает спецификации для заданий, которые должны быть запущены. Вы можете указать продолжительность расписания (как долго и когда оно действует) и как часто задания создаются в течение запланированного периода.
Задачи
Задача — это единица вычислений, связанная с заданием. Он работает на узле. Задачи назначаются узлу для выполнения или ставятся в очередь до тех пор, пока узел не станет свободным.Проще говоря, задача запускает одну или несколько программ или сценариев на вычислительном узле для выполнения необходимой вам работы.
При создании задачи можно указать:
Командная строка для задачи. Это командная строка, которая запускает ваше приложение или сценарий на вычислительном узле.
Важно отметить, что командная строка не работает под оболочкой. Следовательно, он не может изначально использовать преимущества функций оболочки, таких как расширение переменной среды (это включает
PATH
).Чтобы воспользоваться этими функциями, необходимо вызвать оболочку в командной строке, например, запустивcmd. exe
на узлах Windows или/ bin / sh
в Linux:cmd / c MyTaskApplication.exe% MY_ENV_VAR%
/ bin / sh -c MyTaskApplication $ MY_ENV_VAR
Если вашим задачам нужно запустить приложение или сценарий, которых нет в
PATH
узла или ссылочных переменных среды, вызовите оболочку явно в командной строке задачи.Файлы ресурсов , содержащие данные для обработки. Эти файлы автоматически копируются на узел из хранилища BLOB-объектов в учетной записи хранилища Azure перед выполнением командной строки задачи. Дополнительные сведения см. В разделах «Запуск задачи» и «Файлы и каталоги».
Переменные среды , , которые требуются вашему приложению. Дополнительные сведения см. В разделе Параметры среды для задач.
Ограничения , при которых должна выполняться задача.Например, ограничения включают максимальное время, в течение которого задача может быть запущена, максимальное количество повторных попыток невыполненной задачи и максимальное время, в течение которого файлы в рабочем каталоге задачи сохраняются.
Пакеты приложений для развертывания на вычислительном узле, на котором запланировано выполнение задачи. Пакеты приложений обеспечивают упрощенное развертывание и управление версиями приложений, запускаемых вашими задачами. Пакеты приложений уровня задач особенно полезны в средах с общим пулом, где разные задания выполняются в одном пуле, и пул не удаляется после завершения задания.Если у вашего задания меньше задач, чем узлов в пуле, пакеты приложений задач могут минимизировать передачу данных, поскольку ваше приложение развертывается только на узлах, на которых выполняются задачи.
Ссылка на образ контейнера в Docker Hub или частном реестре и дополнительные параметры для создания контейнера Docker, в котором задача выполняется на узле. Вы указываете эту информацию только в том случае, если пул настроен с конфигурацией контейнера.
Примечание
Максимальное время жизни задачи с момента добавления в задание до момента его завершения составляет 180 дней. Выполненные задачи сохраняются в течение 7 дней; данные для задач, не завершенных в течение максимального срока жизни, недоступны.
В дополнение к задачам, которые вы определяете для выполнения вычислений на узле, пакетная служба также предоставляет несколько специальных задач:
Начать задачу
Связывая задачу запуска с пулом, вы можете подготовить операционную среду его узлов. Например, вы можете выполнять такие действия, как установка приложений, запускаемых вашими задачами, или запуск фоновых процессов.Задача запуска запускается каждый раз при запуске узла, пока он остается в пуле. Это включает в себя, когда узел впервые добавляется в пул и когда он перезапускается или повторно создает образ.
Основным преимуществом задачи запуска является то, что она может содержать всю информацию, необходимую для настройки вычислительного узла и установки приложений, необходимых для выполнения задачи. Следовательно, увеличить количество узлов в пуле так же просто, как указать новое количество целевых узлов. Задача запуска предоставляет информацию, необходимую для пакетной службы, чтобы настроить новые узлы и подготовить их к принятию задач.
Как и в случае любой задачи пакетной службы Azure, вы можете указать список файлов ресурсов в службе хранилища Azure в дополнение к командной строке, которую нужно выполнить. Пакетная служба сначала копирует файлы ресурсов на узел из службы хранилища Azure, а затем запускает командную строку. Для задачи запуска пула список файлов обычно содержит приложение задачи и его зависимости.
Однако начальная задача может также включать справочные данные, которые будут использоваться всеми задачами, выполняемыми на вычислительном узле. Например, командная строка задачи запуска может выполнить операцию robocopy для копирования файлов приложения (которые были указаны как файлы ресурсов и загружены на узел) из рабочего каталога задачи запуска в общую папку , а затем запустить MSI или установка
.exe
.
Обычно требуется, чтобы пакетная служба ожидала завершения задачи запуска, прежде чем считать узел готовым к назначению задач. Однако при необходимости вы можете настроить это по-другому.
Если при запуске задачи на вычислительном узле происходит сбой, то состояние узла обновляется, чтобы отразить сбой, и узлу не назначаются никакие задачи. Задача запуска может завершиться ошибкой, если возникает проблема с копированием файлов ресурсов из хранилища или если процесс, выполняемый ее командной строкой, возвращает ненулевой код выхода.
Если вы добавляете или обновляете стартовую задачу для существующего пула, вы должны перезагрузить его вычислительные узлы, чтобы стартовая задача была применена к узлам.
Примечание
Пакетная обработка ограничивает общий размер стартовой задачи, включая файлы ресурсов и переменные среды. Если вам нужно уменьшить размер стартовой задачи, вы можете использовать один из двух подходов:
Вы можете использовать пакеты приложений для распределения приложений или данных по каждому узлу в пуле пакетов.Дополнительные сведения о пакетах приложений см. В разделе Развертывание приложений для вычисления узлов с помощью пакетов приложений пакетной службы.
Вы можете вручную создать заархивированный архив, содержащий файлы ваших приложений. Загрузите заархивированный архив в службу хранилища Azure в виде большого двоичного объекта. Укажите заархивированный архив как файл ресурсов для своей стартовой задачи. Прежде чем запускать командную строку для своей стартовой задачи, распакуйте архив из командной строки.
Чтобы распаковать архив, вы можете использовать любой инструмент архивирования по вашему выбору.Вам нужно будет включить инструмент, который вы используете для распаковки архива, в качестве файла ресурсов для начальной задачи.
Задача менеджера заданий
Обычно вы используете задачу диспетчера заданий для управления и / или отслеживания выполнения заданий. Например, задачи диспетчера заданий часто используются для создания и отправки задач для задания, определения дополнительных задач для выполнения и определения того, когда работа будет завершена.
Однако задача диспетчера заданий не ограничивается этими действиями. Это полноценная задача, которая может выполнять любые действия, необходимые для работы.Например, задача диспетчера заданий может загрузить файл, указанный в качестве параметра, проанализировать содержимое этого файла и отправить дополнительные задачи на основе этого содержимого.
Задача диспетчера заданий запускается раньше всех других задач. Он предоставляет следующие возможности:
- Он автоматически отправляется как задача пакетной службой при создании задания.
- Он запланирован на выполнение перед другими задачами в задании.
- Связанный с ним узел удаляется из пула последним при его уменьшении.
- Его завершение может быть связано с завершением всех задач в работе.
- Задаче диспетчера заданий дается наивысший приоритет, когда ее необходимо перезапустить. Если бездействующий узел недоступен, пакетная служба может завершить одну из других запущенных задач в пуле, чтобы освободить место для выполнения задачи диспетчера заданий.
- Задача диспетчера заданий в одном задании не имеет приоритета над задачами других заданий. Во всех должностях соблюдаются только приоритеты на уровне должностей.
Задачи подготовки и выпуска задания
Batch предоставляет задачи подготовки заданий для настройки выполнения перед заданием и задания выпуска задания для обслуживания или очистки после задания.
Задача подготовки задания выполняется на всех вычислительных узлах, на которых запланировано выполнение задач, до того, как будут выполнены какие-либо другие задачи задания. Например, вы можете использовать задачу подготовки задания для копирования данных, которые являются общими для всех задач, но являются уникальными для задания.
Когда задание завершено, задача освобождения задания запускается на каждом узле в пуле, который выполнил хотя бы одну задачу. Например, задача выпуска задания может удалять данные, которые были скопированы задачей подготовки задания, или может сжимать и выгружать данные журнала диагностики.
Задачи подготовки задания и выпуска позволяют указать командную строку, запускаемую при вызове задачи. Они предлагают такие функции, как загрузка файла, расширенное выполнение, настраиваемые переменные среды, максимальная продолжительность выполнения, количество повторных попыток и время хранения файла.
Дополнительные сведения о задачах подготовки и выпуска заданий см. В разделе Выполнение задач подготовки и завершения заданий на вычислительных узлах пакетной службы Azure.
Задача с несколькими экземплярами
Задача с несколькими экземплярами - это задача, которая настроена для одновременного выполнения на нескольких вычислительных узлах.С помощью задач с несколькими экземплярами вы можете включить сценарии высокопроизводительных вычислений, которые требуют группы вычислительных узлов, которые выделяются вместе для обработки одной рабочей нагрузки, например интерфейса передачи сообщений (MPI).
Для подробного обсуждения выполнения заданий MPI в пакетном режиме с помощью библиотеки . NET пакетной службы ознакомьтесь с разделом Использование задач с несколькими экземплярами для запуска приложений интерфейса передачи сообщений (MPI) в пакетной службе Azure.
Зависимости задач
Зависимости задач, как следует из названия, позволяют указать, что задача зависит от завершения других задач перед ее выполнением.Эта функция обеспечивает поддержку ситуаций, в которых задача «нисходящего потока» потребляет выходные данные задачи «восходящего потока» или когда восходящая задача выполняет некоторую инициализацию, которая требуется нисходящей задаче.
Чтобы использовать эту функцию, необходимо сначала включить зависимости задач для своего пакетного задания. Затем для каждой задачи, которая зависит от другой (или многих других), вы указываете задачи, от которых зависит эта задача.
С помощью зависимостей задач вы можете настроить следующие сценарии:
- taskB зависит от taskA ( taskB не начнет выполнение до тех пор, пока taskA не завершится).
- taskC зависит как от taskA , так и от taskB .
- taskD зависит от ряда задач, таких как задачи с 1 по 10 , перед выполнением.
Дополнительные сведения см. В разделах «Зависимости задач в пакетной службе Azure» и в примере кода TaskDependencies в репозитории GitHub azure-batch-samples.
Параметры среды для задач
Каждая задача, выполняемая пакетной службой, имеет доступ к переменным среды, которые она устанавливает на вычислительных узлах.Сюда входят переменные среды, определенные пакетной службой, и пользовательские переменные среды, которые вы можете определить для своих задач. Приложения и скрипты, выполняемые вашими задачами, имеют доступ к этим переменным среды во время выполнения.
Вы можете установить пользовательские переменные среды на уровне задачи или задания, заполнив свойство Параметры среды для этих сущностей. Для получения дополнительных сведений см. Добавление задачи в операцию задания (пакетный REST) или CloudTask.EnvironmentSettings и CloudJob.Свойства CommonEnvironmentSettings в Batch .NET.
Ваше клиентское приложение или служба может получить переменные среды задачи, как определяемые службой, так и настраиваемые, с помощью функции Получить информацию об операции задачи (Batch REST) или путем доступа к свойству CloudTask.EnvironmentSettings (Batch .NET). Процессы, выполняющиеся на вычислительном узле, могут получить доступ к этим и другим переменным среды на узле, например, используя знакомый синтаксис % VARIABLE_NAME%
(Windows) или $ VARIABLE_NAME
(Linux).
Список всех переменных среды, определенных службой, можно найти в разделе «Переменные среды вычислительного узла».
Следующие шаги
Краткое руководство по Azure - Запустите свое первое пакетное задание на портале Azure - Пакетная служба Azure
- 000Z" data-article-date-source="ms.date"> 25.05.2021
- 5 минут на чтение
В этой статье
Начните работу с пакетной службой Azure, используя портал Azure для создания учетной записи пакетной службы, пула вычислительных узлов (виртуальных машин) и задания, которое выполняет задачи в пуле.
После завершения этого краткого руководства вы поймете ключевые концепции пакетной службы и будете готовы опробовать пакетную службу с более реалистичными рабочими нагрузками в более крупном масштабе.
Предварительные требования
Создать пакетный счет
Выполните следующие действия, чтобы создать образец учетной записи пакетной службы для целей тестирования. Для создания пулов и заданий вам понадобится пакетная учетная запись. Вы также можете связать учетную запись хранения Azure с учетной записью пакетной службы. Хотя это не требуется для этого краткого руководства, учетная запись хранения полезна для развертывания приложений и хранения входных и выходных данных для большинства реальных рабочих нагрузок.
На портале Azure выберите Создать ресурс .
Введите «пакетная служба» в поле поиска, затем выберите Пакетная служба .
Выберите Создать .
В поле Группа ресурсов выберите Создать новый и введите имя для своей группы ресурсов.
Введите значение для Имя учетной записи . Это имя должно быть уникальным в пределах выбранного расположения Azure .Он может содержать только строчные буквы и цифры и должен содержать от 3 до 24 символов.
В разделе Учетная запись хранения щелкните Выберите учетную запись хранения , затем выберите существующую учетную запись хранения или создайте новую.
Оставьте остальные настройки как есть. Выберите Просмотр + создание , затем выберите Создать , чтобы создать учетную запись пакетной обработки.
Когда развертывание выполнено успешно, появится сообщение , перейдите к созданной вами учетной записи пакетной службы.
Создать пул вычислительных узлов
Теперь, когда у вас есть учетная запись пакетной службы, создайте образец пула вычислительных узлов Windows для целей тестирования. Пул в этом кратком руководстве состоит из двух узлов, на которых запущен образ Windows Server 2019 из Azure Marketplace.
В учетной записи пакета выберите Пулы > Добавить .
Введите идентификатор пула с именем mypool .
В операционной системе используйте следующие параметры (вы можете изучить другие параметры).
Настройка Значение Тип изображения Торговая площадка Издатель сервер Microsoft Windows Предложение сервер Windows Артикул 2019-центр обработки данных-ядро-smalldisk Прокрутите вниз, чтобы ввести параметры Размер узла и Масштаб . Предлагаемый размер узла предлагает хороший баланс производительности и стоимости для этого быстрого примера.
Настройка Значение Уровень ценообразования узла Standard_A1_v2 Целевые выделенные узлы 2 Оставьте значения по умолчанию для остальных настроек и выберите OK , чтобы создать пул.
Пакетная служба создает пул немедленно, но для выделения и запуска вычислительных узлов требуется несколько минут.В это время состояние выделения пула равно Изменение размера . Вы можете создать задание и задачи во время изменения размера пула.
Через несколько минут состояние выделения изменится на Устойчиво , и узлы запустятся. Чтобы проверить состояние узлов, выберите пул, а затем выберите Узлы . Когда состояние узла Idle , он готов к выполнению задач.
Создать работу
Теперь, когда у вас есть пул, создайте задание для его запуска.Пакетное задание - это логическая группа из одной или нескольких задач. Задание включает параметры, общие для задач, такие как приоритет и пул для запуска задач. В работе не будет задач, пока вы их не создадите.
В ракурсе учетной записи пакета выберите Задания > Добавить .
Введите Job ID под названием myjob .
В Pool выберите mypool .
Оставьте значения по умолчанию для остальных настроек и выберите OK .
Создание задач
Теперь выберите задание, чтобы открыть страницу Задачи . Здесь вы создадите примеры задач для выполнения в работе. Обычно вы создаете несколько задач, которые помещаются в очередь и распределяются для выполнения на вычислительных узлах. В этом примере вы создаете две идентичные задачи. Каждая задача запускает командную строку для отображения переменных среды пакетной обработки на вычислительном узле, а затем ожидает 90 секунд.
При использовании пакетной службы в командной строке указывается приложение или сценарий.Пакетная служба предоставляет несколько способов развертывания приложений и сценариев для вычислительных узлов.
Для создания первой задачи:
Выбрать Добавить .
Введите идентификатор задачи под названием mytask .
В командной строке введите
cmd / c "set AZ_BATCH & timeout / t 90> NUL"
. Оставьте значения по умолчанию для остальных настроек и выберите Отправить .
Повторите шаги выше, чтобы создать вторую задачу.Введите другой идентификатор задачи , например mytask2 , но используйте ту же командную строку.
После создания задачи пакетная обработка ставит ее в очередь для запуска в пуле. Когда узел доступен для его запуска, задача запускается. В нашем примере, если первая задача все еще выполняется на одном узле, пакетная служба запустит вторую задачу на другом узле в пуле.
Просмотр вывода задачи
Созданные вами примеры задач будут выполнены за пару минут. Чтобы просмотреть результат выполненной задачи, выберите задачу, затем выберите файл stdout.txt
, чтобы просмотреть стандартный вывод задачи. Содержимое похоже на следующий пример:
В содержимом показаны переменные среды пакетной службы Azure, заданные на узле. Когда вы создаете свои собственные пакетные задания и задачи, вы можете ссылаться на эти переменные среды в командных строках задач, а также в приложениях и скриптах, запускаемых из командных строк.
Очистить ресурсы
Если вы хотите продолжить работу с руководствами и примерами пакетной обработки, вы можете продолжать использовать учетную запись пакетной службы и связанную учетную запись хранения, созданную в этом кратком руководстве. Плата за саму учетную запись пакетной службы не взимается.
Плата за пул взимается во время работы узлов, даже если никакие задания не запланированы. Когда вам больше не нужен пул, удалите его. В представлении учетной записи выберите Пулы и имя пула. Затем выберите Удалить . После удаления пула все выходные данные задачи на узлах удаляются.
Когда больше не требуется, удалите группу ресурсов, учетную запись пакетной обработки и все связанные ресурсы. Для этого выберите группу ресурсов для учетной записи пакетной обработки и выберите Удалить группу ресурсов .
Следующие шаги
В этом кратком руководстве вы создали учетную запись пакетной обработки, пул пакетной обработки и пакетное задание. Задание запускало образцы задач, и вы просматривали выходные данные, созданные на одном из узлов. Теперь, когда вы понимаете ключевые концепции пакетной службы, вы готовы попробовать пакетную службу с более реалистичными рабочими нагрузками в более крупном масштабе. Чтобы узнать больше о пакетной службе Azure, перейдите к руководствам по пакетной службе Azure.
Пулы агентов- Azure Pipelines
- 18 минут на чтение
В этой статье
Azure Pipelines | Azure DevOps Server 2020 | Сервер Azure DevOps 2019 | TFS 2018 - TFS 2015
Примечание
В Microsoft Team Foundation Server (TFS) 2018 и предыдущих версиях конвейеры сборки и выпуска называются определениями , прогонов называются сборки , сервисных соединений называются сервисными конечными точками , этапы называются средами , и заданий называются фазами .
Вместо того, чтобы управлять каждым агентом по отдельности, вы организуете агентов в пулы агентов . В TFS пулы охватывают весь сервер; так что вы можете использовать пул агентов для разных коллекций и проектов.
Очередь агентов обеспечивает доступ к пулу агентов в рамках проекта. Когда вы создаете конвейер сборки или выпуска, вы указываете, какую очередь он использует. Очереди привязаны к вашему проекту в TFS 2017 и новее, поэтому вы можете использовать их только в конвейерах сборки и выпуска внутри проекта.
Чтобы разделить пул агентов с несколькими проектами, в каждом из этих проектов вы создаете очередь агентов, указывающую на один и тот же пул агентов. Хотя несколько очередей в проектах могут использовать один и тот же пул агентов, несколько очередей в проекте не могут использовать один и тот же пул агентов. Кроме того, каждая очередь агентов может использовать только один пул агентов.
Пулы агентов ограничены коллекциями проектов.
Вместо того, чтобы управлять каждым агентом по отдельности, вы организуете агентов в пулы агентов . В Azure Pipelines пулы охватывают всю организацию; так что вы можете использовать машины агентов в разных проектах. В Azure DevOps Server пулы агентов охватывают весь сервер; так что вы можете использовать машины агентов в проектах и коллекциях.
Когда вы настраиваете агент, он регистрируется в одном пуле, а когда вы создаете конвейер, вы указываете, какой пул использует конвейер. Когда вы запускаете конвейер, он запускается на агенте из этого пула, который отвечает требованиям конвейера.
Примечание
Задания пула агентов запускают задание на одном агенте. Если вам нужно запустить задание на всех агентах, например в группе развертывания для классических конвейеров выпуска, см. Раздел Подготовка групп развертывания.
Вы можете создавать пулы агентов и управлять ими на вкладке «Пулы агентов» в настройках администратора.
Если вы являетесь администратором организации, вы можете создавать пулы агентов и управлять ими на вкладке «Пулы агентов» в настройках администратора.
Выберите Azure DevOps , Параметры организации .
Выберите Пулы агентов .
Выберите Azure DevOps , Параметры коллекции .
Выберите Пулы агентов .
Выберите Azure DevOps , Параметры коллекции .
Выберите Пулы агентов .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Выберите Управление пулами .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Выберите Управление пулами .
Перейдите к своему проекту и выберите Управление проектом (значок шестеренки).
Выберите Панель управления .
Выберите Пулы агентов .
Вы можете создавать очереди агентов и управлять ими на вкладке «Очереди агентов» в настройках проекта.
Если вы являетесь членом группы проекта, вы можете создавать очереди агентов и управлять ими на вкладке пулы агентов в настройках проекта.
Перейдите к своему проекту и выберите Настройки проекта , Пулы агентов .
Перейдите к своему проекту и выберите Настройки проекта , Пулы агентов .
Перейдите к своему проекту и выберите Настройки проекта , Пулы агентов .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Перейдите к своему проекту и выберите Управление проектом (значок шестеренки).
Выберите Панель управления .
Выберите желаемую коллекцию проектов и выберите Просмотр страницы администрирования коллекции .
Выберите Очереди агентов (для TFS 2015 выберите Сборка , а затем Очереди ).
Пулы агентов по умолчанию
По умолчанию предоставляются следующие пулы агентов:
Размещенный пул Azure Pipelines с различными образами Windows, Linux и macOS.Полный список доступных образов и установленного в них программного обеспечения см. В разделе «Агенты, размещенные на сервере Microsoft».
Примечание
Размещенный пул Azure Pipelines заменяет предыдущие размещенные пулы, имена которых сопоставлены с соответствующими образами. Любые задания, которые у вас были в предыдущих размещенных пулах, автоматически перенаправляются на правильный образ в новом размещенном пуле Azure Pipelines. В некоторых случаях вы все еще можете видеть старые имена пулов, но за кулисами размещенные задания выполняются с использованием пула Azure Pipelines.Дополнительные сведения см. В примечаниях к выпуску единого размещенного пула из примечаний к выпуску Sprint 154 от 1 июля 2019 г.
По умолчанию все участники проекта являются участниками роли Пользователь в размещенных пулах. Это позволяет каждому участнику проекта создавать и запускать конвейеры с помощью агентов, размещенных в Microsoft.
Выбор пула и агента в вашем трубопроводе
Чтобы выбрать агент, размещенный на сервере Microsoft, из пула Azure Pipelines в конвейере YAML Azure DevOps Services, укажите имя образа, используя YAML Image Label из этой таблицы.
бассейн:
vmImage: убунту-16.04
Чтобы использовать частный бассейн без требований:
бассейн: MyPool
Для получения дополнительной информации см. Схему YAML для пулов.
Чтобы выбрать пул и агент в классическом редакторе, перейдите к настройкам конвейера, выберите желаемый Пул агентов , а затем желаемое изображение из раскрывающегося списка Спецификация агента . Для получения дополнительных сведений о программном обеспечении, установленном на изображениях, размещенных в Microsoft, см. Соответствующую запись в столбце Classic Editor Pool этой таблицы.
Управление пулами и очередями
Вы можете создавать пулы агентов и управлять ими на вкладке «Пулы агентов» в настройках администратора.
Если вы являетесь администратором организации, вы можете создавать пулы агентов и управлять ими на вкладке «Пулы агентов» в настройках администратора.
Выберите Azure DevOps , Параметры организации .
Выберите Пулы агентов .
Выберите Azure DevOps , Параметры коллекции .
Выберите Пулы агентов .
Выберите Azure DevOps , Параметры коллекции .
Выберите Пулы агентов .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Выберите Управление пулами .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Выберите Управление пулами .
Перейдите к своему проекту и выберите Управление проектом (значок шестеренки).
Выберите Панель управления .
Выберите Пулы агентов .
Вы можете создавать очереди агентов и управлять ими на вкладке «Очереди агентов» в настройках проекта.
Если вы являетесь членом группы проекта, вы можете создавать очереди агентов и управлять ими на вкладке пулы агентов в настройках проекта.
Перейдите к своему проекту и выберите Настройки проекта , Пулы агентов .
Перейдите к своему проекту и выберите Настройки проекта , Пулы агентов .
Перейдите к своему проекту и выберите Настройки проекта , Пулы агентов .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Перейдите к своему проекту и выберите Управление проектом (значок шестеренки).
Выберите Панель управления .
Выберите желаемую коллекцию проектов и выберите Просмотр страницы администрирования коллекции .
Выберите Очереди агентов (для TFS 2015 выберите Сборка , а затем Очереди ).
Список пулов агентов | Показать детали пула агентов | Список очередей агентов | Показать сведения об очереди агента
Примечание
В настоящее время вы можете просматривать информацию о пулах агентов и очередях, но не редактировать их, используя Azure CLI.
Если вы впервые используете команду az DevOps pipelines
, см. Раздел Начало работы с Azure DevOps CLI.
Список пулов агентов
az pipelines pool list [--action {manage, none, use}]
[--detect {ложь, истина}]
[--org]
[--pool-name]
[--pool-type {автоматизация, развертывание}]
Параметры
- действие : отфильтровать список с разрешенными действиями пользователя. Допустимые значения: управлять , нет , использовать
- обнаружение : автоматическое обнаружение организации.Допустимые значения: false , true
- org или organization : URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию, используя az DevOps configure -d organization = ORG_URL. Требуется, если не настроен по умолчанию или получен через git config. Пример:
https://dev.azure.com/MyOrganizationName/
. - имя-пула : отфильтруйте список с совпадающим именем пула.
- тип пула : отфильтруйте список по типу пула.Допустимые значения: автоматизация , развертывание
Пример
В следующем примере перечислены все пулы в табличном формате. В этом примере используется следующая конфигурация по умолчанию: az DevOps configure --defaults organization = https: //dev.azure.com/fabrikam-tailspin project = FabrikamFiber
az pipelines pool list - таблица вывода
Имя идентификатора - это тип размещенного пула
---- ------------------------------- ----------- ---- -------
1 По умолчанию Ложная автоматизация
2 Истинная автоматизация на хостинге
3 Хостинг VS2017 Настоящая автоматизация
4 Размещенная Windows 2019 с VS2019 Настоящая автоматизация
5 Размещенный контейнер Windows Настоящая автоматизация
6 Размещенная macOS Настоящая автоматизация
7 Размещенная на MacOS High Sierra настоящая автоматизация
8 Размещенная Ubuntu 1604 Настоящая автоматизация
9 Azure Pipelines Настоящая автоматизация
10 MyAgentPool Ложная автоматизация
Показать подробности пула агентов
az pipelines pool show --id
[--action {управлять, нет, использовать}]
[--detect {ложь, истина}]
[--org]
Параметры
- id или pool-id : (Обязательный) ID пула для отображения деталей.
- действие : Отфильтровать список с разрешенными действиями пользователя. Допустимые значения: управлять , нет , использовать
- обнаружение : автоматическое обнаружение организации. Допустимые значения: false , true
- org или organization : URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию, используя az DevOps configure -d organization = ORG_URL. Требуется, если не настроен по умолчанию или получен через git config.Пример:
https://dev.azure.com/MyOrganizationName/
.
Пример
В следующем примере отображаются сведения о пуле размещенных Windows 2019 с пулом VS2019. В этом примере используется следующая конфигурация по умолчанию: az DevOps configure --defaults organization = https: //dev.azure.com/fabrikam-tailspin project = FabrikamFiber
az pipelines pool show --id 4
{
"agentCloudId": 1,
"autoProvision": правда,
"autoSize": ноль,
<Некоторые свойства опущены для пробела>
"poolType": "автоматизация",
"свойства": ноль,
"scope": "941fcaeb-be37-4309-b7b0-5cf156e1236e",
«размер»: 1,
"targetSize": 1
}
Вы также можете использовать --output table
, которая возвращает ту же информацию, что и команда list
.
az pipelines pool show --id 4 - выходная таблица
Имя идентификатора - это тип размещенного пула
---- ------------------------------- ----------- ---- -------
4 Размещенная Windows 2019 с VS2019 Настоящая автоматизация
Список очередей агентов
az pipelines queue list [--action {manage, none, use}]
[--detect {ложь, истина}]
[--org]
[--проект]
[--queue-name]
Параметры
- действие : отфильтровать список с разрешенными действиями пользователя.Допустимые значения: управлять , нет , использовать
- обнаружение : автоматическое обнаружение организации. Допустимые значения: false , true
- org или organization : URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию, используя az DevOps configure -d organization = ORG_URL. Требуется, если не настроен по умолчанию или получен через git config. Пример:
https://dev.azure.com/MyOrganizationName/
. - проект или p : Название или идентификатор проекта. Вы можете настроить проект по умолчанию, используя
az DevOps configure -d project = NAME_OR_ID
. Требуется, если не настроен по умолчанию или получен через git config. - имя-очереди : отфильтровать список с помощью регулярного выражения с совпадающим именем очереди. например ubuntu для очереди с именем Hosted Ubuntu 1604.
Пример
В следующем примере перечислены все очереди в табличном формате.В этом примере используется следующая конфигурация по умолчанию: az DevOps configure --defaults organization = https: //dev.azure.com/fabrikam-tailspin project = FabrikamFiber
az pipelines queue list - выходная таблица
Эта группа команд находится в предварительном просмотре. Он может быть изменен / удален в будущем выпуске.
ID Имя Пул IsHosted Тип пула
---- ------------------------------- --------------- -----------
11 По умолчанию Ложная автоматизация
12 Истинная автоматизация на хостинге
13 Хостинг VS2017 Настоящая автоматизация
14 Размещенная Windows 2019 с VS2019 Настоящая автоматизация
15 Размещенный контейнер Windows Настоящая автоматизация
16 Размещенная macOS Настоящая автоматизация
17 Размещенная в macOS High Sierra настоящая автоматизация
18 Размещенная Ubuntu 1604 Настоящая автоматизация
19 Azure Pipelines Настоящая автоматизация
Показать сведения об очереди агента
az pipelines queue show --id
[--action {управлять, нет, использовать}]
[--detect {ложь, истина}]
[--org]
[--проект]
Параметры
- id или queue-id : идентификатор очереди агента, о которой нужно получить информацию.
- действие : Отфильтровать список с разрешенными действиями пользователя. Допустимые значения: управлять , нет , использовать
- обнаружение : автоматическое обнаружение организации. Допустимые значения: false , true
- org или organization : URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию, используя az DevOps configure -d organization = ORG_URL. Требуется, если не настроен по умолчанию или получен через git config.Пример:
https://dev.azure.com/MyOrganizationName/
. - проект или p : Название или идентификатор проекта. Вы можете настроить проект по умолчанию, используя
az DevOps configure -d project = NAME_OR_ID
. Требуется, если не настроен по умолчанию или получен через git config.
Пример
В следующем примере отображаются сведения об очереди для размещенной Windows 2019 с очередью VS2019. В этом примере используется следующая конфигурация по умолчанию: az DevOps configure --defaults organization = https: // dev.azure.com/fabrikam-tailspin project = FabrikamFiber
az pipelines queue show --id 14
{
"id": 14,
"name": "Размещенная Windows 2019 с VS2019",
"бассейн": {
"id": 4,
"isHosted": правда,
"isLegacy": правда,
"name": "Размещенная Windows 2019 с VS2019",
"poolType": "автоматизация",
"scope": "941fcaeb-be37-4309-b7b0-5cf156e1236e",
«размер»: 1
},
"projectId": "16836457-4ce1-4e77-b97a-e7e0c6508e84"
}
Команды интерфейса командной строки Azure DevOps не поддерживаются для Azure DevOps Server 2019 и более ранних версий.
Пулы используются для выполнения заданий. Узнайте об указании пулов для заданий.
Если у вас много автономных агентов, предназначенных для разных команд или целей, вы можете создать дополнительные пулы, как описано ниже.
Создание пулов агентов
Вот несколько типичных ситуаций, когда вы можете захотеть создать пулы агентов с собственным хостом:
Вы являетесь участником проекта и хотите использовать набор машин, принадлежащих вашей группе, для выполнения заданий сборки и развертывания.Во-первых, убедитесь, что у вас есть разрешения на создание пулов в вашем проекте, выбрав Security на странице пулов агентов в настройках вашего проекта. У вас должна быть роль Администратор , чтобы иметь возможность создавать новые пулы. Затем выберите Добавить пул и выберите вариант создания нового пула на уровне организации. Наконец, установите и настройте агентов, чтобы они были частью этого пула агентов.
Вы являетесь членом группы инфраструктуры и хотите создать пул агентов для использования во всех проектах.Сначала убедитесь, что вы являетесь членом группы в Все пулы агентов с ролью Администратор , перейдя на страницу пулов агентов в настройках вашей организации. Затем создайте Новый пул агентов и выберите опцию Автоматическая подготовка соответствующих пулов агентов во всех проектах при создании пула. Этот параметр гарантирует, что все проекты имеют доступ к этому пулу агентов. Наконец, установите и настройте агентов, чтобы они были частью этого пула агентов.
Вы хотите использовать набор машин с агентами для нескольких проектов, но не для всех.Сначала перейдите к настройкам одного из проектов, добавьте пул агентов и выберите вариант создания нового пула на уровне организации. Затем перейдите к каждому из других проектов и создайте пул в каждом из них, выбрав опцию Использовать существующий пул агентов из организации . Наконец, установите и настройте агенты, чтобы они были частью общего пула агентов.
Вы являетесь участником проекта и хотите использовать набор машин, принадлежащих вашей группе, для выполнения заданий сборки и развертывания.Во-первых, убедитесь, что вы являетесь членом группы в All Pools с ролью Administrator . Затем создайте Новый пул агентов проекта в настройках вашего проекта и выберите опцию Создать новый пул агентов организации . В результате будет создан пул агентов как на уровне организации, так и на уровне проекта. Наконец, установите и настройте агентов, чтобы они были частью этого пула агентов.
Вы являетесь членом группы инфраструктуры и хотите создать пул агентов для использования во всех проектах.Сначала убедитесь, что вы являетесь членом группы в All Pools с ролью Administrator . Затем создайте пул агентов новой организации в настройках администратора и выберите опцию Автоматическая подготовка соответствующих пулов агентов проекта во всех проектах при создании пула. Этот параметр гарантирует, что все проекты имеют пул, указывающий на пул агентов организации. Система создает пул для существующих проектов, и в будущем он будет делать это при создании нового проекта.Наконец, установите и настройте агентов, чтобы они были частью этого пула агентов.
Вы хотите использовать набор машин с агентами для нескольких проектов, но не для всех. Сначала создайте пул агентов проекта в одном из проектов и выберите опцию Создать новый пул агентов организации при создании этого пула. Затем перейдите к каждому из других проектов и создайте пул в каждом из них, выбрав опцию Использовать существующий пул агентов организации .Наконец, установите и настройте агенты, чтобы они были частью общего пула агентов.
Безопасность пулов агентов
Понимание того, как работает безопасность для пулов агентов, поможет вам контролировать совместное использование и использование агентов.
Роли определены для каждого пула агентов, а членство в этих ролях определяет, какие операции вы можете выполнять с пулом агентов.
Роль в пуле агентов в настройках организации | Назначение |
---|---|
Считыватель | Члены этой роли могут просматривать пул агентов, а также агентов.Обычно это используется для добавления операторов, которые отвечают за мониторинг агентов и их состояния. |
Сервисный счет | Члены этой роли могут использовать пул агентов организации для создания пула агентов проекта в проекте. Если вы следуете приведенным выше инструкциям по созданию новых пулов агентов проекта, вам обычно не нужно добавлять сюда каких-либо участников. |
Администратор | В дополнение ко всем вышеперечисленным разрешениям члены этой роли могут регистрировать или отменять регистрацию агентов из пула агентов организации.Они также могут ссылаться на пул агентов организации при создании пула агентов проекта в проекте. Наконец, они также могут управлять членством для всех ролей пула агентов организации. Пользователь, создавший пул агентов организации, автоматически добавляется к роли администратора для этого пула. |
Узел Все пулы агентов на вкладке Пулы агентов используется для управления безопасностью всех пулов агентов организации . Членство в ролях для отдельных пулов агентов организации автоматически наследуется от ролей узла «Все пулы агентов».При использовании TFS или Azure DevOps Server по умолчанию администраторы TFS и Azure DevOps Server также являются администраторами узла «Все пулы агентов».
Роли также определены для каждого пула агентов проекта, и членство в этих ролях определяет, какие операции вы можете выполнять с пулом агентов на уровне проекта.
Роль в пуле агентов в настройках проекта | Назначение |
---|---|
Считыватель | Члены этой роли могут просматривать пул агентов проекта.Обычно это используется для добавления операторов, которые отвечают за мониторинг заданий сборки и развертывания в этом пуле агентов проекта. |
Пользователь | Члены этой роли могут использовать пул агентов проекта при создании конвейеров. |
Администратор | В дополнение ко всем вышеуказанным операциям члены этой роли могут управлять членством для всех ролей пула агентов проекта. Пользователь, создавший пул, автоматически добавляется к роли администратора для этого пула. |
Узел Все пулы агентов на вкладке Пулы агентов используется для управления безопасностью всех пулов агентов проекта в проекте. Членство в ролях для отдельных пулов агентов проекта автоматически наследуется от ролей узла «Все пулы агентов». По умолчанию к роли администратора «Все пулы агентов» добавляются следующие группы: «Администраторы сборки», «Администраторы выпуска», «Администраторы проекта».
Действие Безопасность на вкладке Пулы агентов используется для управления безопасностью всех пулов агентов проекта в проекте.Членство в ролях для отдельных пулов агентов проекта автоматически наследуется от того, что вы определяете здесь. По умолчанию к роли администратора «Все пулы агентов» добавляются следующие группы: «Администраторы сборки», «Администраторы выпуска», «Администраторы проекта».
TFS 2015
В TFS 2015 специальные группы определены в пулах агентов, и членство в этих группах определяет, какие операции вы можете выполнять.
Члены Администраторы пула агентов могут регистрировать новых агентов в пуле и добавлять дополнительных пользователей в качестве администраторов или учетных записей служб.
Добавьте людей в группу администраторов пула агентов, чтобы предоставить им разрешение на управление всеми пулами агентов. Это позволяет людям создавать новые пулы и изменять все существующие пулы. Члены группы администраторов Team Foundation также могут выполнять все эти операции.
Пользователи в группе Учетные записи служб пула агентов имеют разрешение на прослушивание очереди сообщений для определенного пула для получения работы. В большинстве случаев вам не нужно управлять членами этой группы.Об этом позаботится процесс регистрации агента. Учетная запись службы, которую вы указываете для агента (обычно сетевая служба), автоматически добавляется при регистрации агента.
FAQ
Если я не запланирую окно обслуживания, когда агенты выполнят обслуживание?
Если окно не запланировано, агенты в этом пуле не будут запускать задание обслуживания.
Что такое техническое обслуживание?
Вы можете настроить пулы агентов на периодическую очистку устаревших рабочих каталогов и репозиториев.Это должно снизить вероятность того, что агентам не хватит дискового пространства. Задания обслуживания настраиваются на уровне коллекции проектов или организации в настройках пула агентов.
Для настройки параметров технического обслуживания:
Выберите Azure DevOps , Параметры организации .
Выберите Пулы агентов .
Выберите Azure DevOps , Параметры коллекции .
Выберите Пулы агентов .
Выберите Azure DevOps , Параметры коллекции .
Выберите Пулы агентов .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Выберите Управление пулами .
Перейдите к своему проекту и выберите Настройки (значок шестеренки)> Очереди агентов .
Выберите Управление пулами .
Перейдите к своему проекту и выберите Управление проектом (значок шестеренки).
Выберите Панель управления .
Выберите Пулы агентов .
Выберите желаемый пул и выберите Параметры , чтобы настроить параметры задания обслуживания для этого пула агентов.
Важно
У вас должно быть разрешение «Управление очередями сборки», чтобы настроить параметры задания обслуживания. Если вы не видите вкладку Settings или Maintenance History , у вас нет этого разрешения, которое по умолчанию предоставляется роли Administrator . Для получения дополнительной информации см. Безопасность пулов агентов.
Задайте нужные параметры и выберите Сохранить .
Выберите История обслуживания , чтобы просмотреть историю заданий обслуживания для текущего пула агентов. Вы можете загружать и просматривать журналы, чтобы увидеть шаги очистки и предпринятые действия.
Обслуживание выполняется для пула агентов, а не для каждой машины; поэтому, если у вас есть несколько пулов агентов на одной машине, вы все равно можете столкнуться с проблемами дискового пространства.
Я пытаюсь создать пул агентов проекта, который использует существующий пул агентов организации, но элементы управления неактивны. Почему?
В диалоговом окне «Создание пула агентов проекта» нельзя использовать существующий пул агентов организации, если на него уже ссылается другой пул агентов проекта. На каждый пул агентов организации может ссылаться только один пул агентов проекта в данной коллекции проектов.
Я не могу выбрать пул, размещенный в Microsoft, и не могу поставить свою сборку в очередь.Как это исправить?
Попросите владельца вашей организации Azure DevOps предоставить вам разрешение на использование пула. См. Безопасность пулов агентов.
Мне нужно больше размещенных ресурсов сборки. Что я могу сделать?
A: Пул Azure Pipelines предоставляет всем организациям Azure DevOps размещенные в облаке агенты сборки и бесплатные минуты сборки каждый месяц. Если вам нужно больше ресурсов сборки, размещенных в Microsoft, или вам нужно выполнять больше заданий параллельно, вы можете:
Job - Обновление - REST API (пакетная служба Azure)
Обновляет свойства указанного задания.
Это полностью заменяет все обновляемые свойства задания. Например, если с заданием связаны ограничения, и если ограничения не указаны с этим запросом, то пакетная служба удалит существующие ограничения.
В этой статье
PUT {batchUrl} / jobs / {jobId}? Api-version = 2021-06-01.14.0
С дополнительными параметрами:
PUT {batchUrl} / jobs / {jobId}? Timeout = {timeout} & api-version = 2021-06-01.14,0
Параметры URI
Имя | В | Требуется | Тип | Описание |
---|---|---|---|---|
партия | путь | Правда | Базовый URL-адрес для всех запросов пакетной службы Azure. | |
вакансия | путь | Правда | Идентификатор задания, свойства которого вы хотите обновить. | |
api-версия | запрос | Правда | Версия клиентского API. | |
таймаут | запрос | int32 | Максимальное время, которое сервер может потратить на обработку запроса, в секундах. По умолчанию 30 секунд. |
Заголовок запроса
Типы носителей: "application / json; odata = minimalmetadata"
Имя | Требуется | Тип | Описание |
---|---|---|---|
идентификатор-запроса-клиента | uuid | Идентификатор запроса, сгенерированный вызывающим абонентом, в форме GUID без украшения, такого как фигурные скобки, например 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0. | |
возврат-идентификатор-запроса-клиента | Должен ли сервер возвращать идентификатор-запроса-клиента в ответе. | ||
ocp-date | дата-время-rfc1123 | Время отправки запроса. Клиентские библиотеки обычно устанавливают текущее системное время; установите его явно, если вы вызываете REST API напрямую. | |
Если совпадение | Значение ETag, связанное с версией ресурса, известной клиенту.Операция будет выполнена только в том случае, если текущий ETag ресурса в службе точно соответствует значению, указанному клиентом. | ||
Если-нет-совпадение | Значение ETag, связанное с версией ресурса, известной клиенту. Операция будет выполнена только в том случае, если текущий ETag ресурса в службе не соответствует значению, указанному клиентом. | ||
If-Modified-Since | дата-время-rfc1123 | Отметка времени, указывающая время последнего изменения ресурса, известного клиенту.Операция будет выполнена только в том случае, если ресурс в службе был изменен с указанного времени. | |
Если-Неизмененный-С | дата-время-rfc1123 | Отметка времени, указывающая время последнего изменения ресурса, известного клиенту. Операция будет выполнена только в том случае, если ресурс в службе не изменялся с указанного времени. |
Тело запроса
Типы носителей: "application / json; odata = minimalmetadata"
Имя | Требуется | Тип | Описание |
---|---|---|---|
poolInfo | Правда | Пул, в котором пакетная служба запускает задачи задания. | |
ограничения | Ограничения выполнения для задания. | ||
метаданные | Список пар имя-значение, связанных с заданием как метаданные. | ||
onAllTasksComplete | Действие, которое должна предпринять пакетная служба, когда все задачи в задании находятся в завершенном состоянии. | ||
приоритет | Приоритет задания. |
Ответы
Имя | Тип | Описание |
---|---|---|
200 ОК | Запрос к пакетной службе был успешным. Заголовки
| |
Другие коды состояния | Ошибка пакетной службы. |
Безопасность
azure_auth
Поток OAuth3 для Azure Active Directory
Тип:
oauth3
Поток:
неявный
URL-адрес авторизации:
https: // войти.microsoftonline.com/common/oauth3/authorize
Прицелы
Имя | Описание |
---|---|
user_impersonation | Выдайте себя за свою учетную запись пользователя |
Авторизация
Тип:
apiKey
В:
заголовок
Примеры
Обновление вакансии
Образец запроса
PUT счет.region.batch.azure.com/jobs/jobId?api-version=2021-06-01.14.0
идентификатор-запроса-клиента: 00000000-0000-0000-0000-000000000000
ocp-date: пт, 17 фев 2017, 00:00:00 GMT
{
«приоритет»: 100,
"constraints": {
"maxWallClockTime": "PT1H",
«maxTaskRetryCount»: -1
},
"poolInfo": {
"poolId": "poolId"
}
}
Определения
ApplicationPackage Ссылка
Ссылка на пакет, который будет развернут на вычислительных узлах.
Имя | Тип | Описание |
---|---|---|
applicationId | Идентификатор развертываемого приложения. | |
версия | Версия развертываемого приложения. Если не указано, развертывается версия по умолчанию. |
AutoPoolSpecification
Задает характеристики временного «автоматического пула». Пакетная служба создаст этот автоматический пул при отправке задания.
Имя | Тип | Описание |
---|---|---|
autoPoolIdPrefix | Префикс, добавляемый к уникальному идентификатору при автоматическом создании пула. | |
keepAlive | Сохранять ли автоматический пул активным после истечения его срока службы. | |
бассейн | Спецификация пула для автоматического пула. | |
poolLifetimeOption | Минимальное время жизни созданных автоматических пулов и то, как несколько заданий по расписанию назначаются пулам. |
AutoUserScope
Прицел для автопользователя
Имя | Тип | Описание |
---|---|---|
бассейн | Указывает, что Задача запускается как обычная автоматическая учетная запись пользователя, которая создается на каждом вычислительном узле в пуле. | |
задача | Указывает, что служба должна создать нового пользователя для Задачи. |
AutoUserSpecification
Задает параметры для автоматического пользователя, который запускает задачу в пакетной службе.
Имя | Тип | Описание |
---|---|---|
высотаLevel | Уровень повышения автопользователя. | |
сфера | Область действия автоматического пользователя |
AzureBlobFileSystemConfiguration
Информация, используемая для подключения к контейнеру хранилища Azure с помощью Blobfuse.
Имя | Тип | Описание |
---|---|---|
accountKey | Ключ учетной записи хранения Azure. | |
название аккаунта | Имя учетной записи хранения Azure. | |
blobfuseOptions | Дополнительные параметры командной строки для передачи команде монтирования. | |
containerName | Имя контейнера хранилища BLOB-объектов Azure. | |
identityReference | Ссылка на назначенный пользователем идентификатор для использования для доступа к containerName | |
relativeMountPath | Относительный путь на вычислительном узле, где будет смонтирована файловая система. | |
sasKey | Маркер SAS службы хранилища Azure. |
Информация, используемая для подключения к Azure Fileshare.
Имя | Тип | Описание |
---|---|---|
accountKey | Ключ учетной записи хранения Azure. | |
название аккаунта | Имя учетной записи хранения Azure. | |
azureFileUrl | URL-адрес файлов Azure. | |
mountOptions | Дополнительные параметры командной строки для передачи команде монтирования. | |
relativeMountPath | Относительный путь на вычислительном узле, где будет смонтирована файловая система. |
BatchError
От пакетной службы Azure получен ответ об ошибке.
Имя | Тип | Описание |
---|---|---|
код | Идентификатор ошибки. Коды инвариантны и предназначены для программного использования. | |
сообщение | Сообщение с описанием ошибки, предназначенное для отображения в пользовательском интерфейсе. | |
ценности | Коллекция пар "ключ-значение", содержащая дополнительные сведения об ошибке. |
BatchErrorDetail
Элемент дополнительной информации, включенный в ответ об ошибке пакетной службы Azure.
Имя | Тип | Описание |
---|---|---|
ключ | Идентификатор, определяющий значение свойства Value. | |
ценить | Дополнительная информация, включенная в ответ об ошибке. |
CachingType
Тип кэширования для диска.
Имя | Тип | Описание |
---|---|---|
никто | Не включен режим кэширования для диска. | |
только чтение | Режим кэширования для диска - только чтение. | |
читай пиши | Режим кэширования для диска - чтение и запись. |
Сертификат Ссылка
Ссылка на сертификат, который должен быть установлен на вычислительных узлах в пуле.
Имя | Тип | Описание |
---|---|---|
storeLocation | Расположение хранилища сертификатов на вычислительном узле, в которое устанавливается сертификат. | |
название магазина | Имя хранилища сертификатов на вычислительном узле, в которое устанавливается сертификат. | |
отпечаток большого пальца | Отпечаток сертификата. | |
thumbprintAlgorithm | Алгоритм, с которым связан отпечаток. Это должно быть sha1. | |
видимость | Какие учетные записи пользователей на вычислительном узле должны иметь доступ к личным данным сертификата. |
Сертификат Магазин Расположение
Расположение хранилища сертификатов на вычислительном узле, в которое устанавливается сертификат.
Имя | Тип | Описание |
---|---|---|
текущий пользователь | Сертификаты должны быть установлены в хранилище сертификатов CurrentUser. | |
местная машина | Сертификаты должны быть установлены в хранилище сертификатов LocalMachine. |
CIFSMountConfiguration
Информация, используемая для подключения к файловой системе CIFS.
Имя | Тип | Описание |
---|---|---|
mountOptions | Дополнительные параметры командной строки для передачи команде монтирования. | |
пароль | Пароль для аутентификации в файловой системе CIFS. | |
relativeMountPath | Относительный путь на вычислительном узле, где будет смонтирована файловая система. | |
источник | URI монтируемой файловой системы. | |
имя пользователя | Пользователь, который будет использоваться для аутентификации в файловой системе CIFS. |
CloudServiceConfiguration
Конфигурация для вычислительных узлов в пуле на основе платформы облачных служб Azure.
Имя | Тип | Описание |
---|---|---|
osFamily | Семейство гостевых ОС Azure для установки на виртуальные машины в пуле. | |
osVersion | Версия гостевой ОС Azure, которая будет установлена на виртуальных машинах в пуле. |
ComputeNodeFillType
Как задачи распределяются по вычислительным узлам в пуле.
Имя | Тип | Описание |
---|---|---|
пакет | Как можно больше задач (taskSlotsPerNode) должно быть назначено каждому вычислительному узлу в пуле, прежде чем какие-либо задачи будут назначены следующему вычислительному узлу в пуле. | |
распространять | Задачи должны быть равномерно распределены по всем вычислительным узлам в пуле. |
ComputeNodeIdentityReference
Ссылка на назначенный пользователем идентификатор, связанный с пулом пакетной обработки, который будет использовать вычислительный узел.
Имя | Тип | Описание |
---|---|---|
resourceId | Идентификатор ресурса ARM назначенного пользователем идентификатора. |
Конфигурация контейнера
Конфигурация для пулов с включенными контейнерами.
Имя | Тип | Описание |
---|---|---|
containerImageNames | Коллекция имен образов контейнеров. | |
containerRegistries | Дополнительные частные реестры, из которых можно извлекать контейнеры. | |
тип | Используемая контейнерная технология. |
Реестр контейнеров
Частный реестр контейнеров.
Имя | Тип | Описание |
---|---|---|
identityReference | Ссылка на назначенное пользователем удостоверение для использования для доступа к реестру контейнеров Azure вместо имени пользователя и пароля. | |
пароль | Пароль для входа на сервер реестра. | |
registryServer | URL-адрес реестра. | |
имя пользователя | Имя пользователя для входа на сервер реестра. |
Тип контейнера
Используемая контейнерная технология.
Имя | Тип | Описание |
---|---|---|
dockerCompatible | Для запуска контейнеров будет использоваться Docker-совместимая контейнерная технология. |
ContainerWorkingDirectory
Расположение рабочего каталога задачи контейнера.
Имя | Тип | Описание |
---|---|---|
containerImageDefault | Использовать рабочий каталог, определенный в образе контейнера. Помните, что этот каталог не будет содержать файлы ресурсов, загруженные пакетной службой. | |
taskWorkingDirectory | Используйте стандартный рабочий каталог задач пакетной службы, который будет содержать файлы ресурсов задачи, заполненные пакетной службой. |
Диск данных
Параметры, которые будут использоваться дисками данных, связанными с вычислительными узлами в пуле. При использовании подключенных дисков с данными вам необходимо смонтировать и отформатировать диски из виртуальной машины, чтобы использовать их.
Размещение DiffDisk
Задает временное размещение диска операционной системы для всех вычислительных узлов (виртуальных машин) в пуле.
Имя | Тип | Описание |
---|---|---|
CacheDisk | Эфемерный диск ОС хранится в кэше виртуальной машины. |
DiffDiskSettings
Задает временные параметры диска для диска операционной системы, используемого вычислительным узлом (ВМ).
DiskEncryptionConfiguration
Конфигурация шифрования диска, примененная к вычислительным узлам в пуле. Конфигурация шифрования диска не поддерживается в пуле Linux, созданном с помощью Shared Image Gallery Image.
Имя | Тип | Описание |
---|---|---|
цели | Список целевых дисков. Пакетная служба зашифрует на вычислительном узле. |
DynamicVNetAssignmentScope
Объем динамического назначения vnet.
Имя | Тип | Описание |
---|---|---|
работа | Назначение динамической виртуальной сети выполняется для каждого задания. | |
никто | Не включено динамическое назначение виртуальной сети. |
Уровень
Повышенный уровень пользователя.
Имя | Тип | Описание |
---|---|---|
админ | Пользователь является пользователем с повышенными правами доступа и работает с полными правами администратора. | |
неадмин | Пользователь является стандартным пользователем без повышенных прав доступа. |
Настройка среды
Переменная среды, которая должна быть установлена в процессе задачи.
Имя | Тип | Описание |
---|---|---|
имя | Имя переменной среды. | |
ценить | Значение переменной среды. |
Сообщение об ошибке
В ответе об ошибке пакетной службы Azure получено сообщение об ошибке.
Имя | Тип | Описание |
---|---|---|
язык | Код языка сообщения об ошибке | |
ценить | Текст сообщения. |
Ссылка на изображение
Ссылка на образ из Marketplace виртуальных машин Azure или общий образ галереи изображений.Чтобы получить список всех ссылок на образы Azure Marketplace, проверенных пакетной службой Azure, см. Операцию «Список поддерживаемых образов».
Имя | Тип | Описание |
---|---|---|
точная версия | Конкретная версия образа платформы или образа торговой площадки, использованная для создания узла. Это доступное только для чтения поле отличается от «версия» только в том случае, если значение, указанное для «версии» при создании пула, было «последним». | |
предложение | Тип предложения образа Marketplace виртуальных машин Azure. | |
издатель | Издатель образа рынка виртуальных машин Azure. | |
sku | Артикул образа рынка виртуальных машин Azure. | |
версия | Версия образа Marketplace виртуальных машин Azure. | |
virtualMachineImageId | Идентификатор ресурса ARM для изображения совместно используемой галереи изображений. Вычислительные узлы в пуле будут созданы с использованием этого идентификатора изображения.Это имеет форму /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/galleries/{galleryName}/images/{imageDefinitionName}/versions/{VersionId} или / subscriptions / {subscriptionId} / resourceGroups. /{resourceGroup}/providers/Microsoft.Compute/galleries/{galleryName}/images/{imageDefinitionName}, чтобы по умолчанию всегда использовалась последняя версия образа. |
Протокол исходящей конечной точки
Протокол конечной точки.
Имя | Тип | Описание |
---|---|---|
TCP | Использовать TCP для конечной точки. | |
udp | Использовать UDP для конечной точки. |
InboundNATPool
Входящий пул NAT, который может использоваться для внешней адресации определенных портов на вычислительных узлах в пуле пакетов.
Имя | Тип | Описание |
---|---|---|
backendPort | Номер порта на вычислительном узле. | |
frontendPortRangeEnd | Последний номер порта в диапазоне внешних портов, который будет использоваться для предоставления входящего доступа к backendPort на отдельных вычислительных узлах. | |
frontendPortRangeStart | Первый номер порта в диапазоне внешних портов, который будет использоваться для обеспечения входящего доступа к backendPort на отдельных вычислительных узлах. | |
имя | Имя конечной точки. | |
networkSecurityGroupRules | Список правил группы безопасности сети, которые будут применены к конечной точке. | |
протокол | Протокол конечной точки. |
IPAddressProvisioningType
Тип предоставления общедоступных IP-адресов для пула.
Имя | Тип | Описание |
---|---|---|
пакетный | Общедоступный IP-адрес будет создан и управляться пакетной службой.В зависимости от размера пула может быть несколько общедоступных IP-адресов. | |
nopublicipaddresses | Не будет создан общедоступный IP-адрес. | |
управляемый пользователем | Общедоступные IP-адреса предоставляются пользователем и будут использоваться для подготовки вычислительных узлов. |
JobConstraints
Ограничения выполнения для задания.
Имя | Тип | Описание |
---|---|---|
maxTaskRetryCount | Максимальное количество повторных попыток каждой Задачи. Пакетная служба повторяет задачу, если ее код выхода не равен нулю. | |
maxWallClockTime | Максимальное истекшее время, в течение которого может выполняться задание, отсчитываемое с момента его создания. |
JobUpdateParameter
Набор изменений, которые необходимо внести в задание.
Имя | Тип | Описание |
---|---|---|
ограничения | Ограничения выполнения для задания. | |
метаданные | Список пар имя-значение, связанных с заданием как метаданные. | |
onAllTasksComplete | Действие, которое должна предпринять пакетная служба, когда все задачи в задании находятся в завершенном состоянии. | |
poolInfo | Пул, в котором пакетная служба запускает задачи задания. | |
приоритет | Приоритет задания. |
LinuxUserConfiguration
Свойства, используемые для создания учетной записи пользователя на вычислительном узле Linux.
Имя | Тип | Описание |
---|---|---|
гид | Идентификатор группы для учетной записи пользователя. | |
sshPrivateKey | Закрытый ключ SSH для учетной записи пользователя. | |
uid | Идентификатор пользователя учетной записи пользователя. |
LoginMode
Режим входа для пользователя
Имя | Тип | Описание |
---|---|---|
партия | Режим входа в систему LOGON32_LOGON_BATCH Win32.Пакетный режим входа рекомендуется для длительных параллельных процессов. | |
интерактивный | Режим входа в систему LOGON32_LOGON_INTERACTIVE Win32. UAC включен в пулах конфигурации Windows VirtualMachine. Если этот параметр используется с повышенным удостоверением пользователя в пуле Windows VirtualMachineConfiguration Pool, сеанс пользователя не будет повышен, если приложение, выполняемое из командной строки задачи, не настроено так, чтобы всегда требовать административные привилегии или всегда требовать максимальные привилегии. |
Элемент метаданных
Пара имя-значение, связанная с ресурсом пакетной службы.
Имя | Тип | Описание |
---|---|---|
имя | Имя элемента метаданных. | |
ценить | Значение элемента метаданных. |
MountConfiguration
Файловая система для монтирования на каждом узле.
Имя | Тип | Описание |
---|---|---|
azureBlobFileSystemConfiguration | Контейнер хранения Azure для подключения с помощью BLOB-объекта FUSE на каждом узле. | |
azureFileShareConfiguration | Файловый ресурс Azure для подключения к каждому узлу. | |
cifsMountConfiguration | Файловая система CIFS / SMB для монтирования на каждом узле. | |
nfsMountConfiguration | Файловая система NFS для монтирования на каждом узле. |
Конфигурация сети
Конфигурация сети для пула.
Имя | Тип | Описание |
---|---|---|
dynamicVNetAssignmentScope | Объем динамического назначения vnet. | |
endpointConfiguration | Конфигурация конечных точек на вычислительных узлах в пакетном пуле. | |
publicIPAddressConfiguration | Конфигурация общедоступного IP-адреса для вычислительных узлов в пакетном пуле. Свойство конфигурации общедоступного IP-адреса | |
subnetId | Идентификатор ресурса ARM подсети виртуальной сети, к которой будут присоединяться вычислительные узлы пула.Это имеет вид / подписки / {подписка} / группы ресурсов / {группа} / поставщики / {поставщик} / виртуальные сети / {сеть} / подсети / {подсеть}. |
NetworkSecurityGroupRule
Правило группы безопасности сети, применяемое к входящей конечной точке.
Имя | Тип | Описание |
---|---|---|
доступ | Действие, которое необходимо выполнить для указанного IP-адреса, диапазона подсети или тега. | |
приоритет | Приоритет этого правила. | |
sourceAddressPrefix | Префикс или тег адреса источника для соответствия правилу. | |
sourcePortRanges | Диапазон портов источника, соответствующих правилу. |
NetworkSecurityGroupRuleAccess
Действие, которое необходимо выполнить для указанного IP-адреса, диапазона подсети или тега.
Имя | Тип | Описание |
---|---|---|
разрешать | Разрешить доступ. | |
Отрицать | Запретить доступ. |
NFSMountConfiguration
Информация, используемая для подключения к файловой системе NFS.
Имя | Тип | Описание |
---|---|---|
mountOptions | Дополнительные параметры командной строки для передачи команде монтирования. | |
relativeMountPath | Относительный путь на вычислительном узле, где будет смонтирована файловая система. | |
источник | URI монтируемой файловой системы. |
Конфигурация размещения узла
Конфигурация размещения узла для пула.
Имя | Тип | Описание |
---|---|---|
политика | Тип политики размещения узлов в пакетных пулах. |
NodePlacementPolicyType
Политика размещения для распределения узлов в пуле.
Имя | Тип | Описание |
---|---|---|
региональный | Все узлы в пуле будут размещены в одном регионе. | |
зональный | Узлы в пуле будут распределены по разным зонам доступности с оптимальной балансировкой. |
OnAllTasksComplete
Действие, которое должна предпринять пакетная служба, когда все задачи в задании находятся в завершенном состоянии.
Имя | Тип | Описание |
---|---|---|
бездействие | Ничего не делать. Задание остается активным, пока не будет прекращено или отключено каким-либо другим способом. | |
прекратить работу | Прекратить работу.Для terminateReason задания установлено значение «AllTasksComplete». |
OSDisk
Параметры для диска операционной системы вычислительного узла (ВМ).
Имя | Тип | Описание |
---|---|---|
ephemeralOSDiskSettings | Задает временные параметры диска для диска операционной системы, используемого вычислительным узлом (ВМ). |
PoolEndpointConfiguration
Конфигурация конечной точки для пула.
Имя | Тип | Описание |
---|---|---|
inboundNATPools | Список входящих пулов NAT, которые могут использоваться для внешней адресации определенных портов на отдельном вычислительном узле. |
Информация о пуле
Указывает, как задание должно быть назначено пулу.
Имя | Тип | Описание |
---|---|---|
autoPoolSpecification | Характеристики временного «автомобильного пула». Пакетная служба создаст этот автоматический пул при отправке задания. | |
poolId | Идентификатор существующего пула. Все задачи задания будут выполняться в указанном пуле. |
PoolLifetimeOption
Минимальное время жизни созданных автоматических пулов и то, как несколько заданий по расписанию назначаются пулам.
Имя | Тип | Описание |
---|---|---|
работа | Пул существует в течение всего срока действия задания, которому он посвящен. Пакетная служба создает пул при создании задания. Если параметр «задание» применяется к расписанию заданий, пакетная служба создает новый автоматический пул для каждого задания, созданного в расписании. | |
график работы | Пул существует в течение всего срока действия расписания заданий.Пакетная служба создает пул при создании первого задания по расписанию. Вы можете применить эту опцию только к расписаниям работ, но не к вакансиям. |
Бассейн Спецификация
Спецификация для создания нового пула.
Имя | Тип | Описание |
---|---|---|
applicationLicenses | Список лицензий приложений, которые пакетная служба сделает доступными на каждом вычислительном узле в пуле. | |
applicationPackageReferences | Список пакетов, которые должны быть установлены на каждом вычислительном узле в пуле. | |
autoScaleEvaluationInterval | Интервал времени, через который автоматически настраивается размер пула в соответствии с формулой автомасштабирования. | |
autoScaleFormula | Формула для желаемого количества вычислительных узлов в пуле. | |
сертификатСсылки | Список сертификатов, которые должны быть установлены на каждом вычислительном узле в пуле. | |
cloudServiceConfiguration | Конфигурация облачной службы для пула. | |
отображаемое имя | Отображаемое имя пула. | |
enableAutoScale | Должен ли размер пула автоматически изменяться с течением времени. | |
enableInterNodeCommunication | Разрешает ли пул прямую связь между вычислительными узлами. | |
метаданные | Список пар имя-значение, связанных с пулом в качестве метаданных. | |
mountConfiguration | Список файловых систем для монтирования на каждом узле пула. | |
конфигурация сети | Конфигурация сети для пула. | |
resizeTimeout | Тайм-аут для выделения вычислительных узлов пулу. | |
startTask | Задача, запускаемая на каждом вычислительном узле при присоединении к пулу. Задача запускается, когда вычислительный узел добавляется в пул или когда вычислительный узел перезапускается. | |
targetDedicatedNodes | Требуемое количество выделенных вычислительных узлов в пуле. | |
targetLowPriorityNodes | Требуемое количество низкоприоритетных вычислительных узлов в пуле. | |
taskSchedulingPolicy | Как задачи распределяются по вычислительным узлам в пуле. | |
taskSlotsPerNode | Количество слотов задач, которые можно использовать для одновременного выполнения задач на одном вычислительном узле в пуле. | |
учетные записи пользователей | Список учетных записей пользователей, которые необходимо создать на каждом вычислительном узле в пуле. | |
virtualMachineConfiguration | Конфигурация виртуальной машины для пула. | |
vmSize | Размер виртуальных машин в пуле. Все виртуальные машины в пуле имеют одинаковый размер. |
PublicIPAddressConfiguration
Конфигурация общедоступного IP-адреса сетевой конфигурации пула.
Имя | Тип | Описание |
---|---|---|
ipAddressIds | Список общедоступных IP-адресов, которые пакетная служба будет использовать при инициализации вычислительных узлов. | |
обеспечение | Тип предоставления общедоступных IP-адресов для пула. |
ResourceFile
Один или несколько файлов для загрузки на вычислительный узел.
Имя | Тип | Описание |
---|---|---|
autoStorageContainerName | Имя контейнера хранения в Учетной записи автоматического хранения. | |
blobPrefix | Префикс большого двоичного объекта, используемый при загрузке больших двоичных объектов из контейнера хранилища Azure.Будут загружены только большие двоичные объекты, имена которых начинаются с указанного префикса. | |
fileMode | Атрибут режима разрешения файла в восьмеричном формате. | |
Путь файла | Расположение на вычислительном узле, куда загружаются файлы, относительно рабочего каталога Задачи. | |
httpUrl | URL-адрес файла для загрузки. | |
identityReference | Ссылка на назначенное пользователем удостоверение для использования для доступа к хранилищу BLOB-объектов Azure, указанное с помощью storageContainerUrl или httpUrl | |
storageContainerUrl | URL-адрес контейнера больших двоичных объектов в хранилище больших двоичных объектов Azure. |
StartTask
Задача, которая запускается, когда узел присоединяется к пулу в пакетной службе Azure или когда вычислительный узел перезагружается или повторно создается.
Имя | Тип | Описание |
---|---|---|
командная строка | Командная строка StartTask. | |
containerSettings | Параметры контейнера, под которым запускается StartTask. | |
environmentSettings | Список настроек переменных среды для StartTask. | |
maxTaskRetryCount | Максимальное количество повторных попыток Задачи. | |
resourceFiles | Список файлов, которые пакетная служба загрузит на вычислительный узел перед запуском командной строки. Список файлов ресурсов имеет максимальный размер. Когда максимальный размер превышен, запрос не будет выполнен, и код ошибки ответа будет RequestEntityTooLarge. В этом случае необходимо уменьшить размер коллекции ResourceFiles.Этого можно добиться с помощью файлов .zip, пакетов приложений или контейнеров Docker. | |
userIdentity | Идентификатор пользователя, под которым запускается StartTask. | |
waitForSuccess | Должна ли пакетная служба ждать успешного завершения StartTask (то есть выхода с кодом выхода 0) перед планированием любых задач на вычислительном узле. |
StorageAccountType
Тип учетной записи хранения для использования при создании дисков с данными.
Имя | Тип | Описание |
---|---|---|
premium_lrs | Диск с данными должен использовать локально избыточное хранилище премиум-класса. | |
standard_lrs | Диск с данными должен использовать стандартное локально избыточное хранилище. |
TaskContainerSettings
Параметры контейнера для Задачи.
Имя | Тип | Описание |
---|---|---|
containerRunOptions | Дополнительные параметры для команды создания контейнера. | |
imageName | Изображение, используемое для создания контейнера, в котором будет выполняться задача. | |
реестр | Частный реестр, содержащий образ контейнера. | |
рабочий каталог | Расположение рабочего каталога задачи контейнера. |
Политика планирования задач
Определяет, как задачи должны распределяться по вычислительным узлам.
Имя | Тип | Описание |
---|---|---|
nodeFillType | Как задачи распределяются по вычислительным узлам в пуле. |
Учетная запись пользователя
Свойства, используемые для создания пользователя, используемого для выполнения задач на узле пакетных вычислений Azure.
Имя | Тип | Описание |
---|---|---|
высотаLevel | Уровень повышения учетной записи пользователя. | |
linuxUserConfiguration | Конфигурация пользователя для учетной записи пользователя Linux. | |
имя | Имя учетной записи пользователя. | |
пароль | Пароль учетной записи пользователя. | |
windowsUserConfiguration | Конфигурация пользователя для учетной записи пользователя Windows. |
Идентификатор пользователя
Определение идентификатора пользователя, под которым выполняется Задача.
Имя | Тип | Описание |
---|---|---|
autoUser | Автоматический пользователь, от имени которого запускается Задача. | |
имя пользователя | Имя идентификатора пользователя, под которым выполняется Задача. |
VirtualMachineConfiguration
Конфигурация для вычислительных узлов в пуле на основе инфраструктуры виртуальных машин Azure.
Имя | Тип | Описание |
---|---|---|
containerConfiguration | Конфигурация контейнера для пула. | |
dataDisks | Конфигурация дисков данных, подключенных к вычислительным узлам в пуле. | |
diskEncryptionConfiguration | Конфигурация шифрования диска для пула. | |
расширения | Расширение виртуальной машины для пула. | |
imageReference | Ссылка на образ из Marketplace виртуальных машин Azure или настраиваемый образ виртуальной машины для использования. | |
тип лицензии | Тип локальной лицензии, которая будет использоваться при развертывании операционной системы. Windows_Server - локальная лицензия для Windows Server. Windows_Client - локальная лицензия предназначена для клиента Windows. | |
nodeAgentSKUId | Артикул агента пакетного вычислительного узла, который будет подготовлен на вычислительных узлах в пуле. | |
nodePlacementConfiguration | Конфигурация размещения узла для пула. | |
osDisk | Параметры для диска операционной системы виртуальной машины. | |
windowsConfiguration | Настройки операционной системы Windows на виртуальной машине. |
VMExtension
Конфигурация расширений виртуальной машины.
Имя | Тип | Описание |
---|---|---|
autoUpgradeMinorVersion | Указывает, должно ли расширение использовать более новую вспомогательную версию, если она доступна во время развертывания. Однако после развертывания расширение не будет обновлять второстепенные версии до повторного развертывания, даже если для этого свойства установлено значение true. | |
имя | Имя расширения виртуальной машины. | |
protectedSettings | Расширение может содержать или protectedSettings, или protectedSettingsFromKeyVault, или вообще не содержать защищенных настроек. | |
ProvisionAfterExtensions | Коллекция имён расширений. | |
издатель | Имя издателя обработчика расширений. | |
настройки | Общедоступные настройки расширения в формате JSON. | |
тип | Тип расширения. | |
typeHandlerVersion | Версия обработчика скрипта. |
Конфигурация Windows
Параметры операционной системы Windows, применяемые к виртуальной машине.
Имя | Тип | Описание |
---|---|---|
enableAutomaticUpdates | Включено ли автоматическое обновление на виртуальной машине. |
WindowsUserConfiguration
Свойства, используемые для создания учетной записи пользователя на вычислительном узле Windows.
Имя | Тип | Описание |
---|---|---|
loginMode | Режим входа в систему для пользователя |
заданий в Azure Pipelines и TFS - Azure Pipelines
- 24 минуты на чтение
В этой статье
Azure Pipelines | Azure DevOps Server 2020 | Сервер Azure DevOps 2019 | TFS 2018 | ТФС 2017
Примечание
В Microsoft Team Foundation Server (TFS) 2018 и предыдущих версиях конвейеры сборки и выпуска называются определениями , прогонов называются сборки , сервисных соединений называются сервисными конечными точками , этапы называются средами , и заданий называются фазами .
Вы можете разбить конвейер на рабочие места. У каждого конвейера есть как минимум одно задание. Задание - это последовательность шагов, которые выполняются последовательно как единое целое. Другими словами, задание - это наименьшая единица работы, которую можно запланировать для выполнения.
Вы можете организовать конвейер сборки или выпуска в рабочие места. У каждого конвейера есть как минимум одно задание. Задание - это последовательность шагов, которые выполняются последовательно как единое целое. Другими словами, задание - это наименьшая единица работы, которую можно запланировать для выполнения.
Примечание
Необходимо установить TFS 2018.2 для использования рабочих мест в процессах сборки. В TFS 2018 RTM вы можете использовать задания в процессах развертывания релизов.
Вы можете организовать конвейер выпуска в виде заданий. У каждого конвейера выпуска есть как минимум одно задание. В этой версии TFS задания не поддерживаются в конвейере сборки.
Примечание
Необходимо установить Обновление 2, чтобы использовать задания в конвейере выпуска в TFS 2017. Задания в конвейерах сборки доступны в Azure Pipelines, TFS 2018.2 и более новых версиях.
Определить отдельное задание
В простейшем случае конвейер выполняет одну задачу.В этом случае вам не нужно явно использовать ключевое слово job
, если вы не используете шаблон. Вы можете напрямую указать шаги в вашем YAML-файле.
В этом YAML-файле есть задание, которое выполняется агентом, размещенным в Microsoft, и выводит Hello world
.
бассейн:
vmImage: 'убунту-16.04'
шаги:
- bash: echo «Привет, мир»
Вы можете указать дополнительные свойства для этого задания. В этом случае вы можете использовать ключевое слово job
.
вакансий:
- работа: myJob
timeoutInMinutes: 10
бассейн:
vmImage: 'убунту-16.04'
шаги:
- bash: echo «Привет, мир»
В вашем конвейере может быть несколько заданий. В этом случае используйте ключевое слово jobs
.
вакансий:
- работа: A
шаги:
- bash: эхо «А»
- работа: B
шаги:
- bash: эхо "B"
Ваш конвейер может состоять из нескольких этапов, на каждом из которых может быть несколько заданий. В этом случае используйте ключевое слово stage
.
ступеней:
- этап: А
вакансии:
- работа: А1
- работа: A2
- этап: B
вакансии:
- работа: B1
- работа: B2
Полный синтаксис для указания задания:
- задание: строка # название задания, A-Z, a-z, 0-9 и подчеркивание
displayName: string # понятное имя для отображения в пользовательском интерфейсе
зависит от: строка | [ нить ]
условие: строка
стратегия:
parallel: # параллельная стратегия
матрица: # матричная стратегия
maxParallel: number # максимальное количество одновременных участков матрицы для запуска
# примечание: `parallel` и` matrix` исключают друг друга
# вы можете указать одно или другое; включая оба - ошибка
# `maxParallel` действительно только с` matrix`
continueOnError: boolean # 'true', если будущие задания должны выполняться, даже если это задание завершилось ошибкой; по умолчанию false
pool: pool # пул агентов
рабочая среда:
чистый: выходы | ресурсы | all # что убрать перед запуском задания
container: containerReference # контейнер для запуска этого задания внутри
timeoutInMinutes: number # сколько времени нужно выполнять до автоматической отмены
cancelTimeoutInMinutes: number # сколько времени дать 'запускать всегда, даже если задачи отменены', прежде чем их убивать
переменные: {строка: строка} | [переменная | variableReference]
шаги: [сценарий | баш | pwsh | PowerShell | оформление заказа | задача | templateReference]
услуги: {строка: строка | container} # ресурсы контейнера для запуска в качестве контейнера службы
Полный синтаксис для указания задания:
- задание: строка # название задания, A-Z, a-z, 0-9 и подчеркивание
displayName: string # понятное имя для отображения в пользовательском интерфейсе
зависит от: строка | [ нить ]
условие: строка
стратегия:
parallel: # параллельная стратегия
матрица: # матричная стратегия
maxParallel: number # максимальное количество одновременных участков матрицы для запуска
# примечание: `parallel` и` matrix` исключают друг друга
# вы можете указать одно или другое; включая оба - ошибка
# `maxParallel` действительно только с` matrix`
continueOnError: boolean # 'true', если будущие задания должны выполняться, даже если это задание завершилось ошибкой; по умолчанию false
pool: pool # пул агентов
рабочая среда:
чистый: выходы | ресурсы | all # что убрать перед запуском задания
container: containerReference # контейнер для запуска этого задания внутри
timeoutInMinutes: number # сколько времени нужно выполнять до автоматической отмены
cancelTimeoutInMinutes: number # сколько времени дать 'запускать всегда, даже если задачи отменены', прежде чем их убивать
переменные: {строка: строка} | [переменная | variableReference]
шаги: [сценарий | баш | pwsh | PowerShell | оформление заказа | задача | templateReference]
услуги: {строка: строка | container} # ресурсы контейнера для запуска в качестве контейнера службы
использует: # Любые ресурсы (репозитории или пулы), необходимые для этого задания, которые еще не упоминаются
репозитории: [строка] # ссылки на репозитории Azure Git
пулы: [строка] # Имена пулов, обычно при использовании матричной стратегии для задания
Если основной целью вашей работы является развертывание приложения (а не сборка или тестирование приложения), вы можете использовать специальный тип задания, называемый задание развертывания .
Синтаксис задания развертывания:
- развертывание: строка # вместо ключевого слова задания, используйте ключевое слово развертывания
бассейн:
имя: строка
требования: строка | [ нить ]
среда: строка
стратегия:
runOnce:
развертывать:
шаги:
- скрипт: echo Привет!
Хотя вы можете добавить шаги для задач развертывания в задание
, мы рекомендуем вместо этого использовать задание развертывания. У задания по развертыванию есть несколько преимуществ. Например, вы можете выполнить развертывание в среде, которая включает такие преимущества, как возможность видеть историю того, что вы развернули.
YAML не поддерживается в этой версии TFS.
Чтобы добавить задания в конвейер сборки, отредактируйте конвейер на странице «Конвейеры». Выберите ... , чтобы добавить задание.
Чтобы добавить задания в конвейер выпуска, отредактируйте конвейер из Конвейеры > Выпуски . Просмотрите этапные задачи на этапе, на котором вы хотите добавить свою работу. Выберите ... , чтобы добавить задание.
Виды работ
Задания могут быть разных типов в зависимости от того, где они выполняются.
- Задания пула агентов выполняются на агенте в пуле агентов.
- Серверные задания выполняются на сервере Azure DevOps.
- Задания контейнера выполняются в контейнере агента в пуле агентов. Дополнительные сведения о выборе контейнеров см. В разделе Определение заданий контейнера.
- Задания пула агентов выполняются на агенте в пуле агентов.
- Серверные задания выполняются на сервере Azure DevOps.
- Задания группы развертывания выполняются на машинах в группе развертывания.Эти задания доступны только в конвейере выпуска. Дополнительные сведения об определении групп целевых серверов для развертывания см. В разделе Задания группы развертывания.
- Задания пула агентов выполняются на агенте в пуле агентов.
- Серверные задания выполняются на сервере Azure DevOps.
- Задания пула агентов выполняются на агенте в пуле агентов.
- Серверные задания выполняются на сервере Azure DevOps.
- Задания группы развертывания выполняются на машинах в группе развертывания.Эти задания доступны только в конвейере выпуска.
- Задания пула агентов выполняются на агенте в пуле агентов. Эти задания доступны в конвейерах сборки и выпуска.
- Серверные задания выполняются в TFS. Эти задания доступны в конвейерах сборки и выпуска.
- Задания группы развертывания выполняются на машинах в группе развертывания. Эти задания доступны только в конвейерах выпуска.
- Задания пула агентов выполняются на агенте в пуле агентов.Эти задания доступны только в конвейерах выпуска.
Вакансий пула агентов
Это наиболее распространенный тип заданий, выполняемых агентом в пуле агентов.
- При использовании агентов, размещенных на сервере Microsoft, каждое задание в конвейере получает новый агент.
- Используйте требования с автономными агентами, чтобы указать, какими возможностями должен обладать агент для выполнения вашего задания. Вы можете получить одного и того же агента для последовательных заданий в зависимости от того, есть ли в вашем пуле агентов более одного агента, который соответствует требованиям вашего конвейера.Если в вашем пуле есть только один агент, который соответствует требованиям конвейера, конвейер будет ждать, пока этот агент не станет доступным.
Примечание
Требования и возможности предназначены для использования с автономными агентами, поэтому задания могут быть сопоставлены с агентом, который соответствует требованиям работы. При использовании агентов, размещенных в Microsoft, вы выбираете образ для агента, который соответствует требованиям работы, поэтому, хотя можно добавить возможности для агента, размещенного на сервере Microsoft, вам не нужно использовать возможности с агентами, размещенными на сервере Microsoft.
бассейн:
name: myPrivateAgents # ваша работа выполняется на агенте в этом пуле
Требования: agent.os -equals Windows_NT # агент должен иметь эту возможность для выполнения задания
шаги:
- скрипт: эхо привет, мир
Или несколько запросов:
бассейн:
имя: myPrivateAgents
требования:
- agent.os - равно Дарвину
- anotherCapability - равно somethingElse
шаги:
- скрипт: эхо привет, мир
YAML еще не поддерживается в TFS.
У вас есть возможность указать потребности в конвейере, в заданиях или в обоих.Если вы указываете потребности как в конвейере, так и в задании, для выбора агента системе потребуется объединение двух наборов требований.
Узнайте больше о возможностях агента.
Серверные вакансии
Задачи в задании сервера организуются и выполняются на сервере (Azure Pipelines или TFS). Серверное задание не требует агента или каких-либо целевых компьютеров. В настоящее время серверное задание поддерживает лишь несколько задач.
Задания без агента Поддерживаемые задачи
В настоящее время для заданий без агента из коробки поддерживаются только следующие задачи:
Поскольку задачи являются расширяемыми, вы можете добавлять дополнительные задачи без агентов с помощью расширений.Тайм-аут по умолчанию для заданий без агента составляет 60 минут.
Полный синтаксис для указания задания сервера:
вакансий:
- работа: строка
timeoutInMinutes: число
cancelTimeoutInMinutes: число
стратегия:
maxParallel: число
матрица: {строка: {строка: строка}}
пул: сервер
Вы также можете использовать упрощенный синтаксис:
вакансий:
- работа: строка
пул: сервер
YAML еще не поддерживается в TFS.
Вы добавляете серверное задание в редактор, выбирая '... 'на канале Pipeline на вкладке Tasks конвейера. Свойства задания сервера отображаются при выборе задания в редакторе.
Серверные задания не поддерживаются в этой версии TFS.
Зависимости
Когда вы определяете несколько заданий на одном этапе, вы можете указать зависимости между ними. Конвейеры должны содержать хотя бы одно задание без зависимостей.
Примечание
Каждый агент может одновременно запускать только одно задание.Для параллельного выполнения нескольких заданий необходимо настроить несколько агентов. Вам также потребуется достаточное количество параллельных работ.
Синтаксис для определения нескольких заданий и их зависимостей:
вакансий:
- работа: строка
зависит от: строка
условие: строка
Примеры заданий, которые строятся последовательно:
вакансий:
- задание: Отладка
шаги:
- скрипт: эхо-привет из сборки отладки
- работа: Релиз
зависит от: Отладка
шаги:
- скрипт: эхо-привет из сборки Release
Примеры заданий, которые строятся параллельно (без зависимостей):
вакансий:
- работа: Windows
бассейн:
vmImage: 'vs2017-win2016'
шаги:
- скрипт: эхо-привет из Windows
- работа: macOS
бассейн:
vmImage: 'macOS-10.14 '
шаги:
- скрипт: эхо-привет из macOS
- работа: Linux
бассейн:
vmImage: 'убунту-16.04'
шаги:
- скрипт: эхо привет из Linux
Пример разветвления:
вакансий:
- работа: InitialJob
шаги:
- скрипт: эхо-привет из начальной работы
- работа: SubsequentA
зависит от: InitialJob
шаги:
- скрипт: эхо-привет от последующего A
- работа: SubsequentB
зависит от: InitialJob
шаги:
- скрипт: эхо-привет от последующего B
Пример разветвления:
вакансий:
- работа: InitialA
шаги:
- скрипт: эхо привет от начального A
- работа: InitialB
шаги:
- скрипт: эхо привет от начального B
- работа: Последующая
зависит от:
- InitialA
- InitialB
шаги:
- скрипт: эхо-привет от последующих
СборкиYAML пока недоступны для TFS.
Чтобы добавить новое задание, выберите «...» в канале конвейера на вкладке Задачи конвейера. Условия и порядок выполнения задания отображаются при выборе задания в редакторе.
Когда вы указываете несколько заданий в конвейере сборки, по умолчанию они выполняются параллельно. Вы можете указать порядок, в котором задания должны выполняться, настроив зависимости между заданиями. Зависимости заданий не поддерживаются в конвейерах выпуска. Несколько заданий в конвейере выпуска выполняются последовательно.
Несколько заданий, которые вы добавляете в конвейер сборки или выпуска, выполняются последовательно. Вы не можете настроить порядок зависимостей между заданиями в этой версии TFS.
Несколько заданий, которые вы добавляете в конвейер выпуска, запускаются последовательно. Вы не можете настроить порядок зависимостей между заданиями в этой версии TFS. Вы также не можете использовать задания с конвейерами сборки.
Например, показанный ниже конвейер делит общий выпуск выполнение в отдельные задания выполнения с использованием двух заданий агента и серверная работа.
В приведенном выше примере:
Задачи в первом задании выпуска выполняются на агенте и после того, как эта работа будет завершена, агент будет освобожден.
Задание сервера содержит задачу ручного вмешательства который работает в Azure Pipelines или TFS. Задание не выполняется и не требует агента или каких-либо целевых серверов. Задача ручного вмешательства отображает свое сообщение и ожидает "возобновить" или "отклонить" ответ пользователя. В этом примере, если истечет установленный тайм-аут, задача будет автоматически отклонить развертывание (установите тайм-аут в разделе параметров управления равным нулю, если вы не хотите, чтобы генерировался автоматический ответ).
Если выпуск возобновлен, задачи в третьем задании выполняются - возможно, на другом агенте. Если выпуск отклонен, это задание не выполняется, и выпуск помечен как неудачный.
Важно понимать некоторые последствия поэтапное исполнение:
Каждое задание может использовать разные агенты. Не думайте, что состояние из более раннего работа доступна во время последующих работ.
Продолжить при ошибке и Всегда запускать параметры для задачи в каждой работе не влияют на задачи в последующие работы.Например, установка Всегда запускать для задачи в конце первого задания будет не гарантирует, что задачи в последующих заданиях будут выполняться.
Условия
Вы можете указать условия, при которых будет выполняться каждое задание. По умолчанию задание запускается, если оно не зависит от других заданий или если все задания, от которых оно зависит, завершены и успешно выполнены. Вы можете настроить это поведение, принудительно запустив задание даже в случае сбоя предыдущего задания или указав настраиваемое условие.
Пример запуска задания на основе статуса выполнения предыдущего задания:
вакансий:
- работа: A
шаги:
- сценарий: выход 1
- работа: B
зависит от: A
условие: не удалось ()
шаги:
- скрипт: эхо, это будет запускаться, когда A терпит неудачу
- работа: C
зависит от:
- А
- В
условие: выполнено успешно ('B')
шаги:
- script: echo, это будет запускаться, когда B запускается и преуспевает
Пример использования специального условия:
вакансий:
- работа: A
шаги:
- скрипт: эхо привет
- работа: B
зависит от: A
условие: и (выполнено успешно (), уравнение (переменные ['build.sourceBranch '],' refs / heads / master '))
шаги:
- script: echo, это работает только для мастера
Вы можете указать, что задание запускается на основе значения выходной переменной, установленной в предыдущем задании. В этом случае вы можете использовать только переменные, установленные в напрямую зависимых заданиях:
вакансий:
- работа: A
шаги:
- сценарий: "echo ## vso [task.setvariable variable = skipsubsequent; isOutput = true] false"
имя: printvar
- работа: B
condition: and (success (), ne (dependencies.A.outputs ['printvar.skipsubsequent '],' истина '))
зависит от: A
шаги:
- скрипт: эхо привет от B
СборкиYAML пока недоступны для TFS.
Используйте параметр Запустить это задание в задании агента или сервера для выполнения задач. только при соблюдении определенных условий. Выберите предопределенный условие или выберите "custom" и введите выражение, которое оценивает к истинно или ложно . Могут использоваться вложенные выражения, а выражения могут обращаться к переменным, доступным в конвейере выпуска.
Условия не поддерживаются в этой версии TFS.
Таймауты
Чтобы избежать использования ресурсов, когда задание не отвечает или слишком долго находится в режиме ожидания, рекомендуется установить ограничение на время, в течение которого задание может выполняться. Используйте параметр тайм-аута задания, чтобы указать ограничение в минутах для выполнения задания. Установка значения ноль означает, что задание может выполняться:
- Навсегда на собственных агентах
- На 360 минут (6 часов) на агентах, размещенных в Microsoft, с общедоступным проектом и общедоступным репозиторием
- На 60 минут на агентах, размещенных в Microsoft, с частным проектом или частным репозиторием (если не оплачена дополнительная мощность)
Период ожидания начинается при запуске задания.Он не включает время, когда задание поставлено в очередь или ожидает агента.
timeoutInMinutes
позволяет установить предел времени выполнения задания. Если не указано иное, значение по умолчанию составляет 60 минут. Если указан 0
, используется максимальный предел (описанный выше).
cancelTimeoutInMinutes
позволяет установить ограничение на время отмены задания, когда задача развертывания настроена на продолжение выполнения в случае сбоя предыдущей задачи. Если не указано иное, значение по умолчанию составляет 5 минут.Значение должно быть в диапазоне от 1 до 35790 минут.
вакансий:
- работа: Тест
timeoutInMinutes: 10 # как долго запускать задание до автоматической отмены
cancelTimeoutInMinutes: 2 # сколько времени дать 'запускать всегда, даже если задачи отменены' перед их остановкой
YAML еще не поддерживается в TFS.
Выберите задание и укажите значение тайм-аута.
На вкладке «Параметры» можно указать значения по умолчанию для всех заданий в конвейере.Если вы укажете ненулевое значение для тайм-аута задания, оно переопределит любое значение, указанное в параметрах конвейера. Если вы указываете нулевое значение, то используется значение тайм-аута из параметров конвейера. Если значение конвейера также установлено равным нулю, то таймаута нет.
Вы также можете установить тайм-аут для каждой задачи индивидуально - см. Параметры управления задачами.
Многозадачная конфигурация
Из одного созданного вами задания вы можете запускать несколько заданий на нескольких агентах параллельно.Некоторые примеры включают:
Сборки с несколькими конфигурациями: Вы можете создавать несколько конфигураций параллельно. Для Например, вы можете создать приложение Visual C ++ для конфигураций
debug
иrelease
на платформахx86
иx64
. Чтобы узнать больше, см. Visual Studio Build - несколько конфигураций для нескольких платформ.Развертывания с несколькими конфигурациями: Можно запустить несколько развертываний параллельно, например, в разные географические регионы.
Тестирование нескольких конфигураций: Вы можете запустить тестирование нескольких конфигураций параллельно.
Матрица Стратегия
позволяет выполнять задание несколько раз с разными наборами переменных. Тег maxParallel
ограничивает степень параллелизма. Следующее задание будет отправлено три раза с указанными значениями Location и Browser. Однако одновременно будут выполняться только два задания.
вакансий:
- работа: Тест
стратегия:
maxParallel: 2
матрица:
US_IE:
Расположение: США
Браузер: IE
US_Chrome:
Расположение: США
Браузер: Chrome
Европа_Хром:
Расположение: Европа
Браузер: Chrome
Примечание
Имена конфигурации матрицы (например, US_IE
выше) должны содержать только основные буквы латинского алфавита (A-Z, a-z), цифры и символы подчеркивания ( _
).Они должны начинаться с буквы.
Кроме того, они должны содержать не более 100 символов.
Также можно использовать выходные переменные для создания матрицы. Это может быть удобно, если вам нужно сгенерировать матрицу с помощью скрипта.
матрица
примет выражение времени выполнения, содержащее строковый объект JSON.
Этот объект JSON при раскрытии должен соответствовать синтаксису матричного преобразования.
В приведенном ниже примере мы жестко запрограммировали строку JSON, но она может быть сгенерирована языком сценариев или программой командной строки.
вакансий:
- работа: генератор
шаги:
- bash: echo "## vso [task.setVariable variable = legs; isOutput = true] {'a': {'myvar': 'A'}, 'b': {'myvar': 'B'}}"
имя: mtrx
# Это расширяется до матрицы
# а:
# myvar: A
# b:
# myvar: B
- работа: бегун
зависит от: генератор
стратегия:
матрица: $ [dependencies.generator.outputs ['mtrx.legs']]
шаги:
- script: echo $ (myvar) # отображает A или B в зависимости от того, какая нога работает
YAML не поддерживается в TFS.
Для выполнения нескольких заданий с использованием опции мультиконфигурации, вы определяете переменную с именем , множитель и указываете список значений этого множителя. Для каждого значения выполняется отдельное задание в списке. Чтобы использовать множители для сборки или развертывания, необходимо:
Определите одну или несколько переменных на вкладке Переменные конвейера или в группе переменных. Каждая переменная, известная в этом контексте как переменная умножителя , должен быть определен как список значений, разделенных запятыми, которые вы хотите переходить индивидуально к агентам.
Введите имя переменной множителя без $ и круглых скобок, как значение параметра Multipliers . Использование секретной переменной в качестве переменной множителя не поддерживается.
Если вы хотите выполнить задание для нескольких переменных множителя, введите имена переменных в виде списка с разделителями-запятыми - без $ и круглых скобок для каждого.
Если вы хотите ограничить количество агентов, используемых во время развертывания, одним число меньше, чем вы настроили для своей подписки, введите это значение как Максимальное количество агентов параметр.
Например, вы можете определить две переменные с именами Location и Browser следующим образом:
- Местоположение =
США, Европа
- Браузер =
IE, Chrome, Edge, Firefox
Следующая конфигурация выполнит развертывание восемь раз с использованием максимум четыре агента одновременно:
- Множители =
Местоположение, браузер
- Максимальное количество агентов =
4
При использовании нескольких конфигураций вы можете запускать несколько заданий, каждое с разными значениями для одной или нескольких переменных (множителей).Если вы хотите запустить одно и то же задание на нескольких агентах, вы можете использовать опцию параллелизма с несколькими агентами и . Приведенный выше пример нарезки теста может быть выполнен с помощью опции мультиагентности.
Нарезка
Задание агента может использоваться для параллельного запуска набора тестов. Например, вы можете запустить большой набор из 1000 тестов на одном агенте. Или вы можете использовать два агента и запустить 500 тестов на каждом параллельно.
Чтобы использовать срезы, задачи в работе должны быть достаточно умными, чтобы понимать срез, к которому они принадлежат.
Задача Visual Studio Test - одна из таких задач, которая поддерживает срезы тестов. Если вы установили несколько агентов, вы можете указать, как задача Visual Studio Test будет выполняться параллельно на этих агентах.
Стратегия параллельный
позволяет многократно дублировать задание.
Переменные System.JobPositionInPhase
и System.TotalJobsInPhase
добавляются к каждому заданию. Затем переменные можно использовать в ваших сценариях для разделения работы между заданиями.См. Параллельное и множественное выполнение с использованием заданий агента.
Следующее задание будет отправлено пять раз с соответствующими значениями System.JobPositionInPhase
и System.TotalJobsInPhase
.
вакансий:
- работа: Тест
стратегия:
параллельно: 5
YAML еще не поддерживается в TFS.
Укажите опцию с несколькими агентами для задания агента, чтобы использовать срезы.
Задание отправляется столько раз, сколько агентов вы укажете,
и переменные System.JobPositionInPhase
и System.TotalJobsInPhase
автоматически устанавливаются в каждом задании.
Переменные задания
Если вы используете YAML, в задании можно указать переменные. Переменные могут быть переданы на вход задачи с помощью синтаксиса макроса $ (variableName) или доступны в сценарии с помощью переменной stage.
Вот пример определения переменных в задании и их использования в задачах.
переменных:
mySimpleVar: простое значение переменной
"мой.dotted.var ": значение var, разделенное точками
"мой var с пробелами": var с пробелами значение
шаги:
- скрипт: echo Input macro = $ (mySimpleVar). Env var =% MYSIMPLEVAR%
условие: eq (переменные ['agent.os'], 'Windows_NT')
- скрипт: echo Input macro = $ (mySimpleVar). Env var = $ MYSIMPLEVAR
условие: in (переменные ['agent.os'], 'Дарвин', 'Linux')
- bash: echo Input macro = $ (my.dotted.var). Env var = $ MY_DOTTED_VAR
- powershell: Write-Host «Входной макрос = $ (моя переменная с пробелами). Env var = $ env: MY_VAR_WITH_SPACES»
YAML еще не поддерживается в TFS.
Переменные задания еще не поддерживаются в веб-редакторе.
Для получения информации об использовании условия см. Определение условий.
Рабочее пространство
Когда вы запускаете задание пула агентов, оно создает рабочее пространство на агенте. Рабочее пространство - это каталог, в котором он загружает исходный код, выполняет шаги и производит выходные данные. На каталог рабочей области можно ссылаться в вашем задании с помощью переменной Pipeline.Workspace
. При этом создаются различные подкаталоги:
Когда вы запускаете задание пула агентов, оно создает рабочее пространство на агенте.Рабочее пространство - это каталог, в котором он загружает исходный код, выполняет шаги и производит выходные данные. На каталог рабочей области можно ссылаться в вашем задании с помощью переменной Agent.BuildDirectory
. При этом создаются различные подкаталоги:
-
Build.SourcesDirectory
- это место, куда задачи загружают исходный код приложения. -
Build.ArtifactStagingDirectory
- это место, где задачи загружают артефакты, необходимые для конвейера, или загружают артефакты перед их публикацией. -
Build.BinariesDirectory
- это каталог, в который задачи записывают свои выходные данные. -
Common.TestResultsDirectory
- это то место, куда задачи загружают результаты своих тестов.
Когда вы запускаете конвейер на локальном агенте , по умолчанию ни один из подкаталогов не очищается между двумя последовательными запусками. В результате вы можете выполнять инкрементные сборки и развертывания при условии, что задачи реализованы так, чтобы использовать это. Вы можете переопределить это поведение, используя настройку рабочего пространства
в задании.
Важно
Параметры очистки рабочего пространства применимы только для локальных агентов. При использовании агентов, размещенных на сервере Microsoft, задание всегда запускается на новом агенте.
- работа: myJob
рабочая среда:
чистый: выходы | ресурсы | all # что убрать перед запуском задания
Когда вы указываете одну из опций clean
, они интерпретируются следующим образом:
-
выводит
: УдалитеBuild.BinariesDirectory
перед запуском нового задания. -
ресурсов
: УдалитеBuild.SourcesDirectory
перед запуском нового задания. -
все
: удалить весь каталогPipeline.Workspace
перед запуском нового задания.
$ (Build.ArtifactStagingDirectory)
и $ (Common.TestResultsDirectory)
всегда удаляются и воссоздаются перед каждой сборкой независимо от любого из этих параметров.
вакансий:
- развертывание: развертывание
бассейн:
vmImage: 'Ubuntu-16.04 '
рабочая среда:
чистый: все
среда: постановка
Примечание
В зависимости от возможностей вашего агента и требований конвейера каждое задание может быть направлено другому агенту в вашем собственном пуле. В результате вы можете получить новый агент для последующих запусков конвейера (или этапов или заданий в том же конвейере), поэтому очистка , а не не является гарантией того, что последующие запуски, задания или этапы смогут получить доступ к выходным данным из предыдущих пробеги, задания или этапы. Вы можете настроить возможности агента и требования конвейера, чтобы указать, какие агенты используются для выполнения задания конвейера, но если в пуле нет только одного агента, который удовлетворяет требованиям, нет гарантии, что последующие задания будут использовать тот же агент, что и предыдущие. рабочие места.Для получения дополнительной информации см. Определение требований.
В дополнение к очистке рабочего пространства вы также можете настроить очистку, настроив параметр Очистить в пользовательском интерфейсе настроек конвейера. Когда для параметра Clean установлено значение true , это эквивалентно указанию clean: true
для каждого шага проверки в конвейере. Чтобы настроить параметр Clean :
Отредактируйте конвейер, выберите ... и выберите Триггеры .
Выберите YAML , Получите источники и настройте желаемый параметр Очистить . По умолчанию false .
YAML еще не поддерживается в TFS.
Когда вы запускаете конвейер на локальном агенте, по умолчанию ни один из подкаталогов не очищается между двумя последовательными запусками. В результате вы можете запускать инкрементные сборки и развертывания при условии, что для этого реализованы задачи.Однако вы можете переопределить это поведение с помощью параметра Очистить сборку
в задаче Получить источники
. Параметры различаются в зависимости от типа репозитория, который вы используете.
Артефакт скачать
Этот пример файла YAML публикует артефакт WebSite
, а затем загружает артефакт в $ (Pipeline.Workspace)
. Задание развертывания выполняется только в том случае, если задание сборки выполнено успешно.
# протестировать и загрузить мой код как артефакт с именем WebSite
вакансии:
- работа: Сборка
бассейн:
vmImage: 'ubuntu-16.04 '
шаги:
- скрипт: npm test
- задача: PublishBuildArtifacts @ 1
входы:
pathtoPublish: '$ (System.DefaultWorkingDirectory)'
artifactName: WebSite
# скачать артефакт и развернуть его, только если сборка прошла успешно
- задание: Развернуть
бассейн:
vmImage: 'убунту-16.04'
шаги:
- checkout: none # пропустить проверку ресурса репозитория по умолчанию
- задача: DownloadBuildArtifacts @ 0
displayName: 'Загрузить артефакты сборки'
входы:
artifactName: WebSite
downloadPath: $ (System.DefaultWorkingDirectory)
зависит от: Сборка
условие: выполнено успешно ()
YAML еще не поддерживается в TFS.
В конвейере выпуска вы можете пропустить загрузка артефактов во время выполнения работы. Используйте эту опцию, если хотите реализовать ваша собственная настраиваемая логика для загрузки артефактов с помощью задач, или если задачи в конкретном задании не зависят от артефактов.
Кроме того, вы можете выбрать загрузку определенных артефактов во время выполнения задания в выпуске.Используйте эту опцию, если задачи в конкретном задании полагаются только на определенные артефакты.
Сведения об использовании в зависимости от и условия см. В разделе Определение условий.
Доступ к токену OAuth
Вы можете разрешить скриптам, выполняющимся в задании, получить доступ к текущему токену безопасности Azure Pipelines или TFS OAuth. Маркер можно использовать для аутентификации в REST API Azure Pipelines.
Токен OAuth всегда доступен конвейерам YAML.Он должен быть явно сопоставлен с задачей или шагом с помощью env
.
Вот пример:
шагов:
- PowerShell: |
$ url = "$ ($ env: SYSTEM_TEAMFOUNDATIONCOLLECTIONURI) $ env: SYSTEM_TEAMPROJECTID / _apis / build / definitions / $ ($ env: SYSTEM_DEFINITIONID)? api-version = 4.1-preview"
Write-Host "URL: $ url"
$ pipeline = Invoke-RestMethod -Uri $ url -Headers @ {
Authorization = "Bearer $ env: SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $ ($ pipeline | ConvertTo-Json -Depth 100)"
env:
SYSTEM_ACCESSTOKEN: $ (system.accesstoken)
YAML еще не поддерживается в TFS.
Выберите Разрешить сценариям доступ к токену OAuth в параметрах управления заданием. Токен будет доступен как переменная окружения SYSTEM_ACCESSTOKEN
.
Что дальше?
лучших практик - пакет Azure
- 17 минут на чтение
В этой статье
В этой статье обсуждаются передовые практики и полезные советы по эффективному использованию пакетной службы Azure.Эти советы помогут повысить производительность и избежать ошибок при проектировании пакетных решений.
Бассейны
Пулы - это вычислительные ресурсы для выполнения заданий в пакетной службе. В следующих разделах представлены рекомендации по работе с пакетными пулами.
Конфигурация пула и наименование
Режим распределения пула: При создании учетной записи пакетной службы вы можете выбрать один из двух режимов распределения пула: Пакетное обслуживание или подписка пользователя .В большинстве случаев следует использовать режим пакетной службы по умолчанию, в котором пулы выделяются за кулисами в подписках, управляемых пакетной службой. В альтернативном режиме подписки пользователя пакетные виртуальные машины и другие ресурсы создаются непосредственно в вашей подписке при создании пула. Учетные записи подписки пользователей в основном используются для включения небольшого, но важного подмножества сценариев. Дополнительные сведения см. В разделе Дополнительная конфигурация для режима подписки пользователя.
virtualMachineConfiguration или cloudServiceConfiguration: Хотя в настоящее время вы можете создавать пулы, используя любую конфигурацию, новые пулы следует настраивать с помощью virtualMachineConfiguration, а не cloudServiceConfiguration.Все текущие и новые функции пакетной обработки будут поддерживаться пулами конфигурации виртуальных машин. Пулы конфигурации облачных сервисов не поддерживают все функции, и новых возможностей не планируется. Вы не сможете создавать новые пулы «cloudServiceConfiguration» или добавлять новые узлы в существующие пулы после 29 февраля 2024 г. Дополнительные сведения см. В разделе «Перенос конфигурации пула пакетной обработки из облачных служб в виртуальную машину».
Замечания по времени выполнения заданий и задач: Если у вас есть задания, состоящие в основном из краткосрочных задач, и ожидаемое общее количество задач невелико, так что общее ожидаемое время выполнения задания невелико, не выделяйте новый пул для каждой работы.Время выделения узлов уменьшит время выполнения задания.
Несколько вычислительных узлов: Не всегда гарантируется, что отдельные узлы будут всегда доступны. В редких случаях сбои оборудования, обновления операционной системы и множество других проблем могут привести к отключению отдельных узлов. Если ваша пакетная рабочая нагрузка требует детерминированного гарантированного прогресса, вам следует выделить пулы с несколькими узлами.
Изображения с приближающимся окончанием срока службы (EOL): Мы настоятельно рекомендуем избегать изображений с приближающимся сроком окончания срока службы пакетной поддержки (EOL).Эти даты можно узнать с помощью API
ListSupportedImages
, PowerShell или Azure CLI. Вы обязаны периодически обновлять представление о датах EOL, относящихся к вашим пулам, и переносить рабочие нагрузки до наступления даты EOL. Если вы используете настраиваемое изображение с указанным агентом узла, убедитесь, что вы соблюдаете даты окончания срока службы пакетной поддержки для изображения, для которого создано или выровнено ваше настраиваемое изображение.Уникальные имена ресурсов: Пакетные ресурсы (задания, пулы и т. Д.)) часто приходят и уходят со временем. Например, вы можете создать пул в понедельник, удалить его во вторник, а затем создать еще один аналогичный пул в четверг. Каждому новому ресурсу, который вы создаете, должно быть присвоено уникальное имя, которое вы раньше не использовали. Вы можете сделать это, используя GUID (либо как полное имя ресурса, либо как его часть) или вставив дату и время создания ресурса в имя ресурса. Пакетная служба поддерживает DisplayName, которое может дать ресурсу более удобочитаемое имя, даже если фактический идентификатор ресурса не удобен для человека.Использование уникальных имен упрощает определение того, какой конкретный ресурс что-то сделал в журналах и показателях. Это также устраняет двусмысленность, если вам когда-либо придется подавать заявку в службу поддержки для ресурса.
Непрерывность во время обслуживания пула и сбоя: Лучше всего, чтобы ваши задания использовали пулы динамически. Если ваши задания используют один и тот же пул для всего, есть вероятность, что задания не будут выполняться, если что-то пойдет не так с пулом. Это особенно важно для рабочих нагрузок, чувствительных ко времени.Чтобы исправить это, выберите или создайте пул динамически при планировании каждого задания или найдите способ переопределить имя пула, чтобы можно было обойти неработоспособный пул.
Непрерывность бизнеса во время обслуживания и сбоя пула: Существует множество причин, по которым пул не может вырасти до желаемого размера, например внутренние ошибки или ограничения емкости. При необходимости убедитесь, что вы можете переназначить задания в другом пуле (возможно, с другим размером виртуальной машины; пакетная служба поддерживает это через UpdateJob).Не полагайтесь на статический идентификатор пула, ожидая, что он никогда не будет удален и никогда не изменится.
Срок службы пула и выставление счетов
Время жизни пула может варьироваться в зависимости от метода распределения и параметров, применяемых к конфигурации пула. Пулы могут иметь произвольное время жизни и различное количество вычислительных узлов в любой момент времени. Вы несете ответственность за управление вычислительными узлами в пуле либо явно, либо с помощью функций, предоставляемых службой (автомасштабирование или автопул).
Актуальность пула: Обнуляйте размер пулов каждые несколько месяцев, чтобы получать последние обновления агента узла и исправления ошибок. Ваш пул не будет получать обновления агента узла, если он не будет воссоздан (или если его размер не будет изменен до 0 вычислительных узлов). Перед воссозданием или изменением размера пула необходимо загрузить все журналы агента узла для целей отладки, как описано в разделе «Узлы».
Восстановление бассейнов: Аналогичным образом, избегайте удаления и повторного создания бассейнов на ежедневной основе.Вместо этого создайте новый пул, а затем обновите существующие задания, чтобы они указывали на новый пул. Как только все задачи будут перемещены в новый пул, удалите старый пул.
Эффективность пула и выставление счетов: Сама пакетная обработка не требует дополнительных затрат, но вы несете плату за используемые вычислительные ресурсы. Вам выставляется счет за каждый вычислительный узел в пуле, независимо от того, в каком состоянии он находится. Сюда входят все расходы, необходимые для работы узла, такие как расходы на хранение и сетевые ресурсы.Дополнительные сведения см. В разделе Анализ затрат и бюджеты для пакетной службы Azure.
Ошибки выделения пула
Сбои при выделении пула могут произойти в любой момент во время первого выделения или последующих изменений размера. Это может быть связано с временной нехваткой ресурсов в регионе или сбоями в других службах Azure, на которых полагается пакетная служба. Ваша основная квота - это не гарантия, а ограничение.
Незапланированный простой
Для пулов пакетной службы могут возникать события простоя в Azure.Помните об этом при планировании и разработке сценария или рабочего процесса для пакетной обработки. Если узлы выходят из строя, пакетная служба автоматически пытается восстановить эти вычислительные узлы от вашего имени. Это может вызвать изменение расписания любой выполняющейся задачи на восстанавливаемом узле. Чтобы узнать больше о прерванных задачах, см. Разработка для повторных попыток.
Пулы пользовательских изображений
Когда вы создаете пул пакетной службы Azure с помощью конфигурации виртуальной машины, вы указываете образ виртуальной машины, который предоставляет операционную систему для каждого вычислительного узла в пуле.Вы можете создать пул с помощью поддерживаемого образа Azure Marketplace или создать собственный образ с помощью общей галереи изображений. Хотя вы также можете использовать управляемое изображение для создания пользовательского пула изображений, мы рекомендуем создавать пользовательские изображения с помощью общей галереи изображений, когда это возможно. Использование общей галереи изображений помогает быстрее выделять пулы, масштабировать большее количество виртуальных машин и повышать надежность при подготовке виртуальных машин.
Сторонние образы
Пулыможно создавать с использованием сторонних образов, опубликованных в Azure Marketplace.В режиме пользовательской подписки Пакетные учетные записи при создании пула с определенными сторонними изображениями могут отображаться с ошибкой «Распределение не удалось из-за проверки правомочности покупки на торговой площадке». Чтобы устранить эту ошибку, примите условия, установленные издателем изображения. Вы можете сделать это с помощью Azure PowerShell или Azure CLI.
Зависимость региона Azure
Не следует полагаться на один регион Azure, если у вас временная или производственная рабочая нагрузка. Редко, но есть проблемы, которые могут повлиять на весь регион.Например, если ваша обработка должна начаться в определенное время, рассмотрите возможность увеличения пула в вашем основном регионе задолго до времени начала . Если это масштабирование пула не удается, вы можете вернуться к масштабированию пула в резервной области (или регионах).
Пулы для нескольких учетных записей в разных регионах обеспечивают готовую, легкодоступную резервную копию, если что-то пойдет не так с другим пулом. Дополнительные сведения см. В разделе Разработка приложения для обеспечения высокой доступности.
Вакансий
Задание - это контейнер, предназначенный для хранения сотен, тысяч или даже миллионов задач.Следуйте этим рекомендациям при создании рабочих мест.
Меньше рабочих мест, больше задач
Использование задания для выполнения одной задачи неэффективно. Например, более эффективно использовать одно задание, содержащее 1000 задач, а не создавать 100 заданий, каждое из которых содержит 10 задач. Выполнение 1000 заданий, каждое из которых связано с одной задачей, будет наименее эффективным, самым медленным и самым дорогостоящим подходом.
По этой причине избегайте разработки пакетного решения, для которого требуются тысячи одновременно активных заданий.Квоты для задач нет, поэтому выполнение большого количества задач с минимальным количеством заданий позволяет эффективно использовать квоты вашего задания и расписания заданий.
Срок службы
Пакетное задание имеет неопределенный срок существования, пока оно не будет удалено из системы. Его состояние определяет, может ли он принимать больше задач для планирования или нет.
Задание не переходит автоматически в состояние завершения, если оно не завершено явным образом. Это может быть автоматически инициировано с помощью свойства onAllTasksComplete или maxWallClockTime.
Имеется активное задание и квота расписания заданий по умолчанию. Задания и расписания работ в завершенном состоянии не учитываются в этой квоте.
Задачи
Задачи - это отдельные единицы работы, составляющие работу. Задачи отправляются пользователем и планируются пакетной службой для вычислительных узлов. В следующих разделах представлены предложения по разработке задач для решения проблем и эффективного выполнения.
Сохранить данные задания
Вычислительные узлы по своей природе недолговечны.Пакетные функции, такие как автопул и автомасштабирование, могут упростить исчезновение узлов. Когда узлы покидают пул (из-за изменения размера или удаления пула), все файлы на этих узлах также удаляются. Из-за этого задача должна переместить свои выходные данные с узла, на котором она выполняется, в долговременное хранилище до завершения. Точно так же, если задача не удалась, она должна переместить журналы, необходимые для диагностики сбоя, в долговременное хранилище.
Batch имеет интегрированную поддержку службы хранилища Azure для отправки данных через OutputFiles, а также через различные общие файловые системы, или вы можете выполнять загрузку самостоятельно в своих задачах.
Управление временем существования задачи
Удалите задачи, когда они больше не нужны, или установите ограничение задачи retentionTime. Если установлено значение retentionTime
, пакетная служба автоматически очищает дисковое пространство, используемое задачей, когда истекает retentionTime
.
Удаление задач позволяет решить две задачи. Это гарантирует, что у вас не будет набора задач в работе, что может затруднить запрос / поиск задачи, которая вас интересует (потому что вам придется фильтровать завершенные задачи).Он также очищает соответствующие данные задачи на узле (при условии, что retentionTime
еще не достигнуто). Это помогает гарантировать, что ваши узлы не заполнятся данными задач и не исчерпают дисковое пространство.
Отправьте большое количество задач в коллекцию
Задания можно подавать индивидуально или коллекциями. Отправляйте задачи в коллекциях до 100 одновременно при массовой отправке задач, чтобы сократить накладные расходы и время отправки.
Установите максимальное количество задач для каждого узла соответствующим образом
Batch поддерживает задачи с превышением лимита подписки на узлах (выполняется больше задач, чем на узле имеется ядер).Вы должны убедиться, что ваши задачи «вписываются» в узлы вашего пула. Например, у вас может возникнуть ухудшение работы, если вы попытаетесь запланировать восемь задач, каждая из которых потребляет 25% использования ЦП на одном узле (в пуле с taskSlotsPerNode = 8
).
Дизайн для повторных попыток и повторного выполнения
Задачи могут быть автоматически повторены в пакетном режиме. Есть два типа повторных попыток: контролируемые пользователем и внутренние. Повторные попытки, контролируемые пользователем, задаются параметром maxTaskRetryCount задачи.Когда программа, указанная в задаче, завершается с ненулевым кодом выхода, задача повторяется до значения maxTaskRetryCount
.
Хотя это бывает редко, выполнение задачи может быть выполнено повторно из-за сбоев на вычислительном узле, таких как невозможность обновить внутреннее состояние или сбой на узле во время выполнения задачи. Задача будет повторена на том же вычислительном узле, если это возможно, до внутреннего предела, прежде чем отказаться от задачи и отложить выполнение задачи для повторного планирования пакетной службой, возможно, на другом вычислительном узле.
Нет никаких конструктивных различий при выполнении ваших задач на выделенных или низкоприоритетных узлах. Независимо от того, прерывается ли задача во время работы на узле с низким приоритетом или прерывается из-за сбоя на выделенном узле, обе ситуации смягчаются за счет разработки задачи, выдерживающей отказ.
Создавайте долговечные задачи
Задачи должны быть разработаны таким образом, чтобы выдерживать отказ и допускать повторные попытки. Это особенно важно для длительных задач. Для этого убедитесь, что задачи генерируют один и тот же результат, даже если они выполняются более одного раза.Один из способов добиться этого - сделать ваши задачи «целенаправленными». Другой способ - убедиться, что ваши задачи идемпотентны (задачи будут иметь одинаковый результат независимо от того, сколько раз они запускаются).
Типичный пример - это задача по копированию файлов на вычислительный узел. Простой подход - это задача, которая копирует все указанные файлы при каждом запуске, что неэффективно и не способно противостоять сбоям. Вместо этого создайте задачу, чтобы убедиться, что файлы находятся на вычислительном узле; задача, которая не копирует уже существующие файлы.Таким образом, задача возобновляется с того места, где она была остановлена, если она была прервана.
Избегайте короткого времени выполнения
Задачи, которые выполняются в течение одной-двух секунд, не идеальны. Постарайтесь выполнить значительный объем работы над индивидуальным заданием (минимум 10 секунд, до часов или дней). Если каждая задача выполняется в течение одной минуты (или более), то накладные расходы на планирование как часть общего времени вычислений невелики.
Используйте область пула для коротких задач на узлах Windows
При планировании задачи на узлах пакетной обработки вы можете выбрать, запускать ли ее с областью задачи или с областью пула.Если задача будет выполняться только в течение короткого времени, область задачи может быть неэффективной из-за ресурсов, необходимых для создания автоматической учетной записи пользователя для этой задачи. Для большей эффективности рассмотрите возможность установки этих задач в область пула. Дополнительные сведения см. В разделе Запуск задачи от имени автоматического пользователя с областью действия пула.
Узлы
Вычислительный узел - это виртуальная машина (ВМ) Azure или виртуальная машина облачной службы, выделенная для обработки части рабочей нагрузки вашего приложения. Следуйте этим рекомендациям при работе с узлами.
Идемпотентные стартовые задачи
Как и в случае с другими задачами, задача запуска узла должна быть идемпотентной, поскольку она будет запускаться повторно каждый раз при загрузке узла. Идемпотентная задача - это просто задача, которая дает стабильный результат при многократном выполнении.
Изолированные узлы
Рассмотрите возможность использования виртуальных машин изолированного размера для рабочих нагрузок, соответствующих нормативным или нормативным требованиям. Поддерживаемые изолированные размеры в режиме конфигурации виртуальной машины включают Standard_E80ids_v4
, Standard_M128ms
, Standard_F72s_v2
, Standard_G5
, Standard_GS5
и Standard_E64i_v3
.Дополнительные сведения о размерах изолированных виртуальных машин см. В разделе Изоляция виртуальных машин в Azure.
Управление долгосрочными службами через интерфейс служб операционной системы
Иногда необходимо запустить другой агент вместе с агентом пакетной обработки на узле. Например, вы можете собрать данные с узла и сообщить об этом. Мы рекомендуем развертывать эти агенты как службы ОС, такие как служба Windows или служба Linux systemd
.
При запуске этих служб они не должны блокировать файлы в каталогах, управляемых пакетным управлением, на узле, поскольку в противном случае пакетный режим не сможет удалить эти каталоги из-за блокировок файлов.Например, при установке службы Windows в стартовой задаче вместо запуска службы непосредственно из рабочего каталога стартовой задачи скопируйте файлы в другое место (или, если файлы существуют, просто пропустите копирование). Затем установите службу из этого места. Когда Batch повторно запускает вашу стартовую задачу, он удаляет рабочий каталог стартовой задачи и создает его заново. Это работает, потому что у службы есть блокировки файлов в другом каталоге, а не в рабочем каталоге задачи запуска.
Избегайте создания пересечений каталогов в Windows
Соединения каталогов, иногда называемые жесткими ссылками каталогов, трудно обрабатывать во время очистки задач и заданий.Используйте символические ссылки (мягкие ссылки), а не жесткие ссылки.
Сбор журналов пакетного агента
Если вы заметили проблему, связанную с поведением узла или задачами, выполняемыми на узле, соберите журналы пакетного агента, прежде чем освобождать соответствующие узлы. Журналы пакетного агента можно собирать с помощью API-интерфейса загрузки журналов пакетной службы. Эти журналы могут быть предоставлены как часть заявки в службу поддержки Microsoft и помогут в устранении неполадок и их разрешении.
Управление обновлениями ОС
Для режима подписки пользователя Пакетные учетные записи автоматическое обновление ОС может прервать выполнение задачи, особенно если задачи выполняются долго.Построение идемпотентных задач может помочь уменьшить количество ошибок, вызванных этими прерываниями. Мы также рекомендуем планировать обновления образа ОС на периоды, когда выполнение задач не ожидается.
Для пулов Windows enableAutomaticUpdates
по умолчанию имеет значение true
. Рекомендуется разрешить автоматические обновления, но вы можете установить для этого значения false
, если вам нужно убедиться, что обновление ОС не произойдет неожиданно.
Безопасность изоляции
В целях изоляции, если ваш сценарий требует изолировать задания друг от друга, сделайте это, поместив их в отдельные пулы.Пул - это граница безопасности в пакетном режиме, и по умолчанию два пула не видны или не могут взаимодействовать друг с другом. Избегайте использования отдельных учетных записей пакетной службы в качестве средства изоляции.
Возможности подключения
Ознакомьтесь со следующим руководством, касающимся подключения в пакетных решениях.
Группы безопасности сети (NSG) и определяемые пользователем маршруты (UDR)
При инициализации пулов пакетной обработки в виртуальной сети убедитесь, что вы строго следуете рекомендациям, касающимся использования тега службы BatchNodeManagement
, портов, протоколов и направления правила.Настоятельно рекомендуется использовать служебный тег вместо использования IP-адресов пакетной службы. Это связано с тем, что IP-адреса могут меняться со временем. Прямое использование IP-адресов пакетной службы может привести к нестабильности, прерываниям или сбоям в работе ваших пулов пакетной службы.
Для маршрутов, определяемых пользователем (UDR), убедитесь, что у вас есть процесс для периодического обновления IP-адресов пакетной службы в таблице маршрутов, поскольку эти адреса меняются с течением времени. Чтобы узнать, как получить список IP-адресов пакетной службы, см. Локальные теги служб.IP-адреса пакетной службы будут связаны с тегом службы BatchNodeManagement
(или региональным вариантом, который соответствует региону вашей учетной записи пакетной службы).
В честь DNS
Убедитесь, что ваши системы учитывают время жизни (TTL) DNS для URL-адреса службы учетной записи пакетной службы. Кроме того, убедитесь, что ваши клиенты пакетной службы и другие механизмы подключения к пакетной службе не полагаются на IP-адреса (или создайте пул со статическими общедоступными IP-адресами, как описано ниже).
Если ваши запросы получают HTTP-ответы уровня 5xx и в ответе есть заголовок «Connection: close», ваш клиент пакетной службы должен выполнить рекомендацию, закрыв существующее соединение, повторно разрешив DNS для URL-адреса службы пакетной учетной записи и попытавшись следующие запросы о новом подключении.
Автоматически запрашивает повторную попытку
Убедитесь, что у ваших клиентов пакетной службы есть соответствующие политики повторных попыток для автоматического повторения ваших запросов, даже во время нормальной работы, а не исключительно во время каких-либо периодов обслуживания.Эти политики повторных попыток должны охватывать интервал не менее 5 минут. Возможности автоматического повтора предоставляются различными пакетами SDK для пакетной обработки, такими как класс .NET RetryPolicyProvider.
Статические общедоступные IP-адреса
Обычно доступ к виртуальным машинам в пуле пакетной обработки осуществляется через общедоступные IP-адреса, которые могут изменяться в течение срока службы пула. Это может затруднить взаимодействие с базой данных или другой внешней службой, которая ограничивает доступ к определенным IP-адресам. Чтобы гарантировать, что общедоступные IP-адреса в вашем пуле не изменятся неожиданно, вы можете создать пул, используя набор статических общедоступных IP-адресов, которые вы контролируете.Дополнительные сведения см. В разделе Создание пула пакетной службы Azure с указанными общедоступными IP-адресами.
Тестирование подключения с конфигурацией облачных служб
Вы не можете использовать обычный протокол «ping» / ICMP с облачными службами, потому что протокол ICMP не разрешен через балансировщик нагрузки Azure. Дополнительные сведения см. В разделе Подключение и сеть для облачных служб Azure.
Базовые зависимости пакетного узла
При разработке пакетных решений учитывайте следующие зависимости и ограничения.
Ресурсы, созданные системой
Пакетная служба Azure создает и управляет набором пользователей и групп на виртуальной машине, которые нельзя изменять. Они следующие:
Окна:
- Пользователь с именем PoolNonAdmin
- Группа пользователей с именем WATaskCommon
Linux:
Очистка файлов
Пакетная служба активно пытается очистить рабочий каталог, в котором выполняются задачи, по истечении срока их хранения. Вы обязаны очистить любые файлы, написанные вне этого каталога, чтобы избежать переполнения дискового пространства.
Автоматическая очистка рабочего каталога будет заблокирована, если вы запустите службу в Windows из рабочего каталога startTask, так как папка все еще используется. Это приведет к снижению производительности. Чтобы исправить это, измените каталог для этой службы на отдельный каталог, которым не управляет пакетная служба.
Следующие шаги
Рабочий процесс и ресурсы пакетной службы - Пакетная служба Azure
- 2 минуты на чтение
В этой статье
В этом обзоре основных компонентов пакетной службы Azure мы обсуждаем высокоуровневый рабочий процесс, который разработчики пакетной службы могут использовать для создания крупномасштабных параллельных вычислительных решений, а также основные используемые ресурсы службы.
Независимо от того, разрабатываете ли вы распределенное вычислительное приложение или службу, которая выдает прямые вызовы REST API, или используете другой пакет SDK для пакетной обработки, вы будете использовать многие ресурсы и функции, обсуждаемые здесь.
Базовый рабочий процесс
Следующий высокоуровневый рабочий процесс типичен почти для всех приложений и служб, использующих пакетную службу для обработки параллельных рабочих нагрузок:
- Загрузите файлов данных , которые вы хотите обработать, в учетную запись хранилища Azure.Пакетная служба включает встроенную поддержку доступа к хранилищу BLOB-объектов Azure, и ваши задачи могут загружать эти файлы на вычислительные узлы при выполнении задач.
- Загрузите файлы приложения , которые будут запускать ваши задачи. Эти файлы могут быть двоичными или скриптами и их зависимостями, и они выполняются задачами в ваших заданиях. Ваши задачи могут загружать эти файлы из вашей учетной записи хранения, или вы можете использовать пакетную функцию пакетов приложений для управления и развертывания приложений.
- Создайте пул вычислительных узлов.При создании пула вы указываете количество вычислительных узлов для пула, их размер и операционную систему. Когда каждая задача в вашем задании выполняется, она назначается для выполнения на одном из узлов вашего пула.
- Создать работу. Задание управляет набором задач. Вы связываете каждое задание с определенным пулом, в котором будут выполняться задачи этого задания.
- Добавить задачи в задание. Каждая задача запускает приложение или сценарий, которые вы загрузили, для обработки файлов данных, загружаемых из вашей учетной записи хранения.По завершении каждой задачи он может отправлять свои выходные данные в хранилище Azure.
- Отслеживание выполнения задания и получение выходных данных задачи из службы хранилища Azure.
Примечание
Для использования пакетной службы необходима учетная запись пакетной службы. Большинство пакетных решений также используют связанную учетную запись хранилища Azure для хранения и извлечения файлов.
Ресурсы пакетного обслуживания
В следующих темах обсуждаются ресурсы пакетной службы, которые позволяют реализовать сценарии распределенных вычислений.
Следующие шаги
- Узнайте о пакетных API и инструментах, доступных для создания пакетных решений.
- Изучите основы разработки приложения с поддержкой пакетной обработки с использованием клиентской библиотеки пакетной службы .