Примечание.
GitHub Enterprise Serverразмещенные в данный момент средства выполнения не поддерживаются в GitHub.
Введение
В этом руководстве показано, как получить рабочий процесс непрерывной интеграции (CI), который создает и тестирует код Node.js. Если тесты CI проходят правильно, может потребоваться развернуть код или опубликовать пакет.
Необходимые компоненты
Рекомендуется иметь базовое представление о Node.js, YAML, параметрах конфигурации рабочих процессов, а также о том, как создавать файл рабочего процесса. Дополнительные сведения см. в разделе:
Использование локальных средств выполнения GitHub Enterprise Server
При использовании действий установки (например actions/setup-LANGUAGE) GitHub Enterprise Server с локальными средствами выполнения, возможно, потребуется настроить кэш средств на запусках, у которых нет доступа к Интернету. Дополнительные сведения см. в разделе Настройка кэша инструментов для локально размещенных средств выполнения без доступа к Интернету.
Использование шаблона рабочего процесса Node.js
Чтобы быстро приступить к работе, добавьте шаблон рабочего процесса в .github/workflows каталог репозитория.
GitHub предоставляет шаблон рабочего процесса для Node.js, которые должны работать для большинства Node.js проектов. В последующих разделах этого руководства приведены примеры настройки этого шаблона рабочего процесса.
-
На GitHubперейдите на главную страницу репозитория.
-
Под именем репозитория щелкните Actions.

