Release von Werfer 1.1: Verbesserungen im heutigen Werfer und PlĂ€ne fĂŒr die Zukunft.

Release von Werfer 1.1: Verbesserungen im heutigen Werfer und PlĂ€ne fĂŒr die Zukunft.

werf — unser Open-Source GitOps CLI-Tool zum Erstellen und Bereitstellen von Anwendungen in Kubernetes. Wie versprochen, markierte die Veröffentlichung von Version v1.0 den Beginn der EinfĂŒhrung neuer Funktionen in werf und einer Überarbeitung gewohnter AnsĂ€tze. Jetzt freuen wir uns, die Version v1.1 vorzustellen, die einen bedeutenden Schritt in der Entwicklung darstellt und die Grundlage fĂŒr die Zukunft bildet. Compiler werf. Die Version ist derzeit im Kanal 1.1 ea.

verfĂŒgbar. Die Grundlage dieser Veröffentlichung ist eine neue Architektur fĂŒr die Stages-Speicherung und eine Optimierung der Funktionsweise beider Compiler (fĂŒr Stapel und Dockerfile). Die neue Architektur der Speicherung eröffnet Möglichkeiten fĂŒr verteilte Builds von mehreren Hosts und parallele Builds auf einem Host.

Die Optimierung umfasst die Eliminierung unnötiger Berechnungen wĂ€hrend der Berechnung der Stages-Signaturen und die Umstellung auf effizientere Mechanismen zur Berechnung von PrĂŒfziffern fĂŒr Dateien. Diese Optimierung verringert die durchschnittliche Build-Zeit von Projekten mit werf. Und Leerlauf-Bauten, bei denen alle Stufen im Cache vorhanden sind, stages-storage, jetzt wirklich schnell. In den meisten FĂ€llen wird der Wiederaufbau schneller als in 1 Sekunde abgeschlossen sein! Dies gilt auch fĂŒr die ÜberprĂŒfungsverfahren der Phasen wĂ€hrend der Teamarbeit. werf deploy und werf run.

In diesem Release wurde zudem eine Strategie zur inhaltsbasierten Tagging von Images eingefĂŒhrt — inhaltsbasiertes Tagging, die jetzt standardmĂ€ĂŸig aktiviert ist und die einzige empfohlene Methode darstellt.

Lassen Sie uns die wichtigsten Neuerungen in werf v1.1 im Detail betrachten und zugleich ĂŒber zukĂŒnftige PlĂ€ne sprechen.

Was hat sich in werf v1.1 geÀndert?

Ein neues Format zur Benennung von Phasen und ein Algorithmus zur Auswahl von Phasen aus dem Cache

Neue Regel zur Generierung des Phasennamens. Jetzt wird fĂŒr jede Phasenbuild ein eindeutiger Phasename generiert, der aus zwei Teilen besteht: einer Signatur (wie in v1.0) plus einer einzigartigen Zeitidentifikation.

Zum Beispiel könnte der vollstÀndige Name des Phasenimages so aussehen:

werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835


 oder allgemein wie folgt:

werf-stages-storage/PROJEKT:SIGNATUR-ZEITSTEMPEL_MILLISEC

Hier:

  • SIGNATUR — dies ist die Signatur der Phase, die den Inhaltsidentifikator der Phase darstellt und von der Geschichte der Bearbeitungen in Git abhĂ€ngt, die zu diesem Inhalt fĂŒhrten;
  • ZEITSTEMPEL_MILLISEC — ist eine garantiert eindeutige Identifikation eines Images, die beim Erstellen eines neuen Images generiert wird.

Der Algorithmus zur Auswahl der Stufen aus dem Cache basiert auf der ÜberprĂŒfung der Zugehörigkeit von Git-Commits:

  1. Werf berechnet die Signatur einer bestimmten Stufe.
  2. In stages-storage Es können mehrere Stufen mit dieser Signatur existieren. Werf wÀhlt alle passenden Stufen mit dieser Signatur aus.
  3. Wenn die aktuelle Stufe mit Git verbunden ist (git-archive, benutzerdefinierte Stufe mit Git-Patches: installieren, beforeSetup, setup; oder git-latest-patch), wĂ€hlt werf nur die Stufen aus, die mit dem Commit verbunden sind, der der VorgĂ€nger des aktuellen Commits ist (fĂŒr den der Build aufgerufen wird).
  4. Aus den verbleibenden passenden Stufen wird eine ausgewĂ€hlt – die Ă€lteste nach Erstellungsdatum.

Eine Stufe kann fĂŒr verschiedene Git-Branches die gleiche Signatur haben. Aber werf verhindert die Verwendung von Cache, das mit verschiedenen Branches verbunden ist, zwischen diesen Branches, selbst wenn die Signaturen ĂŒbereinstimmen.

→ Dokumentation.

Neuer Algorithmus zur Erstellung und Speicherung von Stufen im Stufenspeicher

Wenn wÀhrend der Auswahl der Stufen aus dem Cache werf keine passende Stufe findet, wird der Prozess zum Erstellen einer neuen Stufe initiiert.

Beachten Sie, dass mehrere Prozesse (auf einem oder mehreren Hosts) zur gleichen Zeit mit dem Zusammenstellen der gleichen Phase beginnen können. Werf nutzt einen Algorithmus zur optimistischen Sperrung. stages-storage zum Zeitpunkt der Speicherung des neu erstellten Images in stages-storage. Somit sperrt Werf, wenn die neue Phase bereit ist, stages-storage und speichert das neu erstellte Image nur, wenn dort noch kein passendes Image vorhanden ist. (basierend auf Signature und anderen Parametern – siehe den neuen Algorithmus zur Auswahl von Phasen aus dem Cache).

Das neu erstellte Image wird garantiert eine eindeutige Kennung haben nach ZEITSTEMPEL_MILLISEC (siehe das neue Format zur Benennung der Phasen).Falls in stages-storage ein passendes Image gefunden wird, verwirft Werf das neu erstellte Image und verwendet das Image aus dem Cache.

Anders gesagt: Der erste Prozess, der das Image fertigstellt (der schnellste), erhĂ€lt das Recht, es im stages-storage zu speichern (und genau dieses einzige Image wird fĂŒr alle Builds verwendet). Ein langsamerer Build-Prozess wird niemals einen schnelleren Prozess daran hindern, die Ergebnisse des aktuellen Builds zu speichern und mit dem nĂ€chsten Build fortzufahren.

→ Dokumentation.

Die Leistung des Dockerfile-Builders wurde verbessert.

Derzeit besteht die Pipeline-Stufen fĂŒr das aus Dockerfile erstellte Image aus einer einzigen Stufe — dockerfile. Bei der Berechnung der Signatur wird die PrĂŒfziffer der Dateien berĂŒcksichtigt, context, die beim Bauen verwendet werden. Vor dieser Verbesserung hat werf rekursiv alle Dateien durchlaufen und die PrĂŒfziffer ermittelt, indem er den Kontext und die Modi jeder Datei summierte. Ab Version v1.1 kann werf die berechneten PrĂŒfziffern nutzen, die im Git-Repository gespeichert sind.

Der Algorithmus basiert auf git ls-tree. Der Algorithmus berĂŒcksichtigt die EintrĂ€ge in .dockerignore und durchsucht das Dateibaum nur bei Bedarf rekursiv. Dadurch haben wir uns von der Dateisystemauslesung getrennt, und die AbhĂ€ngigkeit des Algorithmus von der GrĂ¶ĂŸe context spielt keine wesentliche Rolle.

Der Algorithmus ĂŒberprĂŒft auch untracked Dateien und berĂŒcksichtigt sie bei Bedarf in der PrĂŒfziffer.

Die Leistung beim Importieren von Dateien wurde verbessert.

In den Versionen von werf v1.1 kommt ein rsync-Server zum Einsatz beim Import von Dateien aus Artefakten und Images.Zuvor wurde der Import in zwei Schritten unter Verwendung der Montageverzeichnisse aus dem Hosts-System durchgefĂŒhrt.

Die Importleistung in macOS ist nicht mehr auf Docker-Volumes beschrÀnkt, und die Importe erfolgen jetzt in der gleichen Zeit wie unter Linux und Windows.

Inhaltsbasiertes Tagging

Werf v1.1 unterstĂŒtzt das sogenannte Tagging nach Inhaltsbasis des Images — inhaltsbasiertes Tagging. Die Tags der resultierenden Docker-Images hĂ€ngen vom Inhalt dieser Images ab.

Beim AusfĂŒhren des Befehls werf publish --tags-by-stages-signature oder werf ci-env --tagging-strategy=stages-signature die veröffentlichten Images werden mit dem sogenannten Stadien-Signatur des Images. Jedes Image wird mit seiner eigenen Stadien-Signatur dieses Images getaggt, die nach denselben Regeln berechnet wird wie die regulĂ€re Signatur jeder einzelnen Phase, aber als aggregierender Identifier des Images dient.

Die Stadien-Signatur eines Images hÀngt ab von:

  1. dem Inhalt dieses Images;
  2. der Geschichte der Änderungen in Git, die zu diesem Inhalt gefĂŒhrt haben.

Im Git-Repository gibt es immer leere Commits, die den Inhalt der Image-Dateien nicht Àndern. Zum Beispiel Commits nur mit Kommentaren oder Merge-Commits, oder Commits, die die Dateien in Git Àndern, die nicht in das Image importiert werden.

Durch die Verwendung von content-basiertem Tagging können Probleme mit ĂŒberflĂŒssigen Neustarts der Anwendungspods in Kubernetes aufgrund von NamensĂ€nderungen des Images gelöst werden, selbst wenn sich der Inhalt des Images nicht geĂ€ndert hat. Dies ist ĂŒbrigens einer der GrĂŒnde, die es erschweren, mehrere Mikroschnittstellen einer Anwendung in einem einzigen Git-Repository zu speichern.

Außerdem ist content-basiertes Tagging eine zuverlĂ€ssigere Methode zur Kennzeichnung als das Tagging ĂŒber Git-Zweige, da der Inhalt der resultierenden Images nicht von der AusfĂŒhrungsreihenfolge der Pipelines im CI-System zur Erstellung mehrerer Commits desselben Zweigs abhĂ€ngt.

Wichtig: ab jetzt stages-signature — ist die einzig empfohlene Tagging-Strategie. Diese wird standardmĂ€ĂŸig im Befehl werf ci-env verwendet (es sei denn, es wird ausdrĂŒcklich ein anderes Tagging-Schema angegeben).

→ Dokumentation. Eine separate Veröffentlichung wird dieser Funktion gewidmet sein. AKTUALISIERT (3. April): Artikel mit Details veröffentlicht.

Loglevel

Benutzer haben die Möglichkeit, die Ausgabe zu steuern, den Loglevel zu setzen und mit Debug-Informationen zu arbeiten. Optionen wurden hinzugefĂŒgt: --log-quiet, --log-verbose, --log-debug.

StandardmĂ€ĂŸig enthĂ€lt die Ausgabe minimale Informationen:

Release von Werfer 1.1: Verbesserungen im heutigen Werfer und PlĂ€ne fĂŒr die Zukunft.

Bei Verwendung der detaillierten Ausgabe (--log-verbose) kann nachvollzogen werden, wie werf funktioniert:

Release von Werfer 1.1: Verbesserungen im heutigen Werfer und PlĂ€ne fĂŒr die Zukunft.

Die detaillierte Ausgabe (--log-debug), neben den Debug-Informationen von werf, enthÀlt auch die Protokolle der verwendeten Bibliotheken. Zum Beispiel kann man sehen, wie die Interaktion mit dem Docker Registry erfolgt, sowie die Stellen festhalten, an denen erhebliche Zeit verbraucht wird:

Release von Werfer 1.1: Verbesserungen im heutigen Werfer und PlĂ€ne fĂŒr die Zukunft.

ZukĂŒnftige PlĂ€ne

Achtung! Die nachfolgend beschriebenen Funktionen mit dem Hinweis v1.1 werden bereits in dieser Version verfĂŒgbar sein, viele von ihnen in naher Zukunft. Updates werden durch Auto-Updates bei Verwendung von multiwerf. Diese Funktionen betreffen nicht den stabilen Teil der Funktionen v1.1, ihr Auftreten erfordert keine manuelle Eingreifung des Benutzers in bestehende Konfigurationen.

Komplette UnterstĂŒtzung verschiedener Implementierungen von Docker Registry (NEU)

  • Version: v1.1
  • Zeitplan: MĂ€rz
  • Problem

Ziel — der Benutzer soll eine beliebige Implementierung ohne EinschrĂ€nkungen bei der Verwendung von werf nutzen können.

Derzeit haben wir den folgenden Satz von Lösungen ausgewĂ€hlt, fĂŒr die wir vollstĂ€ndige UnterstĂŒtzung garantieren möchten:

  • Default (library/registry)*,
  • AWS ECR,
  • Azure*,
  • Docker Hub,
  • GCR*,
  • GitHub Packages,
  • GitLab Registry*,
  • Harbor*,
  • Quay.

