https://github.com/GoogleContainerTools/jib/tree/master/examples/multi-module
Essayer.
com.palantir.docker pour gradle, mais je ne savais pas comment le faire fonctionner avec plusieurs projets.com.palantir.docker.
――Je voulais utiliser la flèche.rootProject--sample1 ← C'est le référentiel qui pousse vers ECR
           --sample2
https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#quickstart Corrigez-le comme ça en regardant. Il est important de mettre apply false dans les plugins du rootProject. Si vous n'entrez pas ceci, une erreur se produira.
build.gradle(Extrait de rootProject)
plugins {
    id 'org.springframework.boot' version '2.3.4.RELEASE'
    id 'io.spring.dependency-management' version "1.0.10.RELEASE"
    id 'com.google.cloud.tools.jib' version '2.6.0' apply false
}
ext {
    artifactGroup = 'prototype.app'
    artifactVersion = '1.0.0'
    springBootDependenciesVersion = '2.3.4.RELEASE'
}
/*Commun à tous les projets*/
allprojects {
    ext {
        set('extention', 'jar')
        set('artifactVersion', "${artifactVersion}")
    }
    repositories {
        mavenCentral()
        jcenter()
        gradlePluginPortal()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
}
/*Commun aux projets Java*/
configure(subprojects) {
    apply plugin: 'java'
    apply plugin: 'java-library'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
  
    dependencyManagement {
        imports {
            // Spring Boot
            mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootDependenciesVersion}"
        }
        imports {
            // AWS SDK ver 2.X.X
            mavenBom "software.amazon.awssdk:bom:2.14.14"
        }
    }
    dependencies {
        // for Develop
        annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    }
}
/*Commun aux projets Docker*/
configure(subprojects - project('sample2') ) {
    apply plugin: "com.google.cloud.tools.jib"
}
build.gradle(extrait sample1)
plugins {
    id 'com.google.cloud.tools.jib'
}
jib {
    from {
        image = 'amazoncorretto:11'  
    }
    to {
        image = "XXXXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/prototype"
    //    tags = ["${artifactVersion}"]       
    }
    container {
        environment = [SPRING_PROFILES_ACTIVE:"prod"]
    }
}
Codebuild est également utilisé, alors créez buildspec.yml. Si vous ne créez pas de référentiel ECR, une erreur se produira, donc je l'ai créé avec terraform à l'avance. De plus, je ne le fais généralement pas, mais j'ai ajouté un docker pull and run dans la phase post_build pour voir si cela fonctionne.
buildspec.yml
version: 0.2
env:
  variables:
    # FIXME:
    AWS_ACCOUNT   : "XXXXXXXXXXXXX"
    IMAGE_REPO    : "prototype"
    TAG           : "latest" 
phases:
  install:
    runtime-versions:
      java: corretto11
    commands:
      - chmod +x ./gradlew
      - touch gradle.properties
      - |
        cat <<EOL >> gradle.properties
        org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m
        EOL
        
      - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay&
      - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
  pre_build:
    commands:
      - echo build start on `date`
      - $(aws ecr get-login --no-include-email)
      
  build:
    commands:
      - ./gradlew build 
      - ./gradlew :sample1:jib --info
  post_build:
    commands:
      #Pour le contrôle de fonctionnement
      - docker pull ${AWS_ACCOUNT}.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGE_REPO}:${TAG}
      - docker run -p 8080:8080 ${AWS_ACCOUNT}.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGE_REPO}:${TAG}
      - echo build end on `date`
cache:
  paths:
    - /root/.gradle/caches/**/*
    - /root/.gradle/wrapper/**/*
Au début, j'ai été frappé par les spécifications ECR, mais cela a fonctionné. (Le journal a été modifié comme ça)
Status: Downloaded newer image for XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/prototype:latest
XXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/prototype:latest
[Container] 2020/11/14 04:44:20 Running command docker run -p 8080:8080 ${AWS_ACCOUNT}.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGE_REPO}:${TAG}
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.4.RELEASE)
2020-11-14 04:44:24.281  INFO 1 --- [           main] p.b.transfer.BeforeTransferApplication   : Starting BeforeTransferApplication on f2ceab1be0d6 with PID 1 (/app/classes started by root in /)
2020-11-14 04:44:24.283  INFO 1 --- [           main] p.b.transfer.BeforeTransferApplication   : The following profiles are active: prod
2020-11-14 04:44:25.481  INFO 1 --- [           main] p.b.transfer.BeforeTransferApplication   : Started BeforeTransferApplication in 1.636 seconds (JVM running for 2.084)
[Container] 2020/11/14 04:44:25 Running command echo build end on `date`
build end on Sat Nov 14 04:44:25 UTC 2020
        Recommended Posts