-
Если в вашем репозитории уже используется рабочий процесс, нажмите кнопку Создать рабочий процесс.
-
На странице "Выбор рабочего процесса" показан выбор рекомендуемых шаблонов рабочих процессов. Найдите "Node.js".
-
Отфильтруйте выбор рабочих процессов, щелкнув "Непрерывная интеграция".
-
В рабочем процессе "Node.js" нажмите кнопку "Настроить".
Если вы не найдете шаблон рабочего процесса "Node.js", скопируйте следующий код рабочего процесса в новый файл, который вызывается
node.js.ymlв.github/workflowsкаталоге репозитория.YAML name: Node.js CI on: push: branches: [ "main" ] pull_request: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x, 20.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v6 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci - run: npm run build --if-present - run: npm testname: Node.js CI on: push: branches: [ "main" ] pull_request: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x, 20.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v6 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci - run: npm run build --if-present - run: npm test -
Измените рабочий процесс по мере необходимости. Например, измените версии узла, которые вы хотите использовать.
-
Щелкните Зафиксировать изменения.
Указание версии Node.js
Самый простой способ указать версию Node.js — использовать действие, предоставленное setup-nodeGitHub. Дополнительные сведения см. описании setup-node.
Действие setup-node принимает версию Node.js в качестве входных данных и настраивает ее в средстве выполнения. Действие setup-node находит определенную версию Node.js из кэша инструментов в каждом средстве запуска и добавляет необходимые двоичные файлы в переменную PATH, которая сохраняется до конца задания.
setup-node Использование действия — это рекомендуемый способ использования Node.js, GitHub Actions так как он обеспечивает согласованное поведение между различными средствами выполнения и различными версиями Node.js. При использовании локального средства выполнения необходимо установить Node.js и добавить его в PATH.
Шаблон рабочего процесса включает в себя стратегию матрицы, которая создает и тестирует код с помощью Node.js версий, перечисленных в node-version. Значение x в номере версии — это подстановочный знак, соответствующий последнему дополнительному и исправлению, доступному для версии. Каждая версия Node.js, указанная в массиве node-version, создает задание, которое выполняет одни и те же действия.
Каждое задание может получить доступ к значению, определенному в массиве node-version матрицы, с помощью контекста matrix. Действие setup-node использует контекст в качестве входных данных node-version. Действие setup-node настраивает каждое задание с использованием разных версий Node.js перед созданием и тестированием кода. Дополнительные сведения о стратегиях матриц и контекстах см. в разделе [AUTOTITLE и Синтаксис рабочего процесса для GitHub Actions](/actions/reference/workflows-and-actions/contexts).
strategy:
matrix:
node-version: ['18.x', '20.x']
steps:
- uses: actions/checkout@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
strategy:
matrix:
node-version: ['18.x', '20.x']
steps:
- uses: actions/checkout@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
Кроме того, можно создавать и тестировать код с использованием конкретных версий Node.js.
strategy:
matrix:
node-version: ['10.17.0', '17.9.0']
strategy:
matrix:
node-version: ['10.17.0', '17.9.0']
Либо можно создавать и тестировать код с помощью одной версии Node.js.
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm ci
- run: npm run build --if-present
- run: npm test
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm ci
- run: npm run build --if-present
- run: npm test
Если вы не указываете версию Node.js, GitHub использует версию среды по умолчанию Node.js. Дополнительные сведения см. в разделе Средства выполнения тестов, размещенные в GitHub.
Установка зависимостей
GitHub-размещенные средства выполнения имеют npm и диспетчеры зависимостей Yarn. Вы можете использовать npm и Yarn для установки зависимостей в рабочем процессе перед созданием и тестированием кода. На Windows и GitHubLinux также установлены средства выполнения Grunt, Gulp и Bower.
Можно также кэшировать зависимости, чтобы ускорить рабочий процесс. Дополнительные сведения см. в разделе Справочник по кэшированию зависимостей.
Пример использования npm
В этом примере устанавливаются версии в package-lock.json файле или npm-shrinkwrap.json файле и не будут обновляться файлы блокировки. Выполнение npm ci обычно осуществляется быстрее, чем npm install. Дополнительные сведения см. в статье npm ci и вводе npm ci более быстрых и надежных сборок.
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: npm ci
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: npm ci
С помощью npm install установки зависимостей, определенных в package.json файле. Дополнительные сведения см. в статье npm install.
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: npm install
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: npm install
Пример использования Yarn
В этом примере устанавливаются зависимости, определенные в yarn.lock файле, и предотвращается обновление yarn.lock файла. Дополнительные сведения см. в статье yarn install.
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: yarn --frozen-lockfile
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: yarn --frozen-lockfile
Кроме того, можно установить зависимости, определенные в package.json файле.
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: yarn
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: yarn
Пример использования частного реестра и создания NPMRC-файла
Действие можно использовать setup-node для создания локального .npmrc файла в средстве выполнения, который настраивает реестр и область по умолчанию. Действие setup-node также принимает в качестве входных данных маркер проверки подлинности, используемый для доступа к частным реестрам или публикации пакетов узлов. Дополнительные сведения см. в разделе setup-node.
Чтобы пройти проверку подлинности в частном реестре, нужно сохранить маркер проверки подлинности npm в виде секрета. Например, создайте секрет репозитория NPM_TOKEN. Дополнительные сведения см. в разделе Использование секретов в GitHub Actions.
В приведенном ниже примере в NPM_TOKEN секрета хранится токен проверки подлинности npm. Действие setup-node настраивает .npmrc файл для чтения маркера проверки подлинности npm из переменной NODE_AUTH_TOKEN среды. При использовании setup-node действия для создания .npmrc файла необходимо задать NODE_AUTH_TOKEN переменную среды с секретом, содержащим маркер проверки подлинности npm.
Перед установкой setup-node зависимостей используйте действие для создания .npmrc файла. Это действие имеет два входных параметра. Параметр node-version задает версию Node.js, а параметр registry-url задает реестр по умолчанию. Если в реестре пакетов используются области, необходимо использовать параметр scope. Дополнительные сведения см. в статье npm-scope.
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
always-auth: true
node-version: '20.x'
registry-url: https://registry.npmjs.org
scope: '@octocat'
- name: Install dependencies
run: npm ci
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
always-auth: true
node-version: '20.x'
registry-url: https://registry.npmjs.org
scope: '@octocat'
- name: Install dependencies
run: npm ci
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
В приведенном выше примере создается .npmrc файл со следующим содержимым:
//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
@octocat:registry=https://registry.npmjs.org/
always-auth=true
Примеры кэширования зависимостей
Можно кэшировать и восстанавливать зависимости с помощью setup-nodeдействия.
В следующем примере кэшируются зависимости для npm.
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm install
- run: npm test
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm install
- run: npm test
В следующем примере кэшируются зависимости для Yarn.
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
- run: yarn
- run: yarn test
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
- run: yarn
- run: yarn test
В следующем примере кэшируются зависимости для pnpm (версия 6.10 или более поздняя).
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
# NOTE: pnpm caching support requires pnpm version >= 6.10.0
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@0609f0983b7a228f052f81ef4c3d6510cae254ad
with:
version: 6.10.0
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install
- run: pnpm test
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
# NOTE: pnpm caching support requires pnpm version >= 6.10.0
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@0609f0983b7a228f052f81ef4c3d6510cae254ad
with:
version: 6.10.0
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install
- run: pnpm test
Если у вас есть особые требования или вам нужно управлять кэшированием более детально, можно использовать действие cache. Дополнительные сведения см. в разделе Справочник по кэшированию зависимостей.
Создание и тестирование кода
Вы можете использовать те же команды, которые используются для создания и тестирования кода в локальной среде. Например, если выполнить npm run build шаги сборки, определенные в package.json файле и npm test запустить набор тестов, вы добавите эти команды в файл рабочего процесса.
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm install
- run: npm run build --if-present
- run: npm test
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm install
- run: npm run build --if-present
- run: npm test
Упаковка данных рабочего процесса в виде артефактов
Вы можете сохранить артефакты из шагов сборки и тестирования, чтобы просмотреть их после завершения задания. Например, может потребоваться сохранить файлы журналов, основные дампы, результаты теста или снимки экрана. Дополнительные сведения см. в разделе Хранение и предоставление общего доступа к данным с артефактами рабочего процесса.
Публикация в реестрах пакетов
Вы можете настроить рабочий процесс для публикации пакета Node.js в реестре пакетов после прохождения тестов CI. Дополнительные сведения о публикации в npm и GitHub Packagesсм. в разделе Публикация пакетов Node.js.