{"meta":{"title":"Хранение и предоставление общего доступа к данным с артефактами рабочего процесса","intro":"Используйте артефакты для совместного использования данных между заданиями в рабочем процессе и хранения данных после завершения рабочего процесса.","product":"GitHub Actions","breadcrumbs":[{"href":"/ru/actions","title":"GitHub Actions"},{"href":"/ru/actions/tutorials","title":"Учебники"},{"href":"/ru/actions/tutorials/store-and-share-data","title":"Хранение и предоставление общего доступа к данным"}],"documentType":"article"},"body":"# Хранение и предоставление общего доступа к данным с артефактами рабочего процесса\n\nИспользуйте артефакты для совместного использования данных между заданиями в рабочем процессе и хранения данных после завершения рабочего процесса.\n\n## Необходимые компоненты\n\nПрежде чем завершить работу с этим руководством, необходимо понять артефакты рабочего процесса. См [. раздел AUTOTITLE](/ru/actions/concepts/workflows-and-actions/workflow-artifacts).\n\n## Отправка артефактов сборки и тестирования\n\nВыходные данные сборки и тестирования кода часто содержат файлы, которые можно использовать для отладки сбоев тестов и рабочего кода, который можно развернуть. Вы можете настроить рабочий процесс для сборки и тестирования отправляемого в репозиторий кода, а также получения отчетов об успешном или неудачном выполнении. Вы можете отправить выходные данные сборки и тестирования для развертывания, отладки неудачно завершенных тестов или сбоев, а также для просмотра охвата набора тестов.\n\nДля отправки артефактов можно использовать действие `upload-artifact`. При отправке артефакта можно указать любое количество файлов или каталогов. Также можно исключить конкретные файлы или каталоги и использовать шаблоны с подстановочными знаками. Рекомендуется указать имя артефакта. Если это не сделать, по умолчанию будет использоваться имя `artifact`. Дополнительные сведения о синтаксисе см. в действии [actions/upload-artifact](https://github.com/actions/upload-artifact) action.\n\n### Пример\n\nНапример, репозиторий или веб-приложение может содержать файлы SASS и TypeScript, которые необходимо преобразовать в CSS и JavaScript. Если в соответствии с конфигурацией сборки скомпилированные файлы записываются в каталог `dist`, в случае успешного завершения всех тестов файлы будут развернуты в каталоге `dist` на сервере веб-приложений.\n\n```text\n|-- hello-world (repository)\n|   └── dist\n|   └── tests\n|   └── src\n|       └── sass/app.scss\n|       └── app.ts\n|   └── output\n|       └── test\n|\n```\n\nВ этом примере показано, как создать для проекта Node.js рабочий процесс, который создает код в каталоге `src` и выполняет тесты в каталоге `tests`. Можно предположить, что при выполнении `npm test` в каталоге `code-coverage.html` будет создан отчет об объеме протестированного кода с именем `output/test/`.\n\nРабочий процесс отправляет рабочие артефакты в каталог `dist`, исключая при этом все файлы Markdown. Также в виде другого артефакта отправляется отчет `code-coverage.html`.\n\n```yaml copy\nname: Node CI\n\non: [push]\n\njobs:\n  build_and_test:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: npm install, build, and test\n        run: |\n          npm install\n          npm run build --if-present\n          npm test\n      - name: Archive production artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          name: dist-without-markdown\n          path: |\n            dist\n            !dist/**/*.md\n      - name: Archive code coverage results\n        uses: actions/upload-artifact@v4\n        with:\n          name: code-coverage-report\n          path: output/test/code-coverage.html\n```\n\n## Настройка пользовательского периода хранения артефакта\n\nВы можете определить пользовательский период хранения для отдельных артефактов, создаваемых рабочим процессом. При создании нового артефакта в рамках рабочего процесса можно использовать значение `retention-days` с действием `upload-artifact`. В этом примере показано, как установить 5-дневный пользовательский период хранения для артефакта с именем `my-artifact`:\n\n```yaml copy\n  - name: 'Upload Artifact'\n    uses: actions/upload-artifact@v4\n    with:\n      name: my-artifact\n      path: my_file.txt\n      retention-days: 5\n```\n\nЗначение `retention-days` не может превышать установленное для репозитория, организации или предприятия ограничение на продолжительность хранения.\n\n## Скачивание артефактов во время выполнения рабочего процесса\n\nДействие можно использовать [`actions/download-artifact`](https://github.com/actions/download-artifact) для скачивания ранее загруженных артефактов во время выполнения рабочего процесса.\n\n> \\[!NOTE]\n> Если вы хотите скачать артефакты из другого рабочего процесса или запуска рабочего процесса, необходимо указать маркер и идентификатор запуска. См. статью [\"Скачать артефакты\" из других запусков рабочих процессов или репозиториев](https://github.com/actions/download-artifact?tab=readme-ov-file#download-artifacts-from-other-workflow-runs-or-repositories) в документации по `download-artifact` действию.\n\nЧтобы скачать отдельный артефакт, укажите его имя. Если не указать имя артефакта при скачивании, по умолчанию будет использоваться имя `artifact`.\n\n```yaml\n- name: Download a single artifact\n  uses: actions/download-artifact@v5\n  with:\n    name: my-artifact\n```\n\nТакже во время выполнения рабочего процесса можно скачать все артефакты, не указывая имя. Это удобно при работе с большим количеством артефактов.\n\n```yaml\n- name: Download all workflow run artifacts\n  uses: actions/download-artifact@v5\n```\n\nПри скачивании всех артефактов во время выполнения рабочего процесса для каждого артефакта создается каталог с его именем.\n\nДополнительные сведения о синтаксисе см. в действии [actions/download-artifact](https://github.com/actions/download-artifact) action.\n\n## Передача данных между заданиями в рабочем процессе\n\nДействия `upload-artifact` и `download-artifact` позволяют совместно использовать данные между заданиями в рабочем процессе. В этом примере рабочего процесса показано, как передавать данные между заданиями в одном рабочем процессе. Дополнительные сведения см. в разделе [actions/upload-artifact и download-artifact](https://github.com/actions/upload-artifact)[](https://github.com/actions/download-artifact)`actions/upload-artifact` действия для GitHub Enterprise Server.\n\nЗадания, зависящие от артефактов предыдущего задания, должны дожидаться его успешного завершения. В этом рабочем процессе используется ключевое слово `needs`, чтобы обеспечить последовательное выполнение заданий `job_1`, `job_2` и `job_3`. Например, требование использовать задание `job_2` в задании `job_1`, задается с помощью синтаксиса `needs: job_1`.\n\nЗадание 1 выполняет следующие действия:\n\n* Выполняет математические вычисления и сохраняет результат в текстовый файл с именем `math-homework.txt`.\n* `upload-artifact` Использует действие для отправки `math-homework.txt` файла с именем артефакта `homework_pre`.\n\nИспользуя результаты предыдущего задания, задание 2 выполняет следующие действия:\n\n* Скачивает артефакт `homework` артефакт, отправленный в предыдущем задании. По умолчанию действие `download-artifact` скачивает артефакты в каталог рабочей области, где выполняется шаг. С помощью входного параметра `path` можно указать другой каталог для скачивания.\n* Считывает значение в файле `math-homework.txt`, выполняет математические вычисления и снова сохраняет результат в файл `math-homework.txt`, перезаписывая его содержимое.\n* Отправляет файл `math-homework.txt`. Так как артефакты считаются неизменяемыми, `v4`артефакт передается другим входным данным, `homework_final`как имя.\n\nЗадание 3 отображает отправленный в предыдущем задании результат, выполняя следующие действия:\n\n* Загружает артефакт `homework_final` из задания 2.\n* Выводит результат вычисления в журнал.\n\nВ этом примере рабочего процесса вычисляется выражение `(3 + 7) x 9 = 90`.\n\n```yaml copy\nname: Share data between jobs\n\non: [push]\n\njobs:\n  job_1:\n    name: Add 3 and 7\n    runs-on: ubuntu-latest\n    steps:\n      - shell: bash\n        run: |\n          expr 3 + 7 > math-homework.txt\n      - name: Upload math result for job 1\n        uses: actions/upload-artifact@v4\n        with:\n          name: homework_pre\n          path: math-homework.txt\n\n  job_2:\n    name: Multiply by 9\n    needs: job_1\n    runs-on: windows-latest\n    steps:\n      - name: Download math result for job 1\n        uses: actions/download-artifact@v5\n        with:\n          name: homework_pre\n      - shell: bash\n        run: |\n          value=`cat math-homework.txt`\n          expr $value \\* 9 > math-homework.txt\n      - name: Upload math result for job 2\n        uses: actions/upload-artifact@v4\n        with:\n          name: homework_final\n          path: math-homework.txt\n\n  job_3:\n    name: Display results\n    needs: job_2\n    runs-on: macOS-latest\n    steps:\n      - name: Download math result for job 2\n        uses: actions/download-artifact@v5\n        with:\n          name: homework_final\n      - name: Print the final result\n        shell: bash\n        run: |\n          value=`cat math-homework.txt`\n          echo The result is $value\n```\n\nПри выполнении рабочего процесса архивируются все создаваемые им артефакты. Дополнительные сведения о скачивании архивных артефактов см. в разделе [Скачивание артефактов рабочего процесса](/ru/actions/managing-workflow-runs/downloading-workflow-artifacts).\n\n## Проверка артефактов\n\nКаждый раз, когда действие upload-artifact используется, оно возвращает выходные данные с именем `digest`. Это дайджест SHA256 артефакта, который вы отправляете во время выполнения рабочего процесса.\n\nКогда действие download-artifact затем используется для скачивания этого артефакта, он автоматически вычисляет дайджест для этого скачаемого артефакта и проверяет, соответствует ли он выходным данным шага отправки артефакта.\n\nЕсли дайджест не соответствует, выполнение отобразит предупреждение в пользовательском интерфейсе и в журналах заданий.\n\nЧтобы просмотреть дайджест SHA256, откройте журналы для задания отправки артефактов или проверьте выходные данные артефакта, отображаемые в пользовательском интерфейсе выполнения рабочего процесса."}