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
我有一个 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