Skip to main content

pack publish

Veröffentlicht ein QL-Bibliothekspaket in einer Paketregistrierung.

Wer kann dieses Feature verwenden?

GitHub CodeQL wird nach der Installation auf Benutzerbasis lizenziert. Du kannst CodeQL nur für bestimmte Aufgaben unter den Lizenzeinschränkungen verwenden. Weitere Informationen findest du unter Informationen zur CodeQL-CLI.

Wenn du über eine GitHub Advanced Security-Lizenz verfügst, kannst du CodeQL für eine automatisierte Analyse sowie für Continuous Integration und Continuous Delivery verwenden. Weitere Informationen findest du unter Informationen zu GitHub Advanced Security.

In diesem Inhalt wird die neueste Version von CodeQL CLI beschrieben. Weitere Informationen zu diesem Thema findest du unter https://github.com/github/codeql-cli-binaries/releases.

Um Details zu den Optionen anzuzeigen, die für diesen Befehl in früheren Releases verfügbar sind, führe den Befehl mit der Option --help im Terminal aus.

Übersicht

Shell
codeql pack publish [--dry-run] [--threads=<num>] [--ram=<MB>] [--pack=<folder> | <package.tgz>] <options>... -- <dir>

Beschreibung

Veröffentlicht ein QL-Bibliothekspaket in einer Paketregistrierung.

Dieser Befehl veröffentlicht ein Paket in einer Paketregistrierung. Vor der Veröffentlichung wird das Paket zunächst kompiliert (falls erforderlich) und gebündelt.

Verfügbar seit v2.6.0.

Optionen

Primäre Optionen

<dir>

Das Stammverzeichnis des Pakets oder Arbeitsbereichs, standardmäßig ist dies das aktuelle Arbeitsverzeichnis. Wenn dieser Parameter auf ein Verzeichnis verweist, das eine Datei „qlpack.yml“ enthält, wird dieser Vorgang nur für dieses CodeQL-Paket ausgeführt. Wenn dieser Parameter auf ein Verzeichnis verweist, das eine Datei „codeql-workspace.yml“ enthält, wird dieser Vorgang für alle CodeQL-Pakete im Arbeitsbereich ausgeführt.

-n, --[no-]dry-run

Gibt aus, welche Aktionen ausgeführt worden wären, veröffentlicht das Paket aber nicht.

--no-keep

Löscht das Paketbündel nach der Veröffentlichung.

-j, --threads=<num>

Dient zum Festlegen der Anzahl von Threads für die Kompilierung von Abfragen.

Der Standardwert lautet 1. Du kannst 0 übergeben, um jeweils einen Thread pro Kern auf dem Computer zu verwenden, oder -N, um N Kerne ungenutzt zu lassen. (Es wird allerdings immer noch mindestens ein Thread verwendet.)

-M, --ram=<MB>

Legt die Gesamtmenge des RAM fest, die der Compiler verwenden darf.

--no-precompile

[Erweitert] Vermeidet eine Vorkompilierung des Kompilierungscaches im Paketausgabeverzeichnis. Dies reduziert die Größe des Pakets und die Zeit, die zum Erstellen des Pakets benötigt wird. Es ist jedoch eine Kompilierung erforderlich, bevor das Paket ausgeführt werden kann. Nur bei Abfragepaketen sinnvoll.

--no-validate-extensions

[Erweitert] Vermeide die Validierung von Datenerweiterungen im Rahmen des Kompilierungsschritts.

Verfügbar seit v2.13.3.

--no-overwrite

[Erweitert] Vermeidet das erneute Kompilieren und Überschreiben einer vorhandenen kompilierten Ausgabe aus einem früheren Aufruf dieses Befehls.

-p, --pack=<folder> | <package.tgz>

[Erweitert] Der Speicherort für den gepackten Tarball. Wenn diese Option mit „.tgz“ endet, wird der Tarball mit diesem Namen erstellt. Andernfalls wird am angegebenen Pfad ein neues Verzeichnis erstellt, in dem mindestens ein Tarball erstellt wird. Die Verwendung von „.tgz“ ist für Arbeitsbereiche nicht zulässig.

--file=<package.tgz>

[Erweitert] Lädt package.tgz direkt in die Paketregistrierung hoch, ohne zu versuchen, etwas Neues zu erstellen oder zu bündeln.

--[no-]allow-prerelease

Erlaubt Pakete mit Vorabversionsqualifizierern (z. B. X.Y.Z-qualifier). Ohne dieses Flag werden Vorabversionspakete ignoriert.

Verfügbar seit v2.11.3.

Optionen zum Konfigurieren, auf welche CodeQL-Pakete dieser Befehl angewandt werden soll.

--format=<fmt>

Dient zum Auswählen des Ausgabeformats: text (Standardwert) oder json

--groups=[-]<group>[,[-]<group>...]

Listet die CodeQL-Paketgruppen auf, die bei diesem Vorgang ein- oder ausgeschlossen werden sollen. Ein qlpack im angegebenen Arbeitsbereich wird in folgenden Fällen eingeschlossen:

  • Es befindet sich in mindestens einer der Gruppen, die ohne Minuszeichen aufgeführt sind (diese Bedingung wird automatisch erfüllt, wenn keine Gruppen ohne Minuszeichen aufgeführt werden).
  • Es befindet sich in keiner Gruppe, die mit einem Minuszeichen aufgeführt ist.

Optionen zum Einrichten der Kompilierungsumgebung

--search-path=<dir>[:<dir>...]

Eine Liste der Verzeichnisse, in denen QL-Pakete gefunden werden können. Jedes Verzeichnis kann entweder ein QL-Paket (oder ein Bündel von Paketen mit einer Datei vom Typ .codeqlmanifest.json am Stamm) oder das unmittelbar übergeordnete Element eines oder mehrerer solcher Verzeichnisse sein.

Wenn der Pfad mehrere Verzeichnisse enthält, definiert deren Reihenfolge ihre Rangfolge: Ist ein Paketname, der aufgelöst werden muss, in mehreren der Verzeichnisstrukturen enthalten, wird die erste Angabe verwendet.

Ein entsprechender Verweis beim Auschecken des Open-Source-CodeQL-Repositorys sollte funktionieren, wenn eine der darin enthaltenen Sprachen abgefragt wird.

Wenn du das CodeQL-Repository als gleichgeordnetes Element der entpackten CodeQL-Toolkette ausgecheckt hast, musst du diese Option nicht verwenden. Solche gleichgeordneten Verzeichnisse werden immer nach QL-Paketen durchsucht, die andernfalls nicht gefunden werden können. (Wenn diese Standardeinstellung nicht funktioniert, solltest du unbedingt --search-path in einer Benutzerkonfigurationsdatei festlegen.)

(Hinweis: Unter Windows wird ; als Pfadtrennzeichen verwendet.)

--additional-packs=<dir>[:<dir>...]

Bei Angabe dieser Verzeichnisliste werden die Verzeichnisse vor den Verzeichnissen in --search-path nach Paketen durchsucht. Die Reihenfolge zwischen diesen Elementen spielt keine Rolle. Wenn ein Paketname über diese Liste an zwei verschiedenen Stellen gefunden wird, handelt es sich um einen Fehler.

Dies ist hilfreich, wenn du vorübergehend eine neue Version eines Pakets entwickelst, die auch am Standardpfad vorhanden ist. Andererseits wird davon abgeraten, diese Option in einer Konfigurationsdatei außer Kraft zu setzen. Einige interne Aktionen fügen diese Option direkt hinzu, wodurch alle konfigurierten Werte überschrieben werden.

(Hinweis: Unter Windows wird ; als Pfadtrennzeichen verwendet.)

--library-path=<dir>[:<dir>...]

[Erweitert] Eine optionale Liste von Verzeichnissen, die dem unformatierten Suchpfad für den Import von QL-Bibliotheken hinzugefügt werden. Sollte nur verwendet werden, wenn du QL-Bibliotheken verwendest, die nicht als QL-Pakete gepackt wurden.

(Hinweis: Unter Windows wird ; als Pfadtrennzeichen verwendet.)

--dbscheme=<file>

[Erweitert] Definiert explizit, für welche Abfragen des Datenbankschemas kompiliert werden sollen. Sollte nur von Aufrufer*innen angegeben werden, die sehr genau wissen, was sie tun.

--compilation-cache=<dir>

[Erweitert] Gibt ein zusätzliches Verzeichnis an, das als Kompilierungscache verwendet werden soll.

--no-default-compilation-cache

[Erweitert] Verwendet keine Kompilierungscaches an Standardspeicherorten, z. B. im QL-Paket mit der Abfrage oder im Verzeichnis der CodeQL-Toolkette.

Optionen zum Konfigurieren des CodeQL-Paket-Managers

--registries-auth-stdin

Führt eine Authentifizierung bei GitHub Enterprise Server-Containerregistrierungen durch, indem eine durch Trennzeichen getrennte Liste von <registry_url>=<token>-Paaren übergeben wird.

Du kannst https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2 übergeben, um dich bei zwei GitHub Enterprise Server-Instanzen zu authentifizieren.

Dadurch werden die Umgebungsvariablen CODEQL_REGISTRIES_AUTH und GITHUB_TOKEN überschrieben. Wenn du dich nur bei der Containerregistrierung von github.com authentifizieren musst, kannst du dich stattdessen mit der einfacheren Option --github-auth-stdin authentifizieren.

--github-auth-stdin

Authentifiziere dich bei der Containerregistrierung auf github.com, indem du auf github.com ein GitHub Apps-Token oder ein persönliches Zugriffstoken über die Standardeingabe übergibst.

Für die Authentifizierung bei Containerregistrierungen in GitHub Enterprise Server übergibst du --registries-auth-stdin oder verwendest die Umgebungsvariable „CODEQL_REGISTRIES_AUTH“.

Dadurch wird die GITHUB_TOKEN-Umgebungsvariable überschrieben.

Allgemeine Optionen

-h, --help

Zeigt diesen Hilfetext an.

-J=<opt>

[Erweitert] Dient zum Angeben einer Option für die JVM-Instanz, die den Befehl ausführt.

(Beachte, dass Optionen, die Leerzeichen enthalten, nicht ordnungsgemäß verarbeitet werden.)

-v, --verbose

Ermöglicht die inkrementelle Erhöhung der Anzahl ausgegebener Statusmeldungen.

-q, --quiet

Ermöglicht die inkrementelle Verringerung der Anzahl ausgegebener Statusmeldungen.

--verbosity=<level>

[Erweitert] Dient zum expliziten Festlegen des Ausführlichkeitsgrads auf „errors“, „warnings“, „progress“, „progress+“, „progress++“ oder „progress+++“. Überschreibt -v und -q:

--logdir=<dir>

[Erweitert] Ermöglicht das Schreiben detaillierter Protokolle in eine oder mehrere Dateien im angegebenen Verzeichnis mit generierten Namen, die Zeitstempel und den Namen des ausgeführten Unterbefehls enthalten.

(Um eine Protokolldatei mit einem Namen zu schreiben, über den du die volle Kontrolle hast, gib stattdessen --log-to-stderr an, und leite stderr wie gewünscht um.)

--common-caches=<dir>

[Erweitert] Steuert den Speicherort zwischengespeicherter Daten auf dem Datenträger, der zwischen mehreren Ausführungsvorgängen der CLI beibehalten wird, z. B. heruntergeladene QL-Pakete und kompilierte Abfragepläne. Wenn dies nicht explizit festgelegt ist, wird dieses Verzeichnis standardmäßig auf ein Verzeichnis mit dem Namen .codeql festgelegt, das sich im Startverzeichnis des Benutzer. Es wird erstellt, wenn es noch nicht vorhanden ist.

Verfügbar seit v2.15.2.