Ergebnis 1 bis 7 von 7

Thema: Deployment mit Deployer und Git

  1. #1
    Contao-Nutzer Avatar von worxer
    Registriert seit
    29.04.2011.
    Beiträge
    49

    Standard Deployment mit Deployer und Git

    Ich stoße beim Deployment mit Deployer und Git an meine Grenzen und muss gestehen, dass meine php Kenntnisse nicht ausreichen. Wie im Contao Handbuch beschrieben, habe ich Deployer lokal installiert. Der Webserver Zugriff (All-Inkl) auf das Git-Repository ist mit einem SSH-Schlüssel realisiert (public Key > Git Einstellungen / private Key > Git Projekt CI/CD Variable "SSH_PRIVATE_KEY").

    .hosts.yml
    Code:
    hosts:
      production:
        hostname: 'ssh-host'
        remote_user: 'ssh-user'
        port: 22
        deploy_path: 'path-to-production'
    deploy.php

    PHP-Code:
    <?php

    namespace Deployer;

    import('recipe/contao.php');

    set('repository''git@gitlab.com:Pad-zum-Repository.git');

    // Include hosts
    import('.hosts.yml');

    // Set maximum number of releases
    set('keep_releases'3);

    // Unlock on failed deployment
    after('deploy:failed''deploy:unlock');
    .gitlab-ci.yml
    Code:
    stages:
      - deploy
    
    deploy:
      stage: deploy
      image:
        name: minkbear/php-deployer
    #  name: pipelinecomponents/deployer
        entrypoint: [""]
      before_script:
        - eval $(ssh-agent -s)
        - ssh-add <(echo "$SSH_PRIVATE_KEY")
        - ssh-deactivate-key-checking
        - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
        - chmod 644 ~/.ssh/known_hosts
      script:
        # Fix permissions
        - find /builds/`echo $CI_PROJECT_PATH` -type d -print0 | xargs -0 chmod 0755
        - find /builds/`echo $CI_PROJECT_PATH` -type f -print0 | xargs -0 chmod 0664
        - composer install --no-dev --no-ansi --no-interaction --no-scripts --prefer-dist
        - dep deploy production -vvv
      resource_group: production
      only:
        - main
    Die Zeilen in der .gitlab-ci.yml habe ich aus einer Anleitung übernommen, die mit dem Image "minkbear/php-deployer" arbeitet.

    Die Pipeline stoppt mit dem Fehler:

    Installing dependencies from lock file
    Verifying lock file contents can be installed on current platform.
    Your lock file does not contain a compatible set of packages. Please run composer update.
    Problem 1
    - ausi/slug-generator is locked to version v1.1.1 and an update of this package was not requested.
    - ausi/slug-generator v1.1.1 requires ext-intl * -> it is missing from your system. Install or enable PHP's intl extension.
    Problem 2
    - contao/core-bundle is locked to version 4.13.30 and an update of this package was not requested.
    - contao/core-bundle 4.13.30 requires ext-gd * -> it is missing from your system. Install or enable PHP's gd extension.
    Problem 3
    - contao/image is locked to version 1.2.0 and an update of this package was not requested.
    - contao/image 1.2.0 requires ext-gd * -> it is missing from your system. Install or enable PHP's gd extension.
    Problem 4
    - contao/core-bundle 4.13.30 requires ext-gd * -> it is missing from your system. Install or enable PHP's gd extension.
    - terminal42/notification_center 1.7.2 requires contao/core-bundle ^4.13 -> satisfiable by contao/core-bundle[4.13.30].
    - terminal42/notification_center is locked to version 1.7.2 and an update of this package was not requested.
    To enable extensions, verify that they are enabled in your .ini files:
    -
    - /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
    Ich vermutete, dass es am verwendeten Image liegt und habe es stattessen mit "pipelinecomponents/deployer" ausprobiert. Dieses scheint auch aktiver weiterentwickelt zu werden.
    Aber hier stoße ich beim deployen auf den Fehler

    "/bin/bash: line 137: composer: command not found".

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Das Problem ist, dass du versuchst in deinem Container, der eigentlich nur Deployer ausführen soll, alle Abhängigkeiten deiner Contao Installation zu installieren. Du solltest statt dessen vielleicht eher deine Deployment Tools in einem tools Unterverzeichnis verwalten bspw.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer Avatar von worxer
    Registriert seit
    29.04.2011.
    Beiträge
    49

    Standard

    Danke für Deine schnelle Antwort Spooky.
    Damit ich dich richtig verstehe, ich verschiebe .hosts.yml und deploy.php in einen Unterordner?

    CONTAO
    deploytools
    hosts.yml
    deploy.php
    .gitlab-ci.yml
    composer.json

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Nein, das Problem ist
    Code:
    composer install --no-dev --no-ansi --no-interaction --no-scripts --prefer-dist
    wo du ja anscheinend die Contao Abhängigkeiten installierst. Brauchst du das denn überhaupt? Laut dem Rest von deiner Config bzw. deinen Kommentaren scheint Deployer ja eh schon von Haus aus im Image zur Verfügung stehen.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Nutzer Avatar von worxer
    Registriert seit
    29.04.2011.
    Beiträge
    49

    Standard

    Ok, das heißt ich benötige die manuelle Installation
    Code:
    composer require --dev deployer/deployer
    von Deployer nicht, wenn ich das Image in der .gitlab-ci.yml verwende?
    Anders herum kann ich auch aufs Image verzichten, wenn ich Deployer lokal einsetze?
    Welches davon ist deine Empfehlung?

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von worxer Beitrag anzeigen
    Ok, das heißt ich benötige die manuelle Installation
    Code:
    composer require --dev deployer/deployer
    von Deployer nicht, wenn ich das Image in der .gitlab-ci.yml verwende?
    Keine Ahnung, ich kenne das Image nicht. Aber das Image heißt minkbear/php-deployer, also ist meine Vermutung, dass da Deployer schon drin ist? Musst du halt prüfen.


    Zitat Zitat von worxer Beitrag anzeigen
    Anders herum kann ich auch aufs Image verzichten, wenn ich Deployer lokal einsetze?
    Ja - aber du willst das ja via CI automatisieren, oder nicht?
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Contao-Nutzer Avatar von worxer
    Registriert seit
    29.04.2011.
    Beiträge
    49

    Standard

    Back to the roots.
    Ich gehe wie folgt vor, um Contao, Deployer und Git zu verheiraten:

    1. Installation von Deployer nach Contao Handbuch
    2. Erstellung einer deploy.php mit dem Inhalt wie ebenfalls im Handbuch beschrieben
    3. Den Block

      Code:
      host('example.org')...
      
      ->set...
      ;
      ersetze ich durch

      Code:
      import('.hosts.yml');
    4. Erstellung einer .hosts.yml mit dem Inhalt wie bei #1 zuvor geschrieben
    5. Konfiguration von Git bezüglich der SSH-Schlüssel
    6. Erstellung einer .gitlab-ci.yml mit dem Code

      Code:
      stages:
        - deploy
      
      deploy:
        stage: deploy
        script:
          - dep deploy production -vvv
        resource_group: production
        only:
          - main


    Ist das das Vorgehen bis zur .gitlab-ci.yml stimmig?
    Ist der Code in meiner .gitlab-ci.yml der Richtige? Die Anleitung von Depolyer zum Thema "GitLab CI/CD" weicht davon ab und gibt einen anderen Einblick.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •