Skip to main content

Команды рабочего процесса для GitHub Actions

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

Tool navigation

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

Общие сведения о командах рабочего процесса

GitHub Actions могут связываться с компьютером выполнения, чтобы задавать переменные среды, выводить значения, используемые другими действиями, добавлять сообщения отладки в журналы выходных данных и выполнять другие задачи.

Большинство команд рабочего процесса используют команду echo в определенном формате, остальные вызываются путем записи в файл. Дополнительные сведения см. в разделе Файлы среды.

Пример команды рабочего процесса

Bash
echo "::workflow-command parameter1={data},parameter2={data}::{command value}"
PowerShell
Write-Output "::workflow-command parameter1={data},parameter2={data}::{command value}"

Примечание. Имена команд рабочих процессов и параметров не учитывает регистр.

Предупреждение. Если вы работаете с командной строкой, при использовании команд рабочего процесса не ставьте двойные кавычки (").

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

В actions/toolkit содержится ряд функций, которые можно выполнять как команды рабочего процесса. Используйте синтаксис ::, чтобы выполнить команды рабочего процесса в файле YAML. Затем они отправляются в средство выполнения через stdout.

Например, вместо использования кода для создания заметки об ошибке, как показано ниже:

JavaScript
core.error('Missing semicolon', {file: 'app.js', startLine: 1})

Пример. Создание заметки для ошибки

Чтобы создать ту же заметку об ошибках, можно использовать error команду в рабочем процессе:

YAML
      - name: Create annotation for build error
        run: echo "::error file=app.js,line=1::Missing semicolon"
YAML
      - name: Create annotation for build error
        run: Write-Output "::error file=app.js,line=1::Missing semicolon"

В следующей таблице перечислены функции набора средств, которые доступны в рабочем процессе:

Функция набора средствАналогичная команда рабочего процесса
core.addPathДоступно с помощью файла среды GITHUB_PATH
core.debugdebug
core.noticenotice
core.errorerror
core.endGroupendgroup
core.exportVariableДоступно с помощью файла среды GITHUB_ENV
core.getInputДоступно с помощью переменной среды INPUT_{NAME}
core.getStateДоступно с помощью переменной среды STATE_{NAME}
core.isDebugДоступно с помощью переменной среды RUNNER_DEBUG
core.summaryДоступно с помощью файла среды GITHUB_STEP_SUMMARY
core.saveStateДоступно с помощью файла среды GITHUB_STATE
core.setCommandEchoecho
core.setFailedИспользуется в качестве ярлыка для ::error и exit 1
core.setOutputДоступно с помощью файла среды GITHUB_OUTPUT
core.setSecretadd-mask
core.startGroupgroup
core.warningwarning

Задание сообщения отладки

Записывает сообщение отладки в журнал. Чтобы просмотреть в журнале сообщения отладки, заданные этой командой, необходимо создать секрет под названием ACTIONS_STEP_DEBUG со значением true. Дополнительные сведения см. в разделе Включение ведения журналов отладки.

Text
::debug::{message}

Пример: задание сообщения отладки

Bash
echo "::debug::Set the Octocat variable"
PowerShell
Write-Output "::debug::Set the Octocat variable"

Задание сообщения уведомления

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

Text
::notice file={name},line={line},endLine={endLine},title={title}::{message}
ПараметрЗначениеОбязательное полеПо умолчанию.
titleНастраиваемый заголовокNoнет
fileИмя файлаNo.github
colНомер столбца, начиная с 1Noнет
endColumnНомер конечного столбцаNoнет
lineНомер строки, начиная с 1No1
endLineНомер конечной строкиNo1

Пример: задание сообщения уведомления

Bash
echo "::notice file=app.js,line=1,col=5,endColumn=7::Missing semicolon"
PowerShell
Write-Output "::notice file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

Задание сообщения предупреждения

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

Text
::warning file={name},line={line},endLine={endLine},title={title}::{message}
ПараметрЗначениеОбязательное полеПо умолчанию.
titleНастраиваемый заголовокNoнет
fileИмя файлаNo.github
colНомер столбца, начиная с 1Noнет
endColumnНомер конечного столбцаNoнет
lineНомер строки, начиная с 1No1
endLineНомер конечной строкиNo1

Пример: задание сообщения предупреждения

Bash
echo "::warning file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"
PowerShell
Write-Output "::warning file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

Задание сообщения об ошибке

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

Text
::error file={name},line={line},endLine={endLine},title={title}::{message}
ПараметрЗначениеОбязательное полеПо умолчанию.
titleНастраиваемый заголовокNoнет
fileИмя файлаNo.github
colНомер столбца, начиная с 1Noнет
endColumnНомер конечного столбцаNoнет
lineНомер строки, начиная с 1No1
endLineНомер конечной строкиNo1

Пример: задание сообщения об ошибке

Bash
echo "::error file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"
PowerShell
Write-Output "::error file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

Группировка строк журнала

Создает группу с возможностью развертывания в журнале. Чтобы создать группу, воспользуйтесь командой group и укажите title. Любые данные, которые вы введете между командами group и endgroup, будут вложены в расширяемую запись журнала.

Text
::group::{title}
::endgroup::

Пример: группировка строк журнала

YAML
jobs:
  bash-example:
    runs-on: ubuntu-latest
    steps:
      - name: Group of log lines
        run: |
            echo "::group::My title"
            echo "Inside group"
            echo "::endgroup::"
YAML
jobs:
  powershell-example:
    runs-on: windows-latest
    steps:
      - name: Group of log lines
        run: |
            Write-Output "::group::My title"
            Write-Output "Inside group"
            Write-Output "::endgroup::"

Снимок экрана: журнал для шага рабочего процесса. Вторая строка", "Мой заголовок", предусловит стрелку вниз, указывающую развернутую группу. Следующая строка "Внутри группы" указана ниже.

Маскирование значения в журнале

Text
::add-mask::{value}

Маскирование значения предотвращает запись строки или переменной в журнал. Каждое замаскированное слово, отделенное пробелом, заменяется символом *. Для value маски можно использовать переменную среды или строку. Когда вы маскируете значение, оно обрабатывается как секрет и будет скрыто в средстве выполнения. Например, после маскирования значения вы не сможете задать его в качестве выходных данных.

Пример: маскирование строки

Если вы введете в журнале "Mona The Octocat", вы увидите "***".

Bash
echo "::add-mask::Mona The Octocat"
PowerShell
Write-Output "::add-mask::Mona The Octocat"

Предупреждение. Прежде чем выводить секрет в журналы сборки или использовать его в других командах рабочего процесса, необходимо зарегистрировать секрет с помощью add-mask.

Пример: маскирование переменной среды

Если вы введете в журнале переменную MY_NAME или значение "Mona The Octocat", вы увидите "***" вместо "Mona The Octocat".

YAML
jobs:
  bash-example:
    runs-on: ubuntu-latest
    env:
      MY_NAME: "Mona The Octocat"
    steps:
      - name: bash-version
        run: echo "::add-mask::$MY_NAME"
YAML
jobs:
  powershell-example:
    runs-on: windows-latest
    env:
      MY_NAME: "Mona The Octocat"
    steps:
      - name: powershell-version
        run: Write-Output "::add-mask::$env:MY_NAME"

Пример. Маскирование созданных выходных данных в одном задании

Если вам не нужно передавать секрет из одного задания в другое задание, можно:

  1. Создайте секрет (без вывода).
  2. Маскировка ее с add-maskпомощью .
  3. Используйте GITHUB_OUTPUT , чтобы сделать секрет доступным для других шагов в задании.
YAML
on: push
jobs:
  generate-a-secret-output:
    runs-on: ubuntu-latest
    steps:
      - id: sets-a-secret
        name: Generate, mask, and output a secret
        run: |
          the_secret=$((RANDOM))
          echo "::add-mask::$the_secret"
          echo "secret-number=$the_secret" >> "$GITHUB_OUTPUT"
      - name: Use that secret output (protected by a mask)
        run: |
          echo "the secret number is ${{ steps.sets-a-secret.outputs.secret-number }}"
YAML
on: push
jobs:
  generate-a-secret-output:
    runs-on: ubuntu-latest
    steps:
      - id: sets-a-secret
        name: Generate, mask, and output a secret
        shell: pwsh
        run: |
          Set-Variable -Name TheSecret -Value (Get-Random)
          Write-Output "::add-mask::$TheSecret"
          "secret-number=$TheSecret" >> $env:GITHUB_OUTPUT
      - name: Use that secret output (protected by a mask)
        shell: pwsh
        run: |
          Write-Output "the secret number is ${{ steps.sets-a-secret.outputs.secret-number }}"

Пример: маскирование и передача секрета между заданиями или рабочими процессами

Если вы хотите передать маскированные секреты между заданиями или рабочими процессами, необходимо сохранить секрет в хранилище, а затем получить его в последующем задании или рабочем процессе.

Настройка

  1. Настройте хранилище секретов для хранения секрета, который будет создан во время рабочего процесса. Например, Хранилище.
  2. Создайте ключ для чтения и записи в это хранилище секретов. Сохраните ключ в качестве секрета репозитория. В следующем примере рабочего процесса используется SECRET_STORE_CREDENTIALSимя секрета. Дополнительные сведения см. в разделе Использование секретов в GitHub Actions.

Рабочий процесс

Примечание. Этот рабочий процесс использует мнимое хранилище секретов, secret-storeкоторое содержит мнимые store-secret команды и retrieve-secret. some/secret-store@ 27b31702a0e7fc50959f5ad993c78deac1bdfc29 — это мнимое действие, которое устанавливает secret-store приложение и настраивает его для подключения к объекту instance credentials.

YAML
on: push

jobs:
  secret-generator:
    runs-on: ubuntu-latest
    outputs:
      handle: ${{ steps.generate-secret.outputs.handle }}
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: generate secret
      id: generate-secret
      shell: bash
      run: |
        GENERATED_SECRET=$((RANDOM))
        echo "::add-mask::$GENERATED_SECRET"
        SECRET_HANDLE=$(secret-store store-secret "$GENERATED_SECRET")
        echo "handle=$SECRET_HANDLE" >> "$GITHUB_OUTPUT"
  secret-consumer:
    runs-on: macos-latest
    needs: secret-generator
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: use secret
      shell: bash
      run: |
        SECRET_HANDLE="${{ needs.secret-generator.outputs.handle }}"
        RETRIEVED_SECRET=$(secret-store retrieve-secret "$SECRET_HANDLE")
        echo "::add-mask::$RETRIEVED_SECRET"
        echo "We retrieved our masked secret: $RETRIEVED_SECRET"
YAML
on: push

jobs:
  secret-generator:
    runs-on: ubuntu-latest
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: generate secret
      shell: pwsh
      run: |
        Set-Variable -Name Generated_Secret -Value (Get-Random)
        Write-Output "::add-mask::$Generated_Secret"
        Set-Variable -Name Secret_Handle -Value (Store-Secret "$Generated_Secret")
        "handle=$Secret_Handle" >> $env:GITHUB_OUTPUT
  secret-consumer:
    runs-on: macos-latest
    needs: secret-generator
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: use secret
      shell: pwsh
      run: |
        Set-Variable -Name Secret_Handle -Value "${{ needs.secret-generator.outputs.handle }}"
        Set-Variable -Name Retrieved_Secret -Value (Retrieve-Secret "$Secret_Handle")
        echo "::add-mask::$Retrieved_Secret"
        echo "We retrieved our masked secret: $Retrieved_Secret"

Остановка и запуск команд рабочего процесса

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

Text
::stop-commands::{endtoken}

Чтобы остановить обработку команд рабочего процесса, передайте stop-commands уникальный маркер. Чтобы возобновить обработку команд рабочего процесса, передайте тот же маркер, с помощью которого вы остановили обработку.

Предупреждение. Убедитесь, что используемый маркер создается случайным образом и является уникальным для каждого запуска.

Text
::{endtoken}::

Пример: остановка и запуск команд рабочего процесса

YAML
jobs:
  workflow-command-job:
    runs-on: ubuntu-latest
    steps:
      - name: Disable workflow commands
        run: |
          echo '::warning:: This is a warning message, to demonstrate that commands are being processed.'
          stopMarker=$(uuidgen)
          echo "::stop-commands::$stopMarker"
          echo '::warning:: This will NOT be rendered as a warning, because stop-commands has been invoked.'
          echo "::$stopMarker::"
          echo '::warning:: This is a warning again, because stop-commands has been turned off.'
YAML
jobs:
  workflow-command-job:
    runs-on: windows-latest
    steps:
      - name: Disable workflow commands
        run: |
          Write-Output '::warning:: This is a warning message, to demonstrate that commands are being processed.'
          $stopMarker = New-Guid
          Write-Output "::stop-commands::$stopMarker"
          Write-Output '::warning:: This will NOT be rendered as a warning, because stop-commands has been invoked.'
          Write-Output "::$stopMarker::"
          Write-Output '::warning:: This is a warning again, because stop-commands has been turned off.'

Отправка значений в предварительные и завершающие действия

Переменные среды можно создавать для совместного использования с рабочим процессом pre: или post: действиями, записывая в файл, расположенный по адресу GITHUB_STATE. Например, можно создать файл действием pre:, передать расположение файла действию main:, а затем использовать действие post: для удаления файла. Также можно создать файл действием main:, передать его расположение действию post: и с помощью этого же действия post: удалить файл.

Если у вас несколько pre: или post: действия, вы можете получить доступ только к сохраненному значению в действии, в котором оно было записано GITHUB_STATE. Дополнительные сведения о действии post: см. в разделе "Синтаксис метаданных для GitHub Actions".

Файл GITHUB_STATE доступен только в действии. Сохраненное значение хранится в виде значения среды с префиксом STATE_.

В этом примере используется JavaScript для записи в GITHUB_STATE файл. Итоговая переменная среды называется STATE_processID со значением 12345:

JavaScript
import * as fs from 'fs'
import * as os from 'os'

fs.appendFileSync(process.env.GITHUB_STATE, `processID=12345${os.EOL}`, {
  encoding: 'utf8'
})

Затем переменная STATE_processID становится доступной только скрипту очистки, который выполняется в рамках действия main. Этот пример выполняется в main и использует JavaScript для отображения значения, назначенного переменной среды STATE_processID:

JavaScript
console.log("The running PID from the main action is: " +  process.env.STATE_processID);

Файлы среды

Во время выполнения рабочего процесса средство выполнения создает временные файлы, с помощью которых можно совершать определенные действия. Путь к этим файлам можно получить и изменить с помощью переменных среды по умолчанию GitHub. См. раздел "Хранение сведений в переменных". Чтобы обеспечить правильную обработку команд, при записи в эти файлы понадобится кодировка UTF-8. В один файл можно записать несколько команд, разделенных новыми строками. Чтобы использовать переменные среды в GitHub Action, создайте или измените .env файлы с помощью определенных команд GitHub Actions.

Это делается следующим образом:

YAML
name: Example Workflow for Environment Files

on: push

jobs:
  set_and_use_env_vars:
    runs-on: ubuntu-latest
    steps:
      - name: Set environment variable
        run: echo "MY_ENV_VAR=myValue" >> $GITHUB_ENV

      - name: Use environment variable
        run: |
          echo "The value of MY_ENV_VAR is $MY_ENV_VAR"

Другой пример — использовать его для хранения метаданных, таких как метки времени сборки, фиксация SHAs или имена артефактов:

YAML
steps:
  - name: Store build timestamp
    run: echo "BUILD_TIME=$(date +'%T')" >> $GITHUB_ENV

  - name: Deploy using stored timestamp
    run: echo "Deploying at $BUILD_TIME"

Примечание. В PowerShell версии 5.1 и более ранних (shell: powershell) не используется UTF-8 по умолчанию, поэтому необходимо указать кодировку UTF-8. Например:

YAML
jobs:
  legacy-powershell-example:
    runs-on: windows-latest
    steps:
      - shell: powershell
        run: |
          "mypath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

В PowerShell Core версии 6 и более поздних (shell: pwsh) используется кодировка UTF-8 по умолчанию. Например:

YAML
jobs:
  powershell-core-example:
    runs-on: windows-latest
    steps:
      - shell: pwsh
        run: |
          "mypath" >> $env:GITHUB_PATH

Указание переменной среды

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

Bash
echo "{environment_variable_name}={value}" >> "$GITHUB_ENV"
  • С PowerShell версии 6 и более поздних:

    PowerShell
    "{environment_variable_name}={value}" >> $env:GITHUB_ENV
    
  • С PowerShell версии 5.1 и более ранних:

    PowerShell
    "{environment_variable_name}={value}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
    

Можно создать переменную среды, доступную всем последующим шагам в задании рабочего процесса. Для этого необходимо определить или обновить переменную среды и записать ее в файл среды GITHUB_ENV. Шаг, на котором переменная среды создается или обновляется, не будет иметь доступа к новому значению, но доступ получат все последующие шаги в задании.

Нельзя перезаписать значение переменных среды по умолчанию с именем GITHUB_* и RUNNER_*. В настоящее время можно перезаписать значение переменной CI . Однако это не гарантируется, что это всегда будет возможно. Дополнительные сведения о переменных среды по умолчанию см. в разделе "Хранение сведений в переменных".

Примечание. Из-за ограничений GITHUB_ENV безопасности нельзя использовать для задания переменной NODE_OPTIONS среды.

Пример записи переменной среды в GITHUB_ENV

YAML
steps:
  - name: Set the value
    id: step_one
    run: |
      echo "action_state=yellow" >> "$GITHUB_ENV"
  - name: Use the value
    id: step_two
    run: |
      printf '%s\n' "$action_state" # This will output 'yellow'
YAML
steps:
  - name: Set the value
    id: step_one
    run: |
      "action_state=yellow" >> $env:GITHUB_ENV
  - name: Use the value
    id: step_two
    run: |
      Write-Output "$env:action_state" # This will output 'yellow'

Многострочные строки

В многострочных строках можно использовать разделитель со следующим синтаксисом.

Text
{name}<<{delimiter}
{value}
{delimiter}

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

Пример многостройной строки

Этот пример используется EOF в качестве разделителя и задает JSON_RESPONSE переменную среды значением curl ответа.

YAML
steps:
  - name: Set the value in bash
    id: step_one
    run: |
      {
        echo 'JSON_RESPONSE<<EOF'
        curl https://example.com
        echo EOF
      } >> "$GITHUB_ENV"
YAML
steps:
  - name: Set the value in pwsh
    id: step_one
    run: |
      $EOF = (New-Guid).Guid
      "JSON_RESPONSE<<$EOF" >> $env:GITHUB_ENV
      (Invoke-WebRequest -Uri "https://example.com").Content >> $env:GITHUB_ENV
      "$EOF" >> $env:GITHUB_ENV
    shell: pwsh

Задание параметра вывода

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

Bash
echo "{name}={value}" >> "$GITHUB_OUTPUT"
PowerShell
"{name}=value" >> $env:GITHUB_OUTPUT

Пример задания выходного параметра

В этом примере показано, как задать выходной SELECTED_COLOR параметр и получить его позже:

YAML
      - name: Set color
        id: color-selector
        run: echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT"
      - name: Get color
        env:
          SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }}
        run: echo "The selected color is $SELECTED_COLOR"