Mit einem Sternchen gekennzeichnet sind Lösungen, die derzeit vollstĂ€ndig von werf unterstĂŒtzt werden. FĂŒr die anderen besteht zwar UnterstĂŒtzung, jedoch mit EinschrĂ€nkungen.

Es gibt zwei Hauptprobleme:

  • Einige Lösungen unterstĂŒtzen das Entfernen von Tags ĂŒber die Docker Registry API nicht, was es den Nutzern nicht ermöglicht, die in werf implementierte automatische Bereinigung zu nutzen. Dies trifft auf AWS ECR, Docker Hub und GitHub Packages zu.
  • Einige Lösungen unterstĂŒtzen so genannte Nested Repositories (Docker Hub, GitHub Packages und Quay) nicht oder unterstĂŒtzen sie nur, wenn der Nutzer diese manuell ĂŒber die BenutzeroberflĂ€che oder API (AWS ECR) erstellt.

Diese und weitere Probleme beabsichtigen wir, mit den nativen APIs der Lösungen zu beheben. Diese Aufgabe umfasst auch das Testen des vollstĂ€ndigen Arbeitszyklus von werf fĂŒr jede Lösung.

Verteilte Bildbau (↑)

  • Version: v1.2 v1.1 (die PrioritĂ€t fĂŒr die Umsetzung dieser FunktionalitĂ€t wurde erhöht)
  • Zeitrahmen: MĂ€rz-April MĂ€rz
  • Problem

Derzeit kann werf v1.0 und v1.1 nur auf einem dedizierten Host fĂŒr Build-, Veröffentlichungs- und Anwendungs-Deployment-Betrieb in Kubernetes verwendet werden.

Um die Möglichkeiten des verteilten Arbeitens mit werf zu eröffnen, wenn der Aufbau und das Deployment von Anwendungen in Kubernetes auf mehreren beliebigen Hosts startet und diese Hosts ihren Zustand zwischen den Builds nicht speichern (temporĂ€re Runner), benötigt werf die Implementierung der Nutzung eines Docker Registrys als Speicher fĂŒr Stufen.

FrĂŒher, als das Projekt werf noch dapp hieß, gab es diese Möglichkeit. Wir sind jedoch auf verschiedene Probleme gestoßen, die bei der Umsetzung dieser Funktion in werf berĂŒcksichtigt werden mĂŒssen.

Hinweis. Diese Möglichkeit sieht nicht vor, dass der Builder innerhalb von Kubernetes-Pods arbeitet, da dafĂŒr die AbhĂ€ngigkeit vom lokalen Docker-Server beseitigt werden muss (innerhalb des Kubernetes-Pods gibt es keinen Zugriff auf den lokalen Docker-Server, da der Prozess selbst in einem Container lĂ€uft und werf keine Netzwerkverbindungen zum Docker-Server unterstĂŒtzt und dies auch nicht tun wird). Die UnterstĂŒtzung fĂŒr die Arbeit in Kubernetes wird separat implementiert.

Offizielle UnterstĂŒtzung fĂŒr GitHub Actions (NEU)

  • Version: v1.1
  • Zeitplan: MĂ€rz
  • Problem

Umfasst die werf-Dokumentation (Abschnitte Referenz und guide), sowie die offizielle GitHub Action zur Zusammenarbeit mit werf.

DarĂŒber hinaus ermöglicht es, dass werf auf flĂŒchtigen Runnern arbeitet.

Die Interaktion des Benutzers mit dem CI-System basiert auf der Vergabe von Labels an Pull-Requests, um bestimmte Aktionen beim Builden/Deployment der Anwendung zu initiieren.

Lokale Entwicklung und Deployment von Anwendungen mit werf (↓)

  • Version: v1.1
  • Zeitraum: Januar-Februar April
  • Problem

Das Hauptziel ist es, eine einheitliche, standardisierte Konfiguration fĂŒr das Deployment von Anwendungen sowohl lokal als auch in der Produktion zu erreichen, ohne komplizierte Aktionen, direkt 'out of the box'.

Von werf wird auch ein Arbeitsmodus gefordert, in dem es bequem ist, den Anwendungscode zu bearbeiten und sofortige RĂŒckmeldungen von der laufenden Anwendung fĂŒr das Debugging zu erhalten.

