действие github для копирования файла из одного репо в другое

моя компания создала сложный способ перемещения файлов между средами, и теперь мы хотели бы переместить определенные встроенные файлы JS (преобразованные и минифицированные) из одного репозитория github в другой. Возможно ли это с помощью действий github?


person zero    schedule 19.12.2019    source источник
comment
Я считаю, что созданные файлы не следует хранить в репозитории   -  person Ziarno    schedule 23.12.2019
comment
@Ziarno это особый случай   -  person zero    schedule 23.12.2019


Ответы (1)


Самый простой вариант - клонировать целевое репо, скопировать файлы в целевое репо, использовать командную строку git для создания файлов и затем зафиксировать их. Добавьте приведенный ниже код в шаг скрипта

run: |
    git clone https://.:${{ secrets.GITHUB_TOKEN }}@github.com/project target
    rm everything but the .git directory
    copy source\files target
    cd target
    git add .
    git diff-index --quiet HEAD || git commit -m "Automatic publish from github.com/project"
    git push target master
person jessehouwing    schedule 23.12.2019
comment
Вам может потребоваться сохранить токен персонального доступа в хранилище секретов GitHub на случай, если GITHUB_TOKEN не имеет правильных разрешений. - person jessehouwing; 23.12.2019
comment
См. Разрешения для токенов: help.github.com/en/actions/ - person jessehouwing; 23.12.2019
comment
Что делает rm target в этом случае? Разве target не каталог? - person Bryan Hanson; 04.07.2020
comment
Да, глядя на это, я думаю, что нам здесь не хватает -rf ... Просто убедитесь, что есть чистый каталог для клонирования. - person jessehouwing; 04.07.2020
comment
Хорошо, это имеет смысл, а также сделайте rm перед clone, или вы удаляете то, что только что клонировали. Спасибо за ответ и обновление. - person Bryan Hanson; 04.07.2020
comment
rm -rf target должен быть перед клоном. - person srikanth Nutigattu; 18.01.2021
comment
еще одно полезное дополнение - изменить строку git commit для обработки случая, когда ничего не меняется. В противном случае действие в этом случае завершится ошибкой. git diff-index --quiet HEAD || git commit. Идея: github.com/cpina. Также правильный ли указанный выше веб-адрес? Что такое //.:? - person Robert Lugg; 22.04.2021
comment
Да, правильно, . - это имя пользователя (которое не имеет значения при использовании токена. После : идет пароль (токен). Вы можете использовать notneeded: или github:, если хотите. - person jessehouwing; 22.04.2021