Я создал этот сценарий GitHub Actions для распаковки любых tar-файлов, которые могут быть загружены в репозиторий, но у меня возникли с ним некоторые проблемы.
Рабочий процесс не запускается при нажатии (я пробовал как с файлами tar, так и с файлами без tar)
Когда я запускаю его вручную, он ничего не распаковывает и не выдает ошибок.
Это дает мне предупреждение
Действия Node.js 16 устарели. Обновите следующие действия для использования Node.js 20: action/setup-node@v3. Для получения дополнительной информации см.: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
Я прочитал сообщение и (надеюсь) обновил файл соответствующим образом, но ошибка не устранена.
name: Unpack tgz Files
on:
push:
paths:
- '*.tgz'
pull_request:
paths:
- '*.tgz'
workflow_dispatch: # Allow manual triggering of the workflow
jobs:
unpack:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Create /src directory if it doesn't exist
run: mkdir -p src
- name: List tgz files
run: |
echo "Listing tgz files in root directory:"
ls *.tgz || echo "No tgz files found"
- name: Extract tgz files
run: |
for tgzfile in *.tgz; do
if [ -f "$tgzfile" ]; then
dirname=$(basename "$tgzfile" .tgz)
mkdir -p "src/$dirname"
tar -xf "$tgzfile" -C "src/$dirname"
echo "Unpacked $tgzfile into src/$dirname"
fi
done
Я также посмотрел на эти:
Обновлено:
Вывод выглядит следующим образом, но папка /src
никогда не создается, а файл не разархивируется. Я также обновил код для использования v4
Обновлено еще раз: Я обновил код, чтобы (надеюсь) проверять файлы .tzg вместо файлов .tar (глупая ошибка), но каталог src все еще не создан, а файл .tgz не распакован.
Редактировать 3:
Что касается предупреждения о том, что действия Node.js 16 устарели, вы можете обновить action/setup-node@v3 до v4.
Я пробовал это с ``` путями: - '**.tar' ```, если вы это имеете в виду (извините, я не очень хорошо разбираюсь в подобных вещах)
@ArnaudFlaesch ох дай мне попробовать, спасибо
это удалило предупреждение (ура!), но по-прежнему ничего не создало (я понял, что не могу публиковать изображения в комментариях, поэтому помещу их в пост, пожалуйста, дайте мне секунду)
Шаблон *tar не будет работать с файлом tgz, вам необходимо точно указать расширение файла.
@ArnaudFlaesch о боже мой, ты так прав, это было так глупо, позволь мне посмотреть, исправит ли это изменение на *.tgz. Мне также было интересно, можно ли обрабатывать файлы tar и tgz, добавив - '*.tgz' - '*.tar'
Я думаю, вы можете попробовать: пути: - '.tar' - '.tgz'
Я обновил код (думаю, что безопаснее использовать только .tgz, пока не узнаю больше о таких вещах), но результат остался прежним. Поможет ли поделиться репозиторием?
По крайней мере сейчас рабочий процесс запущен? Если у вас есть частный репозиторий, возможно, просто поделитесь журналами рабочего процесса, особенно шагом «Список файлов tgz».
Репозиторий находится по адресу github.com/The-ION-Language/Actions-Testing (я сделал его общедоступным), я также помещу скриншот в пост, и да, рабочий процесс теперь запущен ^^
Похоже тгз распакован по логам
о, понятно, ты знаешь, почему я не вижу созданную папку (src
), я не думаю, что удалю ее где-нибудь, но могу ошибаться
Я не понимаю, что вы имеете в виду, но на случай, если папка создается внутри рабочего процесса, она не помещается в ваш репозиторий.
ох, плохо, я предполагал, что папка будет создана в репозитории. Думаю, имеет смысл, что это не так, возможно, я просто реструктурирую его :/ Кроме того, большое спасибо за вашу помощь! и как бы мне отметить твой комментарий как ответ?
Я сейчас над чем-то занят, позже напишу ответ.
Я разместил ответ ниже
Сначала вы должны убедиться, что шаблон(ы) соответствуют используемому вами расширению файла:
paths:
- '**.tar'
- '**.tgz'
Таким образом вы можете сопоставить несколько шаблонов.
Чтобы получить предупреждение Node.js 16, вы можете обновить действие оформления заказа до версии v4.
Наконец, что касается извлеченных файлов: ваш рабочий процесс выполняется в отдельной среде, поэтому вначале вам необходимо извлечь код: он еще не существует. Вы можете создавать папки, файлы и запускать всякие программы/скрипты, но в итоге ничего не сохраняется.
Если вы хотите извлечь файлы из архива и отправить их в свой репозиторий, вы можете сначала использовать шаг «Извлечь файлы tgz», затем использовать git add [ваши файлы], git commit и затем git push origin [ваша ветка].
Вы также можете использовать действие upload-artifact, чтобы загрузить папку на Github:
- name: Upload folder
uses: actions/upload-artifact@v4
with:
name: Extracted archive
path: src/
Вы пробовали использовать 2 *, как в этом примере? : docs.github.com/en/actions/using-workflows/…