Сборка Gradle генерирует разные jar при запуске из конвейера или локальноJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Сборка Gradle генерирует разные jar при запуске из конвейера или локально

Сообщение Anonymous »

Я использую рабочий процесс GitHub для создания файла jar для приложения Java/Spring, а затем создаю из него образ Docker.
Проблема в том, что когда я запускаю этот образ локально с помощью Docker, он НЕ запускает сервер grpc.
Я провел тест для запуска на локальном компьютере (это MacOS):

Код: Выделить всё

bash gradlew clean bootJar
docker build --build-arg JAR_FILE=build/libs/user-service-0.0.20.jar -t user-service-local:0.0.20 .
а затем я запустил свой образ, и все работает хорошо.
Когда я делаю то же самое, но через файл рабочего процесса github, и пытаюсь запустить отправленный докер изображение на локальном компьютере не запускает сервер grpc.
Я проверил оба изображения (сгенерированные на локальном компьютере и на github), и их ша идентичны.
Это наводит меня на размышления проблема в gradle.
Вот кусочки, которые помогут сузить круг вопросов.

< h3>Рабочий процесс Github

Код: Выделить всё

build:
if: github.event.pull_request.merged == true
needs: determine-version
runs-on: ubuntu-latest
name: Deploying ${{ needs.determine-version.outputs.new_version }}
env:
ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY }}
ECR_REGISTRY: ${{ vars.ECR_REGISTRY }}
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up JDK 8
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'temurin'
architecture: x64

- name: Build with Gradle
run: ./gradlew clean build --refresh-dependencies

- name: Identify JAR file
id: identify-jar
run: |
jar_file=$(basename $(ls build/libs/*.jar | grep -v '\-plain\.jar'))
echo "Identified JAR file: $jar_file"
echo "::set-output name=jar_file::$jar_file"

- name: Debug JAR file
run: echo "JAR file ${{ steps.identify-jar.outputs.jar_file }}"

- name: Verify JAR file existence
run: |
if [[ ! -f build/libs/${{ steps.identify-jar.outputs.jar_file }} ]]; then
echo "JAR file not found!"
exit 1
fi
echo "JAR file found: build/libs/${{ steps.identify-jar.outputs.jar_file }}"

- name: Update version in build.gradle
run: |
old_version=$(grep "^version = '" build.gradle | cut -d"'" -f2)
echo "Old version: $old_version"
sed -i "s/version = '.*'/version = '${{ needs.determine-version.outputs.new_version }}'/g" build.gradle
new_version=$(grep "^version = '" build.gradle | cut -d"'" -f2)
echo "Updated version in build.gradle: $new_version"

- name: Commit and tag new version
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git remote set-url origin https://x-access-token:${{ secrets.GH_PAT }}@github.com/${{ github.repository }}.git
git add build.gradle
git commit -m "Increment version to ${{ needs.determine-version.outputs.new_version }}"
git tag -a "${{ needs.determine-version.outputs.new_version }}"  -m "Release ${{ needs.determine-version.outputs.new_version }}"
git push origin --tags
git push origin main

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-2

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
env:
AWS_REGION: eu-west-2

- name: Build Docker image
run: |
docker build --build-arg JAR_FILE=build/libs/${{ steps.identify-jar.outputs.jar_file }} -t ${{ vars.ECR_REPOSITORY }}:latest -t ${{ vars.ECR_REPOSITORY }}:${{ needs.determine-version.outputs.new_version }} .

- name: Tag Docker image
run: |
docker tag ${{ vars.ECR_REPOSITORY }}:${{ needs.determine-version.outputs.new_version }} ${{ vars.ECR_REGISTRY }}/${{ vars.ECR_REPOSITORY }}:${{ needs.determine-version.outputs.new_version }}
docker tag ${{ vars.ECR_REPOSITORY }}:latest ${{ vars.ECR_REGISTRY }}/${{ vars.ECR_REPOSITORY }}:latest

- name: Push Docker image
run: |
docker push ${{ vars.ECR_REGISTRY }}/${{ vars.ECR_REPOSITORY }}:${{ needs.determine-version.outputs.new_version }}
docker push ${{ vars.ECR_REGISTRY }}/${{ vars.ECR_REPOSITORY }}:latest
Gradle-wrapper.properties

Код: Выделить всё

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
build.gradle

Код: Выделить всё

plugins {
id 'org.springframework.boot' version '2.6.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'com.google.protobuf' version '0.8.14'
}

group = 'com.uberkaretki.user'
version = '0.0.20'
sourceCompatibility = '1.8'

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
mavenLocal()

repositories {
maven {
name 'GitHub'
url "https://maven.pkg.github.com/uberkaretki/common"

credentials {
username = 'xxx'
password = 'yyy' // Just packages:read
}
}
}

}

dependencies {
implementation "com.uberkaretki:karetki-common:0.1.2"

compileOnly 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok'

}

protobuf {
generatedFilesBaseDir = "$projectDir/src/main/java/generated"
protoc {
artifact = 'com.google.protobuf:protoc:3.10.1'
}

plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.25.0'
}
}

generateProtoTasks {
all()*.plugins {
grpc {}
}
}
}
Я провел тест для локального запуска (то есть MacOS):

Код: Выделить всё

bash gradlew clean bootJar
docker build --build-arg JAR_FILE=build/libs/user-service-0.0.20.jar -t user-service-local:0.0.20 .
а затем я запустил свой образ, и все работает хорошо.

Подробнее здесь: https://stackoverflow.com/questions/788 ... e-vs-local
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»