#linux #github #github-actions #building-github-actions
Вопрос:
Я пытаюсь скопировать содержимое папки в другую во время рабочего процесса на github. Я знаю, что рабочий процесс может создавать новые папки и файлы, потому что вызов сборки в проекте react создает сборку, которой нет в проекте, но она выдает ошибку в последующей команде запуска, которая использует mkdir.
Ошибка: mkdir: cannot create directory ‘myNewFolder’: No such file or directory
Мой вопрос в том, как достичь того или иного
> mkdir myNewFolder amp;amp; cp -R myOldFolder myNewFolder
или
> cp -R myOldFolder myNewFolder
чтобы работать, когда myNewFolder не существует в рабочем каталоге репозитория/рабочего процесса?
ИЗМЕНИТЬ (запрошенный файл рабочего процесса)
name: Test Server Build and Deploy (CD)
on:
push:
branches:
- cd_branch
jobs:
deploy:
runs-on: ubuntu-latest
env:
MY_APP_ENV_VARIABLE: ${{ secrets.ENV_VARIABLE}}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14.15.4'
- run: npm cache clean --force
- run: npm run copy-script
Где находится мой сценарий копирования:
"copy-script": "mkdir existingFolder/newFolder1/newFolder2 amp;amp; cp -R oldfolder/sub existingFolder/newFolder1/newFolder2"
Комментарии:
1. Какую ошибку вы получили?
2. Извините, добавил это сейчас к вопросу.
3. Эта ошибка не связана с git. возможно, у вас недостаточно разрешений для создания новой папки. каков статус разрешения на чтение/запись/выполнение вашей текущей папки?
4. Если вы ссылаетесь на настройки действий GitHub, я выбрал «Рабочие процессы имеют разрешения на чтение и запись в репозитории для всех областей». для конкретного РЕПО, о котором идет речь.
5. Покажите минимальную версию файла рабочего процесса.
mkdir
иcp
должны работать нормально, так же, как и на вашей локальной машине, в действиях GitHub.
Ответ №1:
При создании новой папки, вложенной в другую, добавьте -p
опцию (parants) после mkdir
, чтобы указать Linux, чтобы все каталоги были перечислены в пути.
Я попробовал с этим, и это работает для меня:
name: SO-023 Create folder
on:
push:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Create folder
run: |
mkdir -p myNewFolder/myNewSubFolder amp;amp; cp -R dist myNewFolder/myNewSubFolder
ls myNewFolder/MyNewSubFolder
Комментарии:
1. Что случилось с символом трубы? Это необходимо для выполнения команд amp;amp; в рабочем процессе или что-то в этом роде?
2. Извини, я не понимаю. Не могли бы вы объяснить? У вас есть какие-либо проблемы с трубой?
3. Спасибо, если вы одобрите правку, я могу принять это как ответ. Я думаю, что на самом деле это была не проблема github.
4. Это не правильно, это не была проблема с Github. Но я рад, что мы решили эту проблему. Я также одобрил редактирование.
5. Я думаю, что труба после
run
-это синтаксис YAML. Это означает, что строки с отступом под ним являются строкой, @Mr. Drew. Он используется только тогда, когда строка будет находиться в отдельной строке от ключа. Значения рядомuses:
и тому подобное также являются строками, но они находятся в одной строке рядом:
, поэтому вы не используете там канал.