В этом примере показано, как задать выходной SELECTED_COLOR параметр и получить его позже:

YAML
      - name: Set color
        id: color-selector
        run: |
            "SELECTED_COLOR=green" >> $env:GITHUB_OUTPUT
      - name: Get color
        env:
          SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }}
        run: Write-Output "The selected color is $env:SELECTED_COLOR"

Добавление сводки по заданию

Bash
echo "{markdown content}" >> $GITHUB_STEP_SUMMARY
PowerShell
"{markdown content}" >> $env:GITHUB_STEP_SUMMARY

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

Сводки по заданиям поддерживают Markdown для GitHub, и содержимое Markdown можно добавить в файл среды GITHUB_STEP_SUMMARY для каждого шага. GITHUB_STEP_SUMMARY является уникальным для каждого шага задания. Дополнительные сведения о файлах для каждого шага, на которые ссылается GITHUB_STEP_SUMMARY, см. в разделе "Файлы среды".

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

Пример добавления сводки задания

Bash
echo "### Hello world! :rocket:" >> $GITHUB_STEP_SUMMARY
PowerShell
"### Hello world! :rocket:" >> $env:GITHUB_STEP_SUMMARY

Снимок экрана: страница сводки запуска рабочего процесса. В разделе "Пример сводки" — "Hello world!" и ракета эмодзи.

Многострочное содержимое Markdown

Для поддержки многострочного содержимого Markdown можно использовать >>, чтобы непрерывно добавлять содержимое на текущем шаге. С каждой операцией добавления автоматически вставляется символ новой строки.

Пример содержимого Multiline Markdown

- name: Generate list using Markdown
  run: |
    echo "This is the lead in sentence for the list" >> $GITHUB_STEP_SUMMARY
    echo "" >> $GITHUB_STEP_SUMMARY # this is a blank line
    echo "- Lets add a bullet point" >> $GITHUB_STEP_SUMMARY
    echo "- Lets add a second bullet point" >> $GITHUB_STEP_SUMMARY
    echo "- How about a third one?" >> $GITHUB_STEP_SUMMARY
- name: Generate list using Markdown
  run: |
    "This is the lead in sentence for the list" >> $env:GITHUB_STEP_SUMMARY
    "" >> $env:GITHUB_STEP_SUMMARY # this is a blank line
    "- Lets add a bullet point" >> $env:GITHUB_STEP_SUMMARY
    "- Lets add a second bullet point" >> $env:GITHUB_STEP_SUMMARY
    "- How about a third one?" >> $env:GITHUB_STEP_SUMMARY

Перезапись сводок по заданиям

Чтобы очистить все содержимое для текущего шага, можно использовать > для перезаписи любого ранее добавленного содержимого в Bash или удаления -Append в PowerShell.

Пример перезаписи сводок заданий

- name: Overwrite Markdown
  run: |
    echo "Adding some Markdown content" >> $GITHUB_STEP_SUMMARY
    echo "There was an error, we need to clear the previous Markdown with some new content." > $GITHUB_STEP_SUMMARY
- name: Overwrite Markdown
  run: |
    "Adding some Markdown content" >> $env:GITHUB_STEP_SUMMARY
    "There was an error, we need to clear the previous Markdown with some new content." >> $env:GITHUB_STEP_SUMMARY

Удаление сводок по заданиям

Чтобы окончательно удалить сводку по текущему шагу, можно удалить файл, на который ссылается GITHUB_STEP_SUMMARY.

Пример удаления сводок заданий

- name: Delete all summary content
  run: |
    echo "Adding Markdown content that we want to remove before the step ends" >> $GITHUB_STEP_SUMMARY
    rm $GITHUB_STEP_SUMMARY
- name: Delete all summary content
  run: |
    "Adding Markdown content that we want to remove before the step ends" >> $env:GITHUB_STEP_SUMMARY
    Remove-Item $env:GITHUB_STEP_SUMMARY

После завершения шага сводки по заданиям отправляются, и последующие шаги не могут изменить ранее отправленное содержимое Markdown. В сводках автоматически маскируются все секреты, которые могли в них случайно попасть. Если сводка по заданию содержит конфиденциальную информацию, которую необходимо удалить, можно удалить запуск рабочего процесса, чтобы удалить все его сводки. Дополнительные сведения см. в разделе "Удаление выполнения рабочего процесса".

Разделение и ограничения шагов

Сводки по заданиям разделяются между шагами, а размер каждого шага не может превышать 1 МиБ. Разделение между шагами применяется для того, чтобы потенциально поврежденный Markdown одного шага не мог прервать вывод Markdown последующих шагов. Если для шага добавлено более 1 МиБ содержимого, отправка завершится сбоем и будет создана заметка об ошибке. Сбои отправки для сводок по заданиям не влияют на общее состояние шага или задания. Для каждого задания отображается не более 20 пошаговых сводок.

Добавление системного пути

Добавляет каталог к системной переменной PATH и автоматически открывает к ней доступ всем последующим действиям в текущем задании, кроме выполняемого в настоящий момент действия. Чтобы просмотреть определенные на текущий момент пути для задания, можно использовать echo "$PATH" в шаге или действии.

Пример добавления системного пути

В этом примере показывается, как добавить пользовательский каталог $HOME/.local/bin в PATH:

Bash
echo "$HOME/.local/bin" >> "$GITHUB_PATH"

В этом примере показывается, как добавить пользовательский каталог $env:HOMEPATH/.local/bin в PATH:

PowerShell
"$env:HOMEPATH/.local/bin" | Out-File -FilePath "$env:GITHUB_PATH" -Append