GitHub Actions
In diesem Tutorial lernen Sie, wie Sie GitHub Actions verwenden, um Zugriffsrecht-Änderungen automatisch auf ArcGIS Server 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.
-
Sie haben ein GitHub-Konto.
-
Sie haben administrative Rechte für security.manager NEXT.
-
Sie haben ein GitHub-Repository wie in Ein GitHub-Repository einrichten beschrieben.
GitHub Secrets erstellen
Um die GitHub Action zu authentifizieren, sind einige Administrator-Anmeldedaten erforderlich. Committen Sie niemals Anmeldedaten direkt zu Repository-Dateien, wo andere Personen sie 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, Node und security.manager CLI zu verwenden.
jobs:
sync-policies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install security.manager CLI
run: npm install -g @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=$(secmanctl login -d "$SM_SERVER_URL" -u "$SM_USERNAME" -p "$SM_PASSWORD" --plain)
# Sync the complete policies folder to ArcGIS Server
secmanctl sync -f policies -d "$SM_SERVER_URL" -t "$TOKEN"
| 1 | Name des Schritts. |
| 2 | Einige 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 | Etwas 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:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install security.manager CLI
run: npm install -g @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=$(secmanctl login -d "$SM_SERVER_URL" -u "$SM_USERNAME" -p "$SM_PASSWORD" --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 zur VS Code Source Control.
-
Überprüfen Sie und fügen Sie die Änderungen hinzu.
-
Geben Sie eine Commit-Nachricht ein: Add GitHub Action for automated policy synchronization
-
Pushen Sie Ä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 stagen Sie die modifizierte Datei.
-
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, Install CLI, Validate, 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.