我正在尝试使用 Kubernetes 使用kubernetes 插件设置 Jenkins 从站。我的目标是让插件在每次需要运行作业时启动 GKE 容器。
我已经完成了以下设置:
1 - 创建新集群
2 - 为集群创建具有管理员角色的服务帐户
3 - 配置jenkins kubernetes
插件(能够连接到 GKE 集群)
4 - 配置pod template
(使用我已经推送到 DockerHub 的自定义 Docker 映像)
当我构建一个项目时,我可以看到工作运行到一半,直到到达以下点:
Agent went offline during the build
ERROR: Connection was broken: java.nio.channels.ClosedChannelException
这是什么错误,我该如何解决?是否需要任何其他设置?
更新:搜索后,我更新了我的Dockerfile
. 好像容器已经可以写了:
FROM jenkins/inbound-agent
USER root
# Install Build Essentials
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get dist-upgrade -y \
&& apt-get install build-essential -y
# Set Environment Variables
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
ANDROID_HOME="/home/jenkins/android-sdk" \
ANDROID_VERSION=30 \
BUILDTOOL_VERSION="30.0.2" \
NDK_VERSION="22.0.7026061"
USER jenkins
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
&& cd "$ANDROID_HOME" \
&& curl -o sdk.zip $SDK_URL \
&& unzip sdk.zip \
&& rm sdk.zip \
&& mkdir "$ANDROID_HOME/licenses" || true \
&& echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > "$ANDROID_HOME/licenses/android-sdk-license" \
&& yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${BUILDTOOL_VERSION}" \
"platforms;android-${ANDROID_VERSION}" \
"platform-tools" \
"ndk;${NDK_VERSION}"
我可以看到Workload
创建和构建正在运行,但不明白为什么它总是停在中间并出现上述错误。看来我的 pod 在构建完成之前已断开连接。