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-fileMaven. 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
-