GitHub Actions
In diesem Tutorial lernen Sie, wie Sie GitHub Actions verwenden, um Zugriffsrecht-Änderungen automatisch auf ArcGIS Enterprise bereitzustellen.
Aktuell werden Ihre Änderungen nach dem Committen und Pushen in GitHub gespeichert, aber ArcGIS Enterprise ist nicht synchronisiert. Daher müssen Sie eine GitHub Action erstellen, um Änderungen automatisch zu synchronisieren, wenn ein neuer Commit gepusht wird.
Dieses Tutorial wurde für ArcGIS Enterprise 11.5 im Dezember 2025 getestet.
Voraussetzungen
Überprüfen Sie die Voraussetzungen für dieses Tutorial:
-
VS Code ist auf Ihrem lokalen Computer installiert.
-
Git ist auf Ihrem lokalen Computer installiert.
-
Sie haben ein GitHub-Konto. Dieses ist mit VS Code verbunden.
-
Sie haben ein GitHub-Repository wie in Ein GitHub-Repository einrichten beschrieben.
-
Die ArcGIS Enterprise Instanz ist von GitHub Actions aus erreichbar (z.B. über eine öffentliche URL oder VPN).
-
Sie haben administrative Rechte für security.manager NEXT.
GitHub Secrets erstellen
Um die GitHub Action zu authentifizieren, sind Anmeldedaten mit Administratorrechten erforderlich. Committen Sie niemals Anmeldedaten in Repository-Dateien, die andere Personen lesen können. Erstellen Sie stattdessen GitHub Secrets, um die Anmeldedaten zu speichern.
-
Gehen Sie zur Weboberfläche Ihres GitHub-Repositories.
-
Klicken Sie auf den Settings Tab.
-
Klicken Sie in der linken Seitenleiste auf Secrets and variables > Actions.
-
Klicken Sie New repository secret.
-
Erstellen Sie die folgenden Secrets für einen Administrator-Benutzer, der die Berechtigung hat, security.manager-Zugriffsrechte zu ändern:
Secret Name Beschreibung ARCGIS_USERNAMEAdministrator-Benutzername für ArcGIS Enterprise Portal (für föderierte Server) oder ArcGIS Server (für eigenständige Server)
ARCGIS_PASSWORDPasswort für den Administrator-Benutzer
ARCGIS_SERVER_URLURL zu Ihrem ArcGIS Server mit Port (z.B.
https://arcgis.example.com:6443/arcgis)
Das Workflow-Verzeichnis erstellen
Speichern Sie alle Dateien für den GitHub Actions-Workflow in einem Ordner .github/workflows.
-
In VS Code erstellen Sie einen neuen Ordner
.githubim Repository-Root. -
Innerhalb von
.githuberstellen Sie einen Unterordner namensworkflows. -
Ihre Struktur sollte nun folgendes enthalten:
security-manager-policies/ ├── .github/ │ └── workflows/ ├── policies/ │ └── services/ │ └── SampleWorldCities.json └── README.md
Die Workflow-Datei erstellen
Erstellen Sie die Workflow-Datei für die automatisierte Zugriffsrecht-Synchronisation.
Im workflows Ordner erstellen Sie eine Datei namens sync-policies.yml.
Diese Datei konfiguriert den Workflow, um die Dateien nach Pushes oder Pull Requests zu synchronisieren.
Fügen Sie einen Namen für die GitHub Action zur Datei hinzu. Sie können einen Namen frei wählen.
name: Sync Policies to security.manager
Die Action sollte laufen, wenn Pushes oder Pull Requests zum main-Branch auftreten, die Änderungen im policies/** Ordner enthalten.
Fügen Sie also einen Trigger für beide hinzu.
name: Sync Policies to security.manager
on:
push:
branches: [ main ]
paths:
- 'policies/**'
pull_request:
branches: [ main ]
paths:
- 'policies/**'
Fügen Sie einen Job mit der ID sync-policies hinzu, der auf dem neuesten Ubuntu läuft und einen leeren steps Bereich hat.
name: Sync Policies to security.manager
on:
push:
branches: [ main ]
paths:
- 'policies/**'
pull_request:
branches: [ main ]
paths:
- 'policies/**'
jobs:
sync-policies: (1)
runs-on: ubuntu-latest (2)
steps: (3)
| 1 | ID des Jobs |
| 2 | Der Job wird auf dem neuesten Ubuntu ausgeführt |
| 3 | Eine leere Sequenz von Aufgaben |
Jetzt müssen Sie definieren, den heruntergeladenen Repository-Code zu verwenden, pnpm als Paketmanager für Node.js zu nutzen und
die security.manager CLI darüber zu installieren.
jobs:
sync-policies:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install security.manager CLI via pnpm
uses: pnpm/action-setup@v5
with:
version: 10
run_install: |
- recursive: true
args: [--strict-peer-dependencies]
- args: [--global, '@conterra/secmanctl']
Fügen Sie einen Schritt hinzu, um sich zu authentifizieren und alle Zugriffsrechte zu ArcGIS Enterprise zu synchronisieren. Verwenden Sie die security.manager CLI-Befehle für diese Schritte.
- name: Authenticate and sync policies (1)
env: (2)
SM_USERNAME: ${{ secrets.ARCGIS_USERNAME }}
SM_PASSWORD: ${{ secrets.ARCGIS_PASSWORD }}
SM_SERVER_URL: ${{ secrets.ARCGIS_SERVER_URL }}
run: | (3)
# Authenticate with ArcGIS Server and get token
TOKEN=$(echo $SM_PASSWORD | secmanctl login -d "$SM_SERVER_URL" -u "$SM_USERNAME" -p - -e 1 --plain)
# Sync the complete policies folder to ArcGIS Server
secmanctl sync -f policies -d "$SM_SERVER_URL" -t "$TOKEN"
| 1 | Name des Schritts. |
| 2 | Variablen setzen |
| 3 | Ein Skript mit security.manager CLI-Befehlen ausführen |
Fügen Sie einen Schritt hinzu, um zu melden, dass der Workflow beendet wurde, und speichern Sie die Datei.
- name: Report sync results (1)
if: always() (2)
run: | (3)
echo "Policy synchronization completed"
echo "Check security.manager interface to verify policy updates"
| 1 | Name des Schritts. |
| 2 | Den Schritt auch ausführen, wenn vorherige Schritte fehlschlagen |
| 3 | Text ausgeben |
Ihre vollständige Zugriffsrecht-Datei sollte so aussehen.
name: Sync Policies to security.manager
on:
push:
branches: [ main ]
paths:
- 'policies/**'
pull_request:
branches: [ main ]
paths:
- 'policies/**'
jobs:
sync-policies:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install security.manager CLI via pnpm
uses: pnpm/action-setup@v5
with:
version: 10
run_install: |
- recursive: true
args: [--strict-peer-dependencies]
- args: [--global, '@conterra/secmanctl']
- name: Authenticate and sync policies
env:
SM_USERNAME: ${{ secrets.ARCGIS_USERNAME }}
SM_PASSWORD: ${{ secrets.ARCGIS_PASSWORD }}
SM_SERVER_URL: ${{ secrets.ARCGIS_SERVER_URL }}
run: |
# Authenticate with ArcGIS Server and get token
TOKEN=$(echo $SM_PASSWORD | secmanctl login -d "$SM_SERVER_URL" -u "$SM_USERNAME" -p - -e 1 --plain)
# Sync the complete policies folder to ArcGIS Server
secmanctl sync -f policies -d "$SM_SERVER_URL" -t "$TOKEN"
- name: Report sync results
if: always()
run: |
echo "Policy synchronization completed"
echo "Check security.manager interface to verify policy updates"
Änderungen committen und pushen
Committen und pushen Sie den Workflow zu GitHub.
-
Gehen Sie zum VS Code Source Control-Ansicht.
-
Überprüfen und fügen Sie die Änderungen zu einem Commit hinzu.
-
Geben Sie eine Commit-Nachricht ein: Add GitHub Action for automated policy synchronization
-
Comitten Sie die Änderungen.
-
Pushen Sie die Änderungen zu GitHub.
Konfiguration überprüfen
Ändern Sie die Zugriffsrecht-Datei, um den automatisierten Workflow zu testen.
-
Öffnen Sie
policies/services/SampleWorldCities.jsonin VS Code. -
Machen Sie eine kleine Änderung, wie das Modifizieren einer Abfragebedingung:
"cities_username_filter":{ "type": "feature", "query": "CITY_NAME LIKE UPPER(SUBSTRING('${user.username}', 1, 2)) || '%'" }, -
Committen und pushen Sie die Änderung, um die GitHub Action auszulösen.
-
In der VS Code Source Control-Ansicht, fügen Sie die modifizierte Datei zu einem Commit hinzu.
-
Committen Sie mit der Nachricht Update cities filter to the first two letters.
-
Pushen Sie die Änderungen, um die GitHub Action auszulösen.
-
Überwachen Sie nun die Workflow-Ausführung.
-
Gehen Sie zu Ihrem GitHub-Repository.
-
Klicken Sie auf den Actions Tab.
-
Sie sollten eine Workflow-Ausführung mit dem Titel Update cities filter to the first two letters sehen.
-
Klicken Sie auf die Workflow-Ausführung, um Ausführungsdetails zu sehen.
-
Überwachen Sie die Schritte: Setup, Checkout, Install, Authenticate and Sync, Report.
Überprüfen Sie das Zugriffsrecht-Update in security.manager.
-
Melden Sie sich bei security.manager Manager UI an.
-
Navigieren Sie zum SampleWorldCities Service.
-
Überprüfen Sie, dass das Zugriffsrecht Ihre Änderungen widerspiegelt, dass die Städtenamen den ersten zwei Buchstaben des Benutzernamens entsprechen müssen.
-
Testen Sie den Service mit einem Nicht-Administrator-Benutzer, um sicherzustellen, dass die aktualisierte Einschränkung angewendet wird.
Zusammenfassung
In diesem Tutorial haben Sie gelernt, wie Sie automatisierte Zugriffsrecht-Synchronisation mit GitHub Actions einrichten. Sie haben Anmeldedaten sicher mit GitHub Secrets gespeichert und einen Workflow für die automatisierte Zugriffsrecht-Bereitstellung erstellt.
Folgen Sie Zugriffsrecht-Validierung, um zu lernen, wie Sie Zugriffsrecht-Validierung zur Action hinzufügen, um das Veröffentlichen ungültiger Zugriffsrechte zu vermeiden.