Wie man ein privates Repo über composer.json via Gitlab CI/CD klont

Wie man ein privates Repo über composer.json via Gitlab CI/CD klont
2/7/2021

Composer ist ein Werkzeug zur Verwaltung von Abhängigkeiten in PHP. Es erlaubt Ihnen, die Bibliotheken zu deklarieren, von denen Ihr Projekt abhängt, und es wird diese für Sie verwalten (installieren/aktualisieren).

Als DevOps-Spezialist bei SABO habe ich eine Anfrage von unseren Entwicklern bekommen, eine private Repo in der composer.json-Datei zu verwenden. Und idealerweise sollte es ein Gitlab CI/CD verwenden, um den Build und das Deployment komplett zu übernehmen. Die Frage ist, wie man das macht.

In composer.json sieht das so aus:

{% c-block language="markdown" %}


 "repositories": [
       {
           "type": "vcs",
           "url": “git@gitlab.mydomain.com:my_awesome_repo.git”


{% c-block-end %}

Wenn Sie dies verwenden möchten, benötigen Sie drei Dinge:

1) Dockerfile mit Zugriff auf Ihr großartiges Repo.
2) Korrekte GitLab-Variablen.
3) Gitlab yaml nicht vergessen.

1) Dockerfile benötigt Zugriff auf Ihr Repo und am besten richten Sie id_rsa darin ein, etwa so:

{% c-block language="markdown" %}


RUN mkdir /root/.ssh && \
       echo "$COMPOSER_CONFIG" > /root/.ssh/config && \
       echo "$COMPOSER_KEY" > /root/.ssh/id_rsa && \
       chmod 0600 /root/.ssh/id_rsa


{% c-block-end %}

Dieses kleine Skript innerhalb von Dockerfile erzeugt die id_rsa-Datei im richtigen Pfad - genau dort, wo das System die Datei benötigt. Aber wir müssen diese über Gitlab CI/CD und GitLab ENV verwenden:

2) Im Gitlab-Projekt ENV müssen wir zwei neue Variablen anlegen: COMPOSER_CONFIG und COMPOSER_KEY, wobei:

COMPOSER_KEY ist der Schlüssel, den Sie (oder ein anderer Gitlab-Benutzer; für mich ist  composer_user am besten) in SSH KEY als öffentlichen Schlüssel haben. Ja, COMPOSER_KEY ist RSA KEY und COMPOSER_CONFIG muss so aussehen:

{% c-block language="markdown" %}
“Host *
      StrictHostKeyChecking no


{% c-block-end %}

- lassen Sie die Anführungszeichen weg, ABER fügen Sie eine Leerzeile am Ende hinzu. Diese Konfiguration ermöglicht es dem Klon, nicht nach einem Fingerabdruck zu fragen.

In GitLab sieht das Setup wie folgt aus:

Beachten Sie die Leerzeile am Ende!

3) gitlab-ci.yml muss den COMPOSER_KEY und COMPOSER_CONFIG an der richtigen Stage erhalten. Vergessen Sie nicht, diese dort hinzuzufügen.

Teilen:
Pavel ist ein erfahrener DevOps-Guru und begeisterter SysAdmin, der für Application Life Cycle, Continuous Integration und Continuous Delivery verantwortlich ist, sowohl für Kunden als auch für interne SABO Projekte. Er schult Software-Entwickler in unserem Team und koordiniert alle DevOps-Aktivitäten. Hat immer einen Spruch parat, wechselt unberechenbar ins Polnische und kocht und backt gerne.

Article collaborators

SABO Newsletter icon

SABO NEWSLETTER

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

SABO Mobile IT

Für unsere Kunden aus der Industrie entwickeln wir spezialisierte Software zur Umsetzung von Industry 4.0. IoT, Machine Learning und Künstliche Intelligenz ermöglichen uns, signifikante Effizienzsteigerungen bei unseren Kunden zu erzielen.
Über uns