Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2026-04-09. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

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

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

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

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

Отправка артефактов сборки и тестирования

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

Для отправки артефактов можно использовать действие upload-artifact. При отправке артефакта можно указать любое количество файлов или каталогов. Также можно исключить конкретные файлы или каталоги и использовать шаблоны с подстановочными знаками. Рекомендуется указать имя артефакта. Если это не сделать, по умолчанию будет использоваться имя artifact. Дополнительные сведения о синтаксисе см. в действии actions/upload-artifact для GitHub Enterprise Server.

Пример

Например, репозиторий или веб-приложение может содержать файлы 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@v3
        with:
          name: dist-without-markdown
          path: |
            dist
            !dist/**/*.md
      - name: Archive code coverage results
        uses: actions/upload-artifact@v3
        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@v3
    with:
      name: my-artifact
      path: my_file.txt
      retention-days: 5

Значение retention-days не может превышать установленное для репозитория, организации или предприятия ограничение на продолжительность хранения.

Скачивание артефактов во время выполнения рабочего процесса

Действие можно использовать actions/download-artifact для скачивания ранее загруженных артефактов во время выполнения рабочего процесса.

Примечание.

Артефакты можно скачать только в рабочем процессе, который был отправлен во время выполнения того же рабочего процесса.

Чтобы скачать отдельный артефакт, укажите его имя. Если не указать имя артефакта при скачивании, по умолчанию будет использоваться имя artifact.

- name: Download a single artifact
  uses: actions/download-artifact@v3
  with:
    name: my-artifact

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

- name: Download all workflow run artifacts
  uses: actions/download-artifact@v3

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

Дополнительные сведения о синтаксисе см. в действии actions/download-artifact для GitHub Enterprise Server.

Передача данных между заданиями в рабочем процессе

Действия upload-artifact и download-artifact позволяют совместно использовать данные между заданиями в рабочем процессе. В этом примере рабочего процесса показано, как передавать данные между заданиями в одном рабочем процессе. Дополнительные сведения см. в разделе .

Задания, зависящие от артефактов предыдущего задания, должны дожидаться его успешного завершения. В этом рабочем процессе используется ключевое слово needs, чтобы обеспечить последовательное выполнение заданий job_1, job_2 и job_3. Например, требование использовать задание job_2 в задании job_1, задается с помощью синтаксиса needs: job_1.

Задание 1 выполняет следующие действия:

  • Выполняет математические вычисления и сохраняет результат в текстовый файл с именем math-homework.txt.
  • upload-artifact Использует действие для отправки math-homework.txt файла с именем артефакта homework.

Используя результаты предыдущего задания, задание 2 выполняет следующие действия:

  • Скачивает артефакт homework артефакт, отправленный в предыдущем задании. По умолчанию действие download-artifact скачивает артефакты в каталог рабочей области, где выполняется шаг. С помощью входного параметра path можно указать другой каталог для скачивания.
  • Считывает значение в файле math-homework.txt, выполняет математические вычисления и снова сохраняет результат в файл math-homework.txt, перезаписывая его содержимое.
  • Отправляет файл math-homework.txt. Эта отправка перезаписывает ранее отправленный артефакт, так как они используют то же имя.

Задание 3 отображает отправленный в предыдущем задании результат, выполняя следующие действия:

  • Загружает артефакт homework артефакт.
  • Выводит результат вычисления в журнал.

В этом примере рабочего процесса вычисляется выражение (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@v3
        with:
          name: homework
          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@v3
        with:
          name: homework
      - 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@v3
        with:
          name: homework
          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@v3
        with:
          name: homework
      - name: Print the final result
        shell: bash
        run: |
          value=`cat math-homework.txt`
          echo The result is $value

При выполнении рабочего процесса архивируются все создаваемые им артефакты. Дополнительные сведения о скачивании архивных артефактов см. в разделе Скачивание артефактов рабочего процесса.