Neuer Bereinigungsalgorithmus (NEU)

  • Version: v1.1
  • Zeitraum: April
  • Problem

In der aktuellen Version von werf v1.1 gibt es im Verfahren cleanup keine Bereinigung von Images fĂŒr das content-basierte Tagging — diese Images werden sich ansammeln.

In der aktuellen Version von werf (v1.0 und v1.1) werden zudem unterschiedliche Bereinigungspolitiken fĂŒr Images verwendet, die nach Tagging-Schemata veröffentlicht wurden: Git-Branch, Git-Tag oder Git-Commit.

Ein neuer einheitlicher Bereinigungsalgorithmus fĂŒr alle Tagging-Schemata wurde basierend auf der Historie der Git-Commits entwickelt:

  • Speichern Sie maximal N1 Images, die mit den letzten N2 Commits fĂŒr jedes git HEAD (Branches und Tags) verbunden sind.
  • Speichern Sie maximal N1 Stufen-Images, die mit den letzten N2 Commits fĂŒr jedes git HEAD (Branches und Tags) verbunden sind.
  • Speichern Sie alle Images, die in irgendeiner Ressource des Kubernetes-Clusters verwendet werden (alle kube-Kontexte der Konfigurationsdatei und Namespaces werden durchsucht; dieses Verhalten kann mit speziellen Optionen eingeschrĂ€nkt werden).
  • Speichern Sie alle Images, die in den Konfigurationsmanifesten von Ressourcen gespeichert sind, die in Helm-Releases gespeichert wurden.
  • Ein Image kann gelöscht werden, wenn es mit keinem HEAD aus git verbunden ist (z.B. weil das entsprechende HEAD selbst gelöscht wurde) und in keinem Manifest im Kubernetes-Cluster und in den Helm-Releases verwendet wird.

Paralleles Bauen von Images (↓)

  • Version: v1.1
  • ZeitrĂ€ume: Januar-Februar April*

Die aktuelle Version von werf baut die in werf.yaml, beschriebenen Images und Artefakte sequentiell. Es ist notwendig, den Bauprozess der unabhÀngigen Stufen von Images und Artefakten zu parallelisieren und einen ansprechenden sowie informativen Output zu gewÀhrleisten.

* Hinweis: Der Zeitraum wurde aufgrund der erhöhten PrioritĂ€t der Implementierung von verteilten Builds verschoben, die mehr Möglichkeiten fĂŒr horizontale Skalierung sowie die Verwendung von werf mit GitHub Actions bieten. Paralleles Bauen ist der nĂ€chste Schritt der Optimierung, der vertikale Skalierbarkeit beim Bauen eines einzelnen Projekts bietet.

Übergang zu Helm 3 (↓)

  • Version: v1.2
  • Zeitraum: Februar - MĂ€rz Mai*

Umfasst den Übergang zu einer neuen Codebasis Helm 3 und eine erprobte, benutzerfreundliche Möglichkeit zur Migration bestehender Installationen.

* Hinweis: Der Wechsel zu Helm 3 wird keine wesentlichen neuen Möglichkeiten in werf hinzufĂŒgen, da alle SchlĂŒsselmerkmale von Helm 3 (3-Wege-Merge und kein Tiller) bereits in werf implementiert sind. DarĂŒber hinaus hat werf zusĂ€tzliche Möglichkeiten neben den genannten. Dennoch bleibt dieser Übergang in unseren PlĂ€nen und wird durchgefĂŒhrt.

Jsonnet zur Beschreibung der Kubernetes-Konfiguration (↓)

  • Version: v1.2
  • Zeitraum: Januar - Februar April - Mai

Werf wird die Beschreibung der Konfiguration fĂŒr Kubernetes im Jsonnet-Format unterstĂŒtzen. Gleichzeitig bleibt werf mit Helm kompatibel und es wird die Möglichkeit geben, das Format der Beschreibung auszuwĂ€hlen.

Ein Grund dafĂŒr ist, dass viele Menschen der Meinung sind, dass die Templates der Programmiersprache Go eine hohe EinstiegshĂŒrde aufweisen und die VerstĂ€ndlichkeit des Codes dieser Templates ebenfalls leidet.

Es wird auch die Möglichkeit in Betracht gezogen, weitere Konfigurationsbeschreibungs-Systeme fĂŒr Kubernetes zu implementieren (zum Beispiel Kustomize).

