Les actions GitHub offrent un moyen transparent d'intégrer CI/CD dans votre référentiel, en automatisant diverses tâches telles que l'exécution de tests, la création d'artefacts et le déploiement de votre projet.
Flux de travail pour INSTANTANÉ
Ce workflow est déclenché sur les branches non principales ou manuellement via l'événement de répartition du workflow. Il comprend les étapes suivantes :
- Exécuter des tests : garantit que votre code réussit tous les tests.
- Construisez le fichier JAR : compile votre application Spring Boot.
- Créer une image Docker et la transmettre au registre GitHub Docker : crée une image Docker à partir de l'artefact généré et la transmet au registre de conteneurs GitHub.
name: Test and Build Snapshot on: push: branches-ignore: - main workflow_dispatch: permissions: contents: read packages: write jobs: maven-verify: if: "!contains(github.event.head_commit.message, '[skip ci]')" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: maven cache-dependency-path: '**/pom.xml' - name: Verify run: mvn -B clean verify --file pom.xml maven-build: needs: maven-verify runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: maven cache-dependency-path: '**/pom.xml' - name: Build run: mvn -B package --file pom.xml - name: Upload artifact uses: actions/upload-artifact@v4 with: name: app.jar path: target/*.jar docker-build-push: needs: maven-build runs-on: ubuntu-latest env: CURRENT_VERSION: '' steps: - uses: actions/checkout@v4 - name: Download artifact uses: actions/download-artifact@v4 with: name: app.jar path: target - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GHCR_PAT }} - name: Get Version run: echo "CURRENT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - name: Build Docker image uses: docker/build-push-action@v6 with: context: . push: true tags: ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ env.CURRENT_VERSION }}-${{ github.run_id }}
Flux de travail pour la LIBÉRATION
Ce workflow s'exécute lorsque les modifications sont transmises à la branche principale et comprend les étapes suivantes :
- Construire la version finale : compile la version finale de votre projet.
- Créer une image Docker et la transmettre au registre GitHub Docker : crée et transmet l'image Docker au registre de conteneurs GitHub.
- Incrémenter la version SNAPSHOT : met à jour la version dans pom.xml pour les futures versions d'instantanés.
name: Build Release on: push: branches: - main workflow_dispatch: permissions: contents: read packages: write jobs: maven-build-release: if: "!contains(github.event.head_commit.message, '[skip ci]')" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: maven cache-dependency-path: '**/pom.xml' - name: Prepare Release Version run: mvn versions:set -DremoveSnapshot - name: Build run: mvn -B clean package --file pom.xml -DskipTests - name: Upload artifact uses: actions/upload-artifact@v4 with: name: app.jar path: target/*.jar docker-build-push: needs: maven-build-release runs-on: ubuntu-latest env: CURRENT_VERSION: '' steps: - uses: actions/checkout@v4 - name: Download artifact uses: actions/download-artifact@v4 with: name: app.jar path: target - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GHCR_PAT }} - name: Get Version run: | mvn versions:set -DremoveSnapshot echo "CURRENT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - name: Build Docker image uses: docker/build-push-action@v6 with: context: . push: true tags: ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ env.CURRENT_VERSION }}-${{ github.run_id }} increment-version: needs: docker-build-push runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GIT_PAT }} - name: Configure Git run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" - name: Increment Snapshot Version run: | # Extract current version and increment patch version CURRENT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) MAJOR=$(echo $CURRENT_VERSION | cut -d. -f1) MINOR=$(echo $CURRENT_VERSION | cut -d. -f2) PATCH=$(echo $CURRENT_VERSION | cut -d. -f3 | cut -d- -f1) NEW_PATCH=$((PATCH + 1)) NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH-SNAPSHOT" # Update version in pom.xml mvn versions:set -DnewVersion=$NEW_VERSION mvn versions:commit # Commit and push the new snapshot version git add pom.xml git commit -m "Increment version to $NEW_VERSION [skip ci]" git push origin $(git rev-parse --abbrev-ref HEAD)
Flux de travail bonus
Le workflow CodeQL analyse votre code Java pour identifier les vulnérabilités et les problèmes potentiels.
name: CodeQL on: pull_request: branches: [ "main" ] workflow_dispatch: jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: language: [ 'java' ] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Java uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: maven cache-dependency-path: '**/pom.xml' - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} - name: Autobuild uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}"
Fichier Docker mis à jour
### Build stage FROM eclipse-temurin:21-jre-alpine AS builder # Set the working directory inside the container WORKDIR /tmp # Copy the source code into the container COPY target/*.jar app.jar # Extract the layers RUN java -Djarmode=layertools -jar app.jar extract ### Run stage # Create a minimal production image FROM eclipse-temurin:21-jre-alpine # Set the working directory inside the container WORKDIR /app # Set the working directory inside the container COPY --from=builder /tmp/dependencies/ ./ COPY --from=builder /tmp/snapshot-dependencies/ ./ COPY --from=builder /tmp/spring-boot-loader/ ./ COPY --from=builder /tmp/application/ ./ # Run the binary when the container starts ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Jvm'sperformance estcompatititivewithotherruntimes, offrant une élaboration de personnes, la sécurité et la productivité.1) jvmusjitcompilationfordynamicoptimizations.2) c offrant une performance de Nation

JavaachievesPlatformIndependencethroughthejavirtualmachine (jvm), permettant de codétorunonanyplatformwithajvm.1) codeiscompiledIntoBytecode, notmachine-specificcode.2) bytecodeisinterpretedythejvm

ThejvMisanabstractComputingMachinecrucialForrunningJavapRogramsDuetOtsPlatform-IndependentArchitecture.

Jvmhasacloselalationhipswiththeosasittranslatejavabytecodeintomachine-spécificifiCinstructions, gasmemory et handlesgarbagecollection.

L'implémentation Java "Écrire une fois, exécuter partout" est compilée en bytecode et s'exécute sur une machine virtuelle Java (JVM). 1) Écrivez du code Java et compilez-le en bytecode. 2) ByteCode s'exécute sur n'importe quelle plate-forme avec JVM installé. 3) Utilisez l'interface native Java (JNI) pour gérer les fonctions spécifiques à la plate-forme. Malgré des défis tels que la cohérence JVM et l'utilisation de bibliothèques spécifiques à la plate-forme, WORA améliore considérablement l'efficacité du développement et la flexibilité du déploiement.

JavaachievesPlatformIndependencethRoughthejavirtualmachine (JVM), permettant à la codétorunondiffférente de système

JavaispoWerfuetOitsPlatformIndependence, objet-orientednature, richstandardLibrary, performanceCapabilities et StrongSecurityFeatures.1) Platform IndependenenceSAplicationStorunonanyDevicesupportingJava.2)

Les fonctions Java supérieures incluent: 1) la programmation orientée objet, la prise en charge du polymorphisme, l'amélioration de la flexibilité du code et la maintenabilité; 2) Mécanisme de gestion des exceptions, améliorant la robustesse du code à travers des blocs de capture-effort finalement; 3) Collection des ordures, simplification de la gestion de la mémoire; 4) génériques, améliorant la sécurité de type; 5) Expressions Ambda et programmation fonctionnelle pour rendre le code plus concis et expressif; 6) Bibliothèques standard riches, fournissant des structures de données optimisées et des algorithmes.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.
