Bitbucket 管道 - 带有 openjdk:11 和 gradle:6.5 容器的错误 运行 sh 脚本

Bitbucket Pipelines - Error running sh script with openjdk:11 and gradle:6.5 containers

我有一个 Spring Boot Kotlin Gradle 项目,我正在尝试 运行 一个管道来构建我的项目,使用 docker-compose 到 运行 我的 CI 测试,但我不能,因为 docker-compose 不存在

因此,根据互联网上的几篇帖子,我在 gradle 之前创建了一个 dependencies.sh 文件到 运行,这将为我的测试安装 docker-compose,但是我收到错误

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

我写了另一个关于 bitbucket pipelines using testcontainers 的问题,但到目前为止没有人能帮助我,所以我改变了方法

Embedded container tests Spring Boot fail on bitbucket pipeline

有人可以帮我创建一个 bitbucket-pipelines.yml 和 docker-compose 用于我的测试,到目前为止我得到的是:

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

和dependencies.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

错误是

似乎主要 OpenJDK Docker images 是基于 Debian,它使用 apt-get 而不是 apk

您可以先尝试 image: openjdk:11-alpine 而不是 image: openjdk:11;这应该允许您当前的安装过程工作,但考虑到 Docker 页面上的以下警告,我认为最好使用他们的 Debian 映像而不是他们的 Alpine 映像:

The OpenJDK port for Alpine is not in a supported release by OpenJDK, since it is not in the mainline code base.

不过,我不是 OpenJDK 方面的专家。

我做到了

我不知道这是否是最好的方式,但我的文件最终是这样的:

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

dependencies.sh

#!/usr/bin/env sh

set -eu

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

docker-compose -v