Arbeiten innerhalb von Kubernetes (↓)

  • Version: v1.2
  • Zeitrahmen: April-Mai, Mai-Juni

Ziel: Bereitstellung von Build-Images und Bereitstellung von Anwendungen unter Verwendung von Runnern in Kubernetes. Das heißt, der Bau neuer Images, deren Veröffentlichung, Reinigung und Deployment kann direkt aus den Pods von Kubernetes erfolgen.

Um diese Möglichkeit zu realisieren, wird zunÀchst die Möglichkeit einer verteilten Image-Bereitstellung benötigt. (siehe Punkt oben).

Außerdem ist die UnterstĂŒtzung eines Modus erforderlich, der den Builder ohne Docker-Server betreibt (d.h. Ă€hnlich wie Kaniko oder Build im Userspace).

Werf wird die Build-Option in Kubernetes nicht nur mit Dockerfile, sondern auch mit seinem Builder Stapel unterstĂŒtzen, der inkrementelle Neu-Distributionen und Ansible umfasst.

Ein Schritt in Richtung Open Source Entwicklung

Wir schÀtzen unsere Community (GitHub, Telegram) und möchten, dass immer mehr Menschen daran mitwirken, werf besser zu machen, verstehen, in welche Richtung wir gehen, und an der Entwicklung teilnehmen.

Vor kurzem wurde beschlossen, auf GitHub-Projektboards um den Arbeitsablauf unseres Teams zu öffnen. Aktuell können Sie die nÀchsten PlÀne sowie die laufenden Arbeiten in den folgenden Bereichen einsehen:

Es wurde viel Arbeit mit Issues geleistet:

  • Nicht mehr relevante wurden entfernt.
  • Vorhandene wurden in ein einheitliches Format mit ausreichenden Details und Informationen gebracht.
  • Neue Issues mit Ideen und VorschlĂ€gen wurden hinzugefĂŒgt.

Wie Sie die Version v1.1 aktivieren

Die Version ist derzeit verfĂŒgbar in Kanal 1.1 ea (in den KanĂ€len "stable" und rock-solid die Releases werden mit der Stabilisierung erscheinen, jedoch "ea" ist sie bereits stabil genug fĂŒr den Einsatz, da sie durch die KanĂ€le gegangen ist Alpha-Zustand und Beta). Aktivierung ĂŒber multiwerf auf folgende Weise:

source $(multiwerf use 1.1 ea)
werf COMMAND ...

Fazit

Die neue Architektur des Staging-Speichers und die Optimierung des Builders fĂŒr Stapel und Dockerfile-Builder eröffnen Möglichkeiten fĂŒr verteilte und parallele Builds in werf. Diese Möglichkeiten werden bald in demselben Release v1.1 verfĂŒgbar sein und automatisch ĂŒber das Auto-Update-System zugĂ€nglich gemacht werden (fĂŒr Benutzer von multiwerf).

In diesem Release wurde eine Tagging-Strategie basierend auf dem Inhalt der Images hinzugefĂŒgt — inhaltsbasiertes Tagging, — die zur Standardstrategie geworden ist. Auch das Log der Hauptbefehle wurde ĂŒberarbeitet: werf build, werf publish, werf deploy, werf dismiss, werf cleanup.

Der nĂ€chste wesentliche Schritt wird die EinfĂŒhrung verteilter Builds sein. Seit Version 1.0 haben sich verteilte Builds zu einer priorisierten Aufgabe entwickelt, die mehr Wert fĂŒr werf bietet: vertikale Skalierung von Builds und UnterstĂŒtzung fĂŒr flĂŒchtige Builds in verschiedenen CI/CD-Systemen, sowie die Möglichkeit, offizielle UnterstĂŒtzung fĂŒr GitHub Actions zu implementieren. Daher wurden die ZeitplĂ€ne fĂŒr die Umsetzung paralleler Builds verschoben. Wir arbeiten jedoch daran, beide FunktionalitĂ€ten so schnell wie möglich bereitzustellen.

Bleiben Sie auf dem Laufenden! Vergessen Sie nicht, auch bei uns vorbeizuschauen GitHub, um ein Issue zu erstellen, ein bereits vorhandenes zu finden und einen Pluspunkt zu setzen, einen PR zu erstellen oder einfach den Fortschritt des Projekts zu beobachten.

P.S.

Lesen Sie auch in unserem Blog:

Quelle: habr.com

Erwerben Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster