Struttura del progetto Compositore

Questa guida descrive come impostare e gestire l'opzione pacchetti separati descritta negli esempi di architettura di riferimento globale (GRA).

Prerequisiti

Prima di iniziare, verifica quanto segue:

  • Disponi di un archivio Git
  • Disponi di un archivio Compositore (in questo argomento viene evidenziato Private Packagist)
  • Il repository Composer è stato configurato per riflettere gli archivi repo.magento.com e packagist.org

Archivio principale del progetto Git

L’archivio principale del progetto Git deve contenere solo un progetto Composer. Puoi gestire tutto il resto con i pacchetti Composer. Il progetto principale non deve mai contenere elementi diversi dalla seguente struttura di file, in quanto Composer installa tutti gli altri pacchetti attraverso le dipendenze:

./
├─ .git/
├─ .gitignore
├─ composer.json
└─ composer.lock

Aggiungi il seguente contenuto al file .gitignore:

/*
!/composer.json
!/composer.lock

Inizializzare il progetto principale

  1. Creare un archivio Git denominato project-<region/country/brand>.

  2. Creare composer.json e composer.lock file:

    code language-bash
    composer create-project --no-install --repository-url=https://repo.magento.com/ magento/project-enterprise-edition project-<region/country/brand>
    cd <install-directory-name>
    printf '/*\n!/composer.json\n!/composer.lock\n!/.gitignore' > .gitignore
    composer config --unset version
    composer config name '<client>/project-<region/country/brand>'
    composer config description '<client> <region/country/brand> main composer project'
    composer config repositories.private-packagist composer https://repo.packagist.com/<client>/
    composer config repositories.packagist.org false
    composer config --unset repositories.0
    composer install
    git init
    git add --all
    git commit -m 'initialize project'
    git remote add origin git@bitbucket.org:<client>/project-<region/country/brand>.git
    git push -u origin master
    

Salva file non modulo

  1. Aggiungere il file app/etc/config.xml all'archivio Git.

    È possibile utilizzare il modulo che si sta per creare per installare altri file specifici dell'area geografica o del marchio, ad esempio .htaccess, file di testo di autenticazione Google o Bing, file eseguibili o altri file statici non gestiti dai moduli di Adobe Commerce.

    Utilizzare pacchetti di tipo magento2-component per creare un mapping di file per copiare i file nell'archivio Git principale durante le operazioni composer install e composer update.

  2. Creare un archivio Git che segue la convenzione di denominazione component-environment-<region/country/brand>:

    code language-bash
    bin/magento module:enable --all
    cd ../
    mkdir component-environment-<region/country/brand>
    cd component-environment-<region/country/brand>
    composer init --no-interaction \
     --name='<client>/component-environment-<region/country/brand>' \
     --description='<client> <region/country/brand> environment files' \
     --type=magento2-component \
     --require="magento/magento-composer-installer:*"
    mkdir -p app/etc
    cp ../project-<region/country/brand>/app/etc/config.php app/etc/
    composer config -e
    
  3. Aggiungi il file app/etc/config.php come mapping nell'attributo extra.map del file composer.json:

    code language-json
    {
        "name": "example-client/component-environment-emea",
        "description": "Example client EMEA environment files",
        "type": "magento2-component",
        "require": {
            "magento/magento-composer-installer": "*"
        },
        "extra": {
            "map": [
                [
                    "app/etc/config.php",
                    "app/etc/config.php"
                ]
            ]
        }
    }
    
  4. Convalida il file composer.json e esegui il commit nell'archivio Git:

    code language-bash
    composer validate
    git init
    git add --all
    git commit -m 'initialize component'
    git remote add origin git@bitbucket.org:<client>/component-environment-<region/country/brand>.git
    git push -u origin master
    git tag 0.1.0 -m "0.1.0"
    git push --tags
    

Configurare i metapacchetti

  1. Crea i seguenti archivi Git:

    • meta-gra
    • meta-<region/country/brand>
  2. Impostare la seguente struttura di dipendenze:

    code language-tree
    client/project-<region/country/brand>
    └─ requires -> client/meta-<region/country/brand>
                   ├─ requires -> client/component-environment-<region/country/brand>
                   └─ requires -> client/meta-gra
                                  └─ requires -> magento/product-enterprise-edition
    
  3. Creare il metapacchetto GRA:

    code language-bash
    cd ..
    mkdir meta-gra
    cd meta-gra
    composer init --no-interaction \
     --name='<client>/meta-gra' \
     --description='<client> GRA meta package' \
     --type=metapackage \
     --require="magento/product-enterprise-edition:<exact.required.version>"
    git init
    git add --all
    git commit -m 'initialize meta package'
    git remote add origin git@bitbucket.org:<client>/meta-gra.git
    git push -u origin master
    git tag 0.1.0 -m "0.1.0"
    git push --tags
    
  4. Creare il metapacchetto del brand:

    code language-bash
    cd ..
    mkdir meta-<region/country/brand>
    cd meta-<region/country/brand>
    composer init --no-interaction \
     --name='<client>/meta-<region/country/brand>' \
     --description='<client> <region/country/brand> meta package' \
     --type=metapackage \
     --require="<client>/component-environment-<region/country/brand>:~0.1" \
     --require="<client>/meta-gra:~0.1"
    git init
    git add --all
    git commit -m 'initialize meta package'
    git remote add origin git@bitbucket.org:<client>/meta-<region/country/brand>.git
    git push -u origin master
    git tag 0.1.0 -m "0.1.0"
    git push --tags
    
  5. Richiedi la raccolta tramite la gestione delle dipendenze nel progetto principale:

    code language-bash
    cd ../project-<region/country/brand>
    rm app/etc/config.php
    composer remove --no-update magento/product-enterprise-edition
    composer require --no-update "<client>/meta-<region/country/brand>:~0.1"
    composer config minimum-stability alpha
    composer config prefer-stable true
    composer update
    git add --all
    git commit -m 'set up GRA dependency tree'
    git push origin master
    git tag 0.1.0 -m "0.1.0"
    git push --tags
    
  6. Verificare che Composer abbia copiato il file app/etc/config.php da <client>/component-environment-<region/country/brand>.

Distribuisci il codice

Sul server web, puoi distribuire il codice utilizzando Compositore, ma non puoi aggiornare il progetto principale. Reinstalla il progetto utilizzando Composer con ogni nuova distribuzione, eliminando la necessità per i server di produzione e di test di avere accesso a Git.

Aggiungere altre istanze e pacchetti

Ogni istanza (area geografica, marchio o installazione univoca di Adobe Commerce) deve ottenere la propria istanza del progetto principale, il metapackage specifico e il pacchetto di componenti dell'ambiente. Il metapackage GRA deve essere condiviso in tutte le istanze.

I pacchetti funzionali (come moduli, temi, Language Pack e librerie di Adobe Commerce) e i pacchetti di terze parti devono essere richiesti da:

  • GRA metapackage—Per l'installazione su tutte le istanze
  • metapackage specifico dell'istanza - Per l'installazione su un singolo marchio o area geografica
IMPORTANT
Non richiedere pacchetti nel file composer.json del progetto principale sui rami main o release.

Prepararsi per lo sviluppo

Per lo sviluppo, installare develop versioni di tutti i moduli gestiti.

A seconda della strategia di ramificazione, è possibile che siano presenti develop, qa, uat e main rami. Ogni ramo esiste in Composer con il prefisso dev-. Pertanto, il ramo develop può essere richiesto tramite Composer come versione dev-develop.

  1. Crea develop rami in tutti i moduli e gli archivi dei progetti.

    code language-bash
    cd ../component-environment-<region/country/brand>
    git checkout master
    git checkout -b develop
    git push -u origin develop
    
    
    cd ../meta-<region/country/brand>
    git checkout master
    git checkout -b develop
    
    git push -u origin develop
    
    
    cd ../meta-gra
    git checkout master
    git checkout -b develop
    git push -u origin develop
    
    
    cd ../project-<region/country/brand>
    git checkout master
    git checkout -b develop
    git push -u origin develop
    
    
    composer require \
    "magento-services/meta-fantasy-corp:dev-develop as 0.999" \
    "magento-services/meta-gra:dev-develop as 0.999" \
    "magento-services/component-environment-fantasy-corp:dev-develop as 0.999"
    

    Il passaggio precedente genera le righe seguenti nel file composer.json:

    code language-json
    "require": {
        "magento-services/component-environment-fantasy-corp": "dev-develop as 0.999",
        "magento-services/meta-fantasy-corp": "dev-develop as 0.999",
        "magento-services/meta-gra": "dev-develop as 0.999"
    },
    
    note important
    IMPORTANT
    Non unire queste composer.json modifiche al file nel ramo di produzione. Installa solo versioni stabili dei pacchetti nei rami release e main. È possibile definire queste dipendenze per qa rami e altri rami non principali.
recommendation-more-help
754cbbf3-3a3c-4af3-b6ce-9d34390f3a60