Как объединить два yml файла
Оба требуют action.yml в репо. Как мне их объединить?
2 ответа
У меня есть два репозитория, один из которых является клоном другого. По сути, произошло то, что было создано первое РЕПО (а), которое затем имело работу и кучу сгенерированной истории, а затем клон был взят путем копирования файла, но без создания ветви. Скопированное РЕПО (B) имело изменения и.
@chenghopan! Если вы хотите иметь два действия в одном репозитории, они должны быть расположены в разных каталогах.
Однако файл action.yml не требуется.
Этот файл необходим только для действия, если вы планируете перечислить его в GitHub Marketplace.
Если у вас есть действия в одном репо, они могут иметь свой собственный файл action.yml , расположенный вместе с их скриптом Dockerfile или узлом. Вот пример с двумя dockerfiles:
И вот рабочий процесс в одном и том же репо, вызывающий оба действия в одном и том же репо:
А вот рабочий процесс в другом репо, вызывающий действия:
Если вы OK не перечисляете действия в GitHub Marketplace, просто поместите файл action.yml в тот же каталог, что и действие, и все будет в порядке!
Для справки, вы можете найти код в этих примерах здесь:
Оба требуют action.yml в репо. Как мне их объединить?
Вы можете оставить каждое из ваших действий в отдельном репозитории действий GitHub.
И, начиная с августа 2020 года, объедините их .
GitHub Действия: Композитный, Выполнить Действия
Теперь вы можете создавать многократно используемые действия с помощью скриптов shell и даже смешивать несколько языков shell в одном действии.
Вероятно, у вас есть много сценариев shell для автоматизации многих задач, теперь вы можете легко превратить их в действие и повторно использовать для различных рабочих процессов. Иногда проще просто написать сценарий shell, чем JavaScript или Docker.
Теперь вам не нужно беспокоиться о том, чтобы обернуть свои скрипты в контейнеры a Docker.
Вот пример, как можно использовать композитные выполнить следующие действия :
workflow.yml:
octocat/say-hello/action.yml:
Узнайте больше о составных шагах запуска и посетите форум сообщества GitHub Actions для получения вопросов.
Этот вопрос не о том, как объединить два репозитория git; эта проблема уже обсуждалась (ключевые слова: submodules,слияние поддеревьев). Вопрос здесь в том, как объединить два РЕПО GitHub? Я хотел сохранить как можно больше функций/данных GitHub из обоих репозиториев GitHub. Самое главное, я хочу.
Ладно, мы все испортили. Главный разработчик отправил электронное письмо, информирующее других разработчиков о переходе от GitHub к новому РЕПО VSTS. Некоторые разработчики не читали письмо и продолжали работать над GitHub. Две недели спустя мы узнали, что теперь разработчики, которые продолжили.
Похожие вопросы:
У меня есть два РЕПО. Один-это развитие, которое является частным, а другой-официальным, которое является публичным. Я делаю всю свою работу в репо разработки, и вся история фиксации(коммита).
В некоторых вопросах здесь, в stackoverflow, показано, как объединить два объекта JSON из внутреннего HTML или в var, но я хочу объединить два внешних файла JSON или URLs с ответом JSON. Вот пример.
У меня есть два репозитория в одной родительской папке, которые я хочу объединить в родительской папке, и, если это возможно, сохранить историю без минимальных различий. parent/ --code1/.git.
У меня есть два разных локальных репо git. Каждый из них размещается на github как (отдельный) частный репозиторий со своим собственным набором сотрудников / разработчиков. Я являюсь владельцем этих.
У меня есть два репозитория, один из которых является клоном другого. По сути, произошло то, что было создано первое РЕПО (а), которое затем имело работу и кучу сгенерированной истории, а затем клон.
Этот вопрос не о том, как объединить два репозитория git; эта проблема уже обсуждалась (ключевые слова: submodules,слияние поддеревьев). Вопрос здесь в том, как объединить два РЕПО GitHub? Я хотел.
Ладно, мы все испортили. Главный разработчик отправил электронное письмо, информирующее других разработчиков о переходе от GitHub к новому РЕПО VSTS. Некоторые разработчики не читали письмо и.
У меня есть два файла, их размеры больше 1 TB. Каждая строка id, name в одном файле. Каждая строка- id, age в другой. Я хочу объединить их. Каждый залог результирующего файла похож на id, name, age.
Можно ли сослаться на другое действие GitHub из моего файла action.yml ? Заметьте, я говорю здесь о действии, а не о рабочем процессе. Я знаю, что это можно сделать с помощью рабочих процессов, но.
Возможно ли иметь два РЕПО с двумя разными наборами папок и файлов, которые оба фиксируются в одном РЕПО на Github? Если да, то как мне это настроить? Как и в следующем случае: РЕПО 1 -Folder_1.
Одна из проблем, с которыми приходится столкиваться, занимаясь настройкой окружения для разработчиков, с использованием Docker и Docker-compose, это вопрос о том, как сводить вместе несколько различных проектов. При условии, что все проекты, конечно же, имеют docker-compose.yml файл.
- Разработка низко связанных компонентов огромной системы. Где каждый проект, по сути, может являться отдельным самостоятельным приложением
- Подключение отдельных компонентов для тестирования. Вынесение mock -сервисов и тестов в отдельные контейнеры со своей логикой линковки и взаимодействия
- Внешнии, по отношению к проекту, системы, которые тем не менее 'живут' в docker среде
Содержание
Проблема
Собственно, комбинирование N файлов в один и запуск их как цельного приложения, и стало основной проблемой. Что же стало второстепенными проблемами, которые не позволили просто на просто объединить один за одним существующие файлы?
- Конфликты имен контейнеров c обновлением всего дерева конфигурации
- Конфликты портов пробрасываемых на хост-машину
- Переопределение свойств сервиса
- Разрешение относительных путей
- Удаление лишних или дублирующихся сервисов
Решение
Таким образом потратив на ум пришло потратить пару выходных и написать простой python препроцессор, который и будет делать всю грязную рутинную работу по объединению docker-compose файлов.
Как следствие, получился небольшой (на 600 строчек кода) скрипт в целом и полностью решающий проблемы возникшие некогда передо мной.
Однако, как бонус, по мимо обозначенных выше проблем, скрипт помог решить еще одну интересную задачу. А именно после небольших умозаключений, удалось параллельно запускать несколько экземпляров приложения с одним docker-compose файлом.
Примеры использования
Несколько шагов которые позволят быстро использовать данное решение
Установка
Необходимо скачать бинарный файл, который является упакованным python модулем
Конфигурирование
Содержание конфигурационного docker-compose-mixer.yml файла по своей сути является небольшим конфигом, который описывает как именно два или более проектов будут стартовать вместе.
Скажем у нас есть 2 проекта project A и project B c двумя docker-compose.yml файлами.
Проекты, являясь разными версиями системы, представляют собой приложение с набором сервисов: java-application, redis, rabbitmq, mail , проект project A (новая версия) так же содержит mysql сервис.
Базовая задача — объеденить два окружения в одно с использованием лишь одного rabbitmq сервиса. К тому же необходимо создать новый сервис pgsql и подключить его к первому проекту (заменив mysql)
Конфигурация для объединения файлов должна лежать в файле ./docker-compose-mixer.yml (опция -i, --input-file может определить другое имя для файла)
Запуск
Команда ` dc-mixer -v ` запускает препроцессор в вербальном режиме и сохраняет результат в файл. Опции запуска помогают управлять поведением.
Результат
По умолчанию, результат объединения файлов будет сохранен в файл ./docker-compose.yml . (опция -o, --output-file может определить другое имя для файла)
Хочется обратить внимание на раздел вывода дебагера ` DEBUG:root:Redefined ports `, который выдает информацию об автоматически измененных портах.
В этом посте я расскажу про не очень известные особенности языка YAML.
Пролог
Системное администрирование за последние несколько лет несколько изменилось. Вместо маленьких скриптиков на bash у нас теперь огромные проекты системы конфигурации. Puppet с миллионом модулей готов «отконфигурять» для нас любую машинку, все поставить и все настроить. И конечно же, венчает это торжество автоматизации Hiera — система управления системой управления.
В начале идея выделения всех конфигурационных данных в иерархическую структуру и редактирования красивых и удобных YAML файлов кажется невероятно соблазнительной, особенно если вспомнить множество форматов конфиг-файлов, создатели которых, кажется, участвовали в соревнованиях по оригинальности мышления. Однако очень уже скоро мы оказываемся с тысячами строк YAML. Давайте посмотрим как можно использовать YAML чтобы наши конфигурации было легче читать и поддерживать.
Примеры
Многострочный текст
Очень часто нужно запихнуть в hiera многострочный текст. Для этого есть как минимум 3 способа.
Пожалуйста, теперь, когда вы узнали, как делать многострочный текст, не используйте первый способ.
Однострочный текст
Иногда нужно запихать в одну строку много под-строк. В YAML и это можно делать как минимум тремя способами.
Интересно, что все 3 способа могут использоваться где угодно, например, в списках:
JSON-style
YAML с версии 1.2 — это надмножество JSON. То есть, все, что правильно для JSON, годится и для YAML. Иногда это можно использовать для улучшения читаемости.
Очевидным недостатком последней конструкции является то, что при изменении одного параметра меняется вся строчка, да и выравнивание может тоже напортить историю в GIT. Однако читаемость того стоит.
Матрицы
Еще одним случаем использования JSON-style можно считать определение матриц.
Наследование
Не ожидали? Я тоже удивился. Оказывается в YAML есть еще и наследование.
Или, если переписать еще короче, используя JSON, можно получить красивую табличку:
Ссылки
В предыдущем примере мы рассмотрели наследование, и вы наверное заметили элементы & и *. Эти элементы позволяют определить ссылку на элемент и затем его использовать.
Проверка
Ну, и напоследок, однострочник для проверки YAML файлов:
Почитать
И да пребудет с вами KISS и DRY.
UPD
Буду рад в комментариях увидеть ваши примеры интересного использования YAML.
Как объединить множество файлов дескрипторов .YML в один файл .YML , содержащий их все. Я хочу использовать Kmeans для кластеризации данных.
2 ответа
Можно ли отредактировать файл php.ini (или что-нибудь еще) и объединить все файлы *php_log* в один файл php_log вместо одного в каждом каталоге? Пояснение для тех, кто на самом деле не читает: сканирование каталога на наличие типа файла и слияние файлов-это два отдельных действия VERY с очень.
Надеюсь, это вам поможет.
С уважением, Рафа
Вы пробовали загрузить свои файлы *.YML и сохранить всю информацию в новом файле?
Я предлагаю вам закодировать цикл FOR, чтобы открыть весь ваш файл и сохранить данные в новый файл *.YML, объединяющий все ваши данные в одном файле.
Я ясно выразился?
С уважением, Рафа
Похожие вопросы:
Я хочу объединить небольшие файлы avro в один файл avro, сохраняя ту же схему, используя pig. Я пытался это сделать: REGISTER avro-1.7.2.jar a = load '$SOURCE' using.
Я использую Doctrine2 и трачу много времени на ручное изменение (обновление) файлов *yml. С Doctrine1 я использовал Mysql Workbench с дополнительными плагинами, чтобы сделать это, но Doctrine2.
Мне нужно как-то объединить flash сайта в один исполняемый файл. Сайт состоит из: index.html изображения звуки PDF файлы и т. д. После нажатия на Объединенный файл необходимо открыть index.html.
Можно ли отредактировать файл php.ini (или что-нибудь еще) и объединить все файлы *php_log* в один файл php_log вместо одного в каждом каталоге? Пояснение для тех, кто на самом деле не читает.
Я пытаюсь объединить все файлы в dir в один текстовый файл с PHP. Все файлы являются текстовыми файлами и имеют по одному слову в каждой строке. Мне просто нужно объединить их все в один текстовый.
В PHP, как я могу открыть каждый файл, все текстовые файлы, в каталоге и объединить их все в один текстовый файл. Я не знаю, как открыть все файлы в Каталоге, но я бы использовал команду file() .
У меня есть файл .mdf и два файла .ndf одного и того же файла mdf. Можно ли объединить эти файлы в один файл .mdf без потери каких-либо данных ?
На самом деле я хочу уменьшить предупреждение о скорости страницы google. Поэтому я объединил все внешние файлы css в один файл css и все внешние файлы скрипта java в один файл скрипта java. Итак.
Читайте также: