Note: GitHub Actions was available for GitHub Enterprise Server 2.22 as a limited beta. The beta has ended. GitHub Actions is now generally available in GitHub Enterprise Server 3.0 or later. For more information, see the GitHub Enterprise Server 3.0 release notes.
- For more information about upgrading to GitHub Enterprise Server 3.0 or later, see "Upgrading GitHub Enterprise Server."
- For more information about configuring GitHub Actions after you upgrade, see the documentation for GitHub Enterprise Server 3.0.
Note: GitHub-hosted runners are not currently supported on GitHub Enterprise Server. You can see more information about planned future support on the GitHub public roadmap.
Einführung
Diese Anleitung zeigt Dir, wie Du einen Workflow für fortlaufende Integration (CI) erstellen kannst, der Node.js-Code baut und testet. Wenn Deine CI-Tests erfolgreich durchlaufen, kannst Du Deinen Code deployen (bereitstellen) oder ein Paket veröffentlichen.
Vorrausetzungen
Wir empfehlen, dass Du ein grundlegendes Verständnis von Node.js, YAML, Workflowkonfigurations-Optionen und die Erstellung einer Workflow-Datei hast. Weitere Informationen findest Du unter:
Using self-hosted runners on GitHub Enterprise Server
When using setup actions (such as actions/setup-LANGUAGE
) on GitHub Enterprise Server with self-hosted runners, you might need to set up the tools cache on runners that do not have internet access. For more information, see "Setting up the tool cache on self-hosted runners without internet access."
Einstieg mit einer Node.js-Workflow-Vorlage
GitHub bietet eine Node.js-Workflow-Vorlage, die für die meisten Node.js-basierten Projekte funktionieren wird. Diese Anleitung enthält npm und Yarn Beispiele, mit denen Du die Vorlage anpassen kannst. Weitere Informationen findest Du in der Node.js-Workflow-Vorlage.
Um schnell loszulegen, füge die Vorlage in das Verzeichnis .github/workflows
Deines Repositorys ein. The workflow shown below assumes that the default branch for your repository is main
.
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x, 12.x, 14.x, 15.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run build --if-present
- run: npm test
Ausführen auf einem anderen Betriebssystem
Die Starter-Workflowvorlage konfiguriert Aufträge zur Ausführung unter Linux und verwendet GitHub-gehostete ubuntu-latest
Läufer. Du kannst den runs-on
(läuft auf) Schlüssel ändern, um Deine Aufträge auf einem anderen Betriebssystem auszuführen. Beispielsweise kannst Du die GitHub-gehosteten Windows-Läufer verwenden.
runs-on: windows-latest
Oder Du kannst auf den GitHub-gehosteten macOS-Läufern laufen.
runs-on: macos-latest
Du kannst Aufträge auch in Docker-Containern ausführen oder einen selbst gehosteten Läufer bereitstellen, der auf Deiner eigenen Infrastruktur läuft. Weitere Informationen findest Du unter „Workflow Syntax für GitHub Actions."
Die Node.js-Version angeben
Der einfachste Weg, eine Node.js-Version anzugeben, ist die Aktion setup-node
von GitHub zu verwenden. Weitere Informationen findest Du unter setup-node
.
Die Aktion setup-node
nimmt eine Node.js-Version als Eingabe und konfiguriert diese Version auf dem Runner. Die Aktion setup-node
findet auf jedem Runner eine bestimmte Version von Node.js aus dem Tools-Cache und legt die notwendigen Binärdateien im PATH
ab, wo sie für den Rest des Jobs bestehen bleiben. Für Node.js mit GitHub Actions wird empfohlen, die Aktion setup-node
zu verwenden, weil dadurch über verschiedenen Runner und verschiedenen Versionen von Node.js hinweg ein konsistentes Verhalten sicherstellt wird. Wenn Du einen selbst gehosteten Runner verwendest, musst Du Node.js installieren und zum PATH
hinzufügen.
The template includes a matrix strategy that builds and tests your code with four Node.js versions: 10.x, 12.x, 14.x, and 15.x. The 'x' is a wildcard character that matches the latest minor and patch release available for a version. Jede Version von Node.js, die im Array node-version
festgelegt ist, erstellt einen Job, der die gleichen Schritte ausführt.
Jeder Job in der Matrix kann mithilfe des Matrix
-Kontexts auf den im Array node-version
definierten Wert zugreifen. Die Aktion setup-node
verwendet den Kontext als Eingabe für node-version
. Die Aktion setup-node
konfiguriert jeden Job mit einer anderen Node.js-Version bevor sie den Code baut und testet. For more information about matrix strategies and contexts, see "Workflow syntax for GitHub Actions" and "Contexts."
strategy:
matrix:
node-version: [10.x, 12.x, 14.x, 15.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
Alternativ kannnst Du auch mit genauen Node.js-Versionen bauen und testen.
strategy:
matrix:
node-version: [8.16.2, 10.17.0]
Oder Du kannst auch mithilfe einer einzelnen Version von Node.js bauen und testen.
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '12.x'
- run: npm ci
- run: npm run build --if-present
- run: npm test
Wenn Du keine Node.js Version festlegst, verwendet GitHub die standardmäßige Node.js Version der Umgebung. For more information, see "Specifications for GitHub-hosted runners".
Abhängigkeiten installieren
Auf GitHub-gehosteten Runnern sind die Abhängigkeitsmanager npm und Yarn installiert. Du kannst npm und Yarn verwenden, um in Ihrem Workflow Abhängigkeiten zu installieren, bevor Du Deinen Code baust und testest. Die auf GitHub gehosteten Windows- und Linux-Runner haben auch Grunt, Gulp und Bower installiert.
When using GitHub-hosted runners, you can also cache dependencies to speed up your workflow. Weitere Informationen findest Du unter „Abhängigkeiten zur Beschleunigung von Workflows im Cache zwischenspeichern“.
Beispiel mit npm
Dieses Beispiel installiert die Abhängigkeiten, die in der Datei package.json definiert sind. Weitere Informationen findest Du unter npm install
.
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '12.x'
- name: Install dependencies
run: npm install
Du kannst mithilfe npm ci
die Versionen in der Datei package-lock.json oder npm-shrinkwrap.json installieren und Aktualisierungen der Sperrdatei verhindern. npm ci
zu verwenden ist gewöhnlich schneller als npm install
laufen zu lassen. Weitere Informationen findest Du unter npm ci
und „Einführung in npm ci
für schnellere und zuverlässigere Builds“.
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '12.x'
- name: Install dependencies
run: npm ci
Beispiel mit Yarn
Dieses Beispiel installiert die Abhängigkeiten, die in der Datei package.json definiert sind. Weitere Informationen findest Du unter Yarn-Installation
.
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '12.x'
- name: Install dependencies
run: yarn
Alternativ kannst Du --frozen-lockfile
übergeben, um die Versionen in der Datei yarn.lock zu installieren und Aktualisierungen der Datei yarn.lock zu verhindern.
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '12.x'
- name: Install dependencies
run: yarn --frozen-lockfile
Beispiel mit einer privaten Registry und Erstellung der Datei .npmrc
Du kannst die setup-node
Aktion verwenden, um eine lokale .npmrc Datei auf dem Läufer zu erstellen, der die Standardregistrierung und -Reichweite konfiguriert. Die setup-node
Aktion akzeptiert als Eingabe auch ein Authentifizierungstoken, das für den Zugriff auf private Registrierungen oder das Veröffentlichen von Knotenpaketen verwendet wird. Weitere Informationen findest Du unter setup-node
.
To authenticate to your private registry, you'll need to store your npm authentication token as a secret. For example, create a repository secret called NPM_TOKEN
. Weitere Informationen findest Du unter „Verschlüsselte Geheimnisse erstellen und verwenden“.
Im folgenden Beispiel enthält das Geheimnis NPM_TOKEN
den npm-Authentifizierungs-Token. Die Aktion setup-node
konfiguriert die Datei .npmrc, um den npm-Authentifizierung-Token aus der Umgebungsvariablen NODE_AUTH_TOKEN
zu lesen. When using the setup-node
action to create an .npmrc file, you must set the NODE_AUTH_TOKEN
environment variable with the secret that contains your npm authentication token.
Bevor Du Abhängigkeiten installierst, verwende die Aktion setup-node
, um die Datei .npmrc zu erstellen. Die Aktion hat zwei Eingabeparameter. Der Parameter node-version
legt die Version von Node.js fest und der Parameter registry-url
bestimmt die Standard-Registry. Wenn Deine Paket-Registry Geltungsbereiche verwendet, musst Du den Parameter scope
verwenden. Weitere Informationen findest Du unter npm-scope
.
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
always-auth: true
node-version: '12.x'
registry-url: https://registry.npmjs.org
scope: '@octocat'
- name: Install dependencies
run: npm ci
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
Das obige Beispiel erzeugt eine .npmrc Datei mit folgendem Inhalt:
//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
@octocat:registry=https://registry.npmjs.org/
always-auth=true
Beispiel zum Zwischenspeichern von Abhängigkeiten im Cache
When using GitHub-hosted runners, you can cache and restore the dependencies using the setup-node
action.
The following example caches dependencies for npm.
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
cache: 'npm'
- run: npm install
- run: npm test
The following example caches dependencies for Yarn.
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
cache: 'yarn'
- run: yarn
- run: yarn test
The following example caches dependencies for pnpm (v6.10+).
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# dokumentation.
# NOTE: pnpm caching support requires pnpm version >= 6.10.0
steps:
- uses: actions/checkout@v2
- uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
with:
version: 6.10.0
- uses: actions/setup-node@v2
with:
node-version: '14'
cache: 'pnpm'
- run: pnpm install
- run: pnpm test
To cache dependencies, you must have a package-lock.json
, yarn.lock
, or pnpm-lock.yaml
file in the root of the repository. If you need more flexible customization, you can use the cache
action. For more information, see "Caching dependencies to speed up workflows".
Deinen Code bauen und testen
Du kannst die gleichen Befehle verwenden, die Du auch lokal verwendest, um Deinen Code zu erstellen und zu testen. Wenn Du beispielsweise npm run build
ausführst, um die in Deinem package.json definierten Build-Schritte zu durchlaufen, und npm test
, um Deine Testsuite laufen zu lassen, dann fügst Di diese Befehle in Deine Workflow-Datei ein.
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '12.x'
- run: npm install
- run: npm run build --if-present
- run: npm test
Workflow-Daten als Artefakte paketieren
Du kannst Artefakte aus deinen Build- und Testschritten speichern, um sie nach dem Abschluss eines Jobs anzuzeigen. Zum Beispiel kann es notwendig sein, Logdateien, Core Dumps, Testergebnisse oder Screenshots zu speichern. Weitere Informationen findest Du unter „Workflow-Daten mittels Artefakten persistieren“.
In Paket-Registries veröffentlichen
Du kannst Deinen Workflow so konfigurieren, dass Dein Node.js-Paket nach Bestehen Deiner CI-Tests in einer Paket-Registry veröffentlicht wird. Weitere Informationen zum Veröffentlichen in npm und GitHub Packages findest Du unter „Node.js Pakete veröffentlichen“.