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.

  1. Gehen Sie zur Weboberfläche Ihres GitHub-Repositories.

  2. Klicken Sie auf den Settings Tab.

  3. Klicken Sie in der linken Seitenleiste auf Secrets and variables > Actions.

  4. Klicken Sie New repository secret.

  5. Erstellen Sie die folgenden Secrets für einen Administrator-Benutzer, der die Berechtigung hat, security.manager-Zugriffsrechte zu ändern:

    Secret Name Beschreibung

    ARCGIS_USERNAME

    Administrator-Benutzername für ArcGIS Enterprise Portal (für föderierte Server) oder ArcGIS Server (für eigenständige Server)

    ARCGIS_PASSWORD

    Passwort für den Administrator-Benutzer

    ARCGIS_SERVER_URL

    URL 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.

  1. In VS Code erstellen Sie einen neuen Ordner .github im Repository-Root.

  2. Innerhalb von .github erstellen Sie einen Unterordner namens workflows.

  3. 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.

  1. Gehen Sie zur VS Code Source Control.

  2. Überprüfen Sie und fügen Sie die Änderungen hinzu.

  3. Geben Sie eine Commit-Nachricht ein: Add GitHub Action for automated policy synchronization

  4. Pushen Sie Änderungen zu GitHub.

Konfiguration überprüfen

Ändern Sie die Zugriffsrecht-Datei, um den automatisierten Workflow zu testen.

  1. Öffnen Sie policies/services/SampleWorldCities.json in VS Code.

  2. 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)) || '%'"
            },
  3. Committen und pushen Sie die Änderung, um die GitHub Action auszulösen.

    1. In der VS Code Source Control-Ansicht stagen Sie die modifizierte Datei.

    2. Committen Sie mit der Nachricht Update cities filter to the first two letters.

    3. Pushen Sie die Änderungen, um die GitHub Action auszulösen.

Überwachen Sie nun die Workflow-Ausführung.

  1. Gehen Sie zu Ihrem GitHub-Repository.

  2. Klicken Sie auf den Actions Tab.

  3. Sie sollten eine Workflow-Ausführung mit dem Titel Update cities filter to the first two letters sehen.

  4. Klicken Sie auf die Workflow-Ausführung, um Ausführungsdetails zu sehen.

  5. Überwachen Sie die Schritte: Setup, Install CLI, Validate, Sync, Report.

Überprüfen Sie das Zugriffsrecht-Update in security.manager.

  1. Melden Sie sich bei security.manager Manager UI an.

  2. Navigieren Sie zum SampleWorldCities Service.

  3. Überprüfen Sie, dass das Zugriffsrecht Ihre Änderungen widerspiegelt, dass die Städtenamen den ersten zwei Buchstaben des Benutzernamens entsprechen müssen.

  4. 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.