Как объединить два yml файла

Обновлено: 03.07.2024

Оба требуют action.yml в репо. Как мне их объединить?

2 ответа

У меня есть два репозитория, один из которых является клоном другого. По сути, произошло то, что было создано первое РЕПО (а), которое затем имело работу и кучу сгенерированной истории, а затем клон был взят путем копирования файла, но без создания ветви. Скопированное РЕПО (B) имело изменения и.

@chenghopan! Если вы хотите иметь два действия в одном репозитории, они должны быть расположены в разных каталогах.

Однако файл action.yml не требуется.

Этот файл необходим только для действия, если вы планируете перечислить его в GitHub Marketplace.

Если у вас есть действия в одном репо, они могут иметь свой собственный файл action.yml , расположенный вместе с их скриптом Dockerfile или узлом. Вот пример с двумя dockerfiles:

И вот рабочий процесс в одном и том же репо, вызывающий оба действия в одном и том же репо:

А вот рабочий процесс в другом репо, вызывающий действия:

Если вы OK не перечисляете действия в GitHub Marketplace, просто поместите файл action.yml в тот же каталог, что и действие, и все будет в порядке!

Для справки, вы можете найти код в этих примерах здесь:

Оба требуют action.yml в репо. Как мне их объединить?

Вы можете оставить каждое из ваших действий в отдельном репозитории действий GitHub.

И, начиная с августа 2020 года, объедините их .

GitHub Действия: Композитный, Выполнить Действия

Composite Run Step Example -- https://i2.wp.com/user-images.githubusercontent.com/8660827/89449714-7bdd0480-d727-11ea-9863-7486fe666fd5.jpg?ssl=1

Теперь вы можете создавать многократно используемые действия с помощью скриптов 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. Итак.

Читайте также: