Bitbucket Pipelines-openjdk : 11 및 gradle : 6.5 컨테이너로 sh 스크립트 실행 오류

Nov 15 2020

Spring Boot Kotlin Gradle 프로젝트가 있고, CI 테스트를 실행하기 위해 docker-compose를 사용하여 프로젝트를 빌드하는 파이프 라인을 실행하려고하는데 docker-compose가 존재하지 않기 때문에 할 수 없습니다.

따라서 인터넷의 여러 게시물에 따라 gradle 전에 실행할 종속성 .sh 파일을 만들었습니다. 그러면 테스트를 위해 docker-compose가 설치되지만 오류가 발생합니다.

./dependencies.sh: 6: ./dependencies.sh: apk: not found

테스트 컨테이너를 사용하여 bitbucket 파이프 라인에 대한 또 다른 질문을 작성했지만 지금까지 아무도 나를 도울 수 없었기 때문에 aproach를 변경했습니다.

Bitbucket 파이프 라인에서 임베디드 컨테이너 테스트 Spring Boot 실패

누군가 내 테스트를 위해 docker-compose를 사용하여 bitbucket-pipelines.yml을 만드는 데 도움을 줄 수 있습니까? 지금까지 내가 얻은 것은 다음과 같습니다.

bitbucket-pipelines.yml 파일

image: openjdk:11

definitions:
  caches:
    gradleall: ~/.gradle
  services:
    docker:
      memory: 2048
  steps:
    - step: &Build
        name: Build and Test
        artifacts:
          - build/libs/**
          - build/reports/**
        script:
          - chmod +x dependencies.sh
          - ./dependencies.sh
          - bash ./gradlew clean build --stacktrace
        services:
          - docker

pipelines:
  default:
    - step: *Build

및 dependency.sh 파일

#!/usr/bin/env sh

set -eu

# Add python pip and bash
apk add --no-cache py-pip bash

# Install docker-compose via pip
pip install --no-cache-dir docker-compose
docker-compose -v

오류는

답변

AlexWatt Nov 15 2020 at 21:22

주요 것 같다 오픈 JDK 도커 이미지가 사용 데비안을 기반으로 apt-get대신 apk.

image: openjdk:11-alpine대신 시도하여 시작할 수 있습니다 image: openjdk:11. 이렇게하면 현재 설치 프로세스가 작동 할 수 있지만 Docker 페이지에 대한 다음주의 사항을 고려할 때 Alpine 이미지 대신 Debian 이미지를 사용하는 것이 가장 좋을 수 있다고 생각합니다.

Alpine 용 OpenJDK 포트는 메인 라인 코드베이스에 없기 때문에 OpenJDK에서 지원하는 릴리스에 없습니다.

하지만 저는 OpenJDK에 대한 전문가는 아닙니다.

Javarian Nov 16 2020 at 17:58

나는 그것을 작동시켰다

이것이 최선의 방법인지 모르겠지만 내 파일은 다음과 같이 끝났습니다.

bitbucket-pipelines.yml

image: amazoncorretto:11-alpine-full

definitions:
  caches:
    gradleall: ~/.gradle
  services:
    docker:
      memory: 2048
  steps:
    - step: &Build
        name: Build and Test
        artifacts:
          - build/libs/**
          - build/reports/**
        script:
          - chmod +x dependencies.sh
          - ./dependencies.sh
          - sh ./gradlew clean build --stacktrace
        services:
          - docker

pipelines:
  default:
    - step: *Build

dependency.sh

#!/usr/bin/env sh

set -eu

# Add python pip and bash
apk add --no-cache docker-compose

docker-compose -v