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.

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

  1. Gehen Sie zum VS Code Source Control-Ansicht.

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

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

  4. Comitten Sie die Änderungen.

  5. Pushen Sie die Ä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, fügen Sie die modifizierte Datei zu einem Commit hinzu.

    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, Checkout, Install, Authenticate and 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.