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