Skip to main content

Хранение и предоставление общего доступа к данным с артефактами рабочего процесса

Используйте артефакты для совместного использования данных между заданиями в рабочем процессе и хранения данных после завершения рабочего процесса.

Необходимые компоненты

Прежде чем завершить работу с этим руководством, необходимо понять артефакты рабочего процесса. См . раздел 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.

YAML
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:

YAML
  - 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.

YAML
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, откройте журналы для задания отправки артефактов или проверьте выходные данные артефакта, отображаемые в пользовательском интерфейсе выполнения рабочего процесса.