Gestion des dépendances internes dans les flux de travail GitHub - Amazon Q Developer

Gestion des dépendances internes dans les flux de travail GitHub

Vous pouvez améliorer votre flux de travail GitHub pour gérer les dépendances internes lorsque vous utilisez Amazon Q Developer pour la transformation du code.

Le flux de travail standard d’Amazon Q Developer gère les projets comportant des dépendances Maven publiques. Toutefois, les projets d’entreprise incluent souvent des dépendances internes, y compris des archives Java privées (fichiers JAR) non disponibles dans les référentiels publics. Ce flux de travail amélioré étend la configuration standard pour prendre en charge les dépendances publiques et privées.

Cas d’utilisation pour un flux de travail amélioré

Utilisez la configuration de flux de travail GitHub améliorée si votre projet comporte :

  • Dépendances JAR privées ou internes

  • Bibliothèques d’utilitaires personnalisées non disponibles dans Maven Central

  • Création d’échecs avec des erreurs Could not resolve dependencies

Exemple de configuration

L’exemple suivant illustre une configuration de flux de travail complète qui gère les dépendances de premier niveau :

name: Q Code Transformation on: push: branches: - 'Q-TRANSFORM-issue-*' env: MAVEN_CLI_OPTS: >- -Djava.version=${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '1.8' }} -Dmaven.compiler.source=${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '1.8' }} -Dmaven.compiler.target=${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '1.8' }} jobs: q-code-transformation: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: ${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '8' }} distribution: 'temurin' - name: Cache Maven dependencies uses: actions/cache@v4 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Install First-Party Dependencies run: | mvn install:install-file \ -Dfile=./your-library/built-library/1.0.0/your-library-1.0.0.jar \ -DgroupId=com.yourcompany.samples \ -DartifactId=your-library \ -Dversion=1.0.0 \ -Dpackaging=jar - name: Build and copy dependencies run: | mvn ${{ env.MAVEN_CLI_OPTS }} verify mvn ${{ env.MAVEN_CLI_OPTS }} dependency:copy-dependencies -DoutputDirectory=dependencies -Dmdep.useRepositoryLayout=true -Dmdep.copyPom=true -Dmdep.addParentPoms=true - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: q-code-transformation-dependencies path: dependencies - name: Debug information if: failure() run: | echo "Branch: ${{ github.ref_name }}" echo "Commit message: ${{ github.event.head_commit.message }}" echo "Java version logic result: ${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '8' }}" echo "Local Maven repository contents:" find ~/.m2/repository/com/yourcompany/samples -name "*.jar" 2>/dev/null || echo "No your-library found in local repo" java -version mvn -version

Principaux éléments d’un flux de travail amélioré

Le flux de travail GitHub amélioré comporte plusieurs éléments clés :

  • Installation de dépendances de premier niveau

    Le flux de travail inclut une étape critique pour installer des dépendances privées à l’aide de la commande install:install-file Maven. Cela garantit que vos dépendances privées sont disponibles dans le référentiel Maven local pendant la transformation.

  • Gestion dynamique des versions de Java

    Le flux de travail bascule automatiquement entre Java 8 et Java 17 en fonction de l’état de transformation, en utilisant des variables d’environnement pour gérer les propriétés du compilateur.

  • Configuration de Maven

    Le flux de travail amélioré inclut une configuration complète de Maven avec :

    • Mise en cache des dépendances pour de meilleures performances

    • Gestion complète des propriétés du compilateur

    • Préservation de l’agencement du référentiel

    • Gestion des fichiers JAR

  • Étapes d’implémentation

    • Identification de vos dépendances privées dans pom.xml

    • Organisation des fichiers JAR dans la structure de votre référentiel

    • Personnalisation du flux de travail avec vos chemins et coordonnées spécifiques

    • Test du flux de travail sur une branche correspondant au modèle Q-TRANSFORM-issue-*

  • Résolution de problème

    Le flux de travail inclut une étape d’information de débogage qui s’active en cas d’échec, fournissant :

    • Informations sur la branche

    • Détails du message de validation

    • Configuration de la version Java

    • Contenu du référentiel Maven local

    • Informations sur les versions de Java et Maven