Github 在容器中执行 运行 步时操作工作流失败
Github Actions workflow fails when running steps in a container
我刚刚开始为 project.I 尝试 运行 具有以下工作流定义的容器中的工作流步骤之一设置 Github-actions 工作流:
name: TMT-Charts-CI
on:
push:
branches:
- master
- actions-ci
jobs:
build:
runs-on: ubuntu-latest
container:
image: docker://alpine/helm:2.13.0
steps:
- name: Checkout Code
uses: actions/checkout@v1
- name: Validate and Upload Chart to Chart Museum
run: |
echo "Hello, world!"
export PAGER=$(git diff-tree --no-commit-id --name-only -r HEAD)
echo "Changed Components are => $PAGER"
export COMPONENT="NOTSET"
for CHANGE in $PAGER; do ENV_DIR=${CHANGE%%/*}; done
for CHANGE in $PAGER; do if [[ "$CHANGE" != .* ]] && [[ "$ENV_DIR" == "${CHANGE%%/*}" ]]; then export COMPONENT="$CHANGE"; elif [[ "$CHANGE" == .* ]]; then echo "Not a Valid Dir for Helm Chart" ; else echo "Only one component per PR should be changed" && exit 1; fi; done
if [ "$COMPONENT" == "NOTSET" ]; then echo "No component is changed!" && exit 1; fi
echo "Initializing Component => $COMPONENT"
echo $COMPONENT | cut -f1 -d"/"
export COMPONENT_DIR="${COMPONENT%%/*}"
echo "Changed Dir => $COMPONENT_DIR"
cd $COMPONENT_DIR
echo "Install Helm and Upload Chart If Exists"
curl -L https://git.io/get_helm.sh | bash
helm init --client-only
但是 Workflow 失败,指出容器立即停止。
我尝试了很多镜像,包括"alpine:3.8"官方文档中描述的镜像,但是容器停止了。
根据 Workflow syntax for GitHub Actions,在容器部分:"A container to run any steps in a job that don't already specify a container." 我的假设是容器将启动并且步骤将在 Docker 容器内 运行 .
我们可以通过制作自定义 docker 图像来实现这一点,实际上 Github 跑步者在执行入口点命令后以某种方式停止了 运行 容器,我制作了 docker 图像entrypoint 使容器处于活动状态,因此容器在启动后不会死亡。
这是自定义的 Dockerfile (https://github.com/rizwan937/Helm-Image)
您可以将此图像发布到 dockerhub 并在
等工作流程文件中使用它
container:
image: docker://rizwan937/helm
您可以将此入口点添加到任何 docker 图像,以便它保持活动状态以执行进一步的步骤。
这是一个临时解决方案,如果有人有更好的解决方案,请告诉我。
我刚刚开始为 project.I 尝试 运行 具有以下工作流定义的容器中的工作流步骤之一设置 Github-actions 工作流:
name: TMT-Charts-CI
on:
push:
branches:
- master
- actions-ci
jobs:
build:
runs-on: ubuntu-latest
container:
image: docker://alpine/helm:2.13.0
steps:
- name: Checkout Code
uses: actions/checkout@v1
- name: Validate and Upload Chart to Chart Museum
run: |
echo "Hello, world!"
export PAGER=$(git diff-tree --no-commit-id --name-only -r HEAD)
echo "Changed Components are => $PAGER"
export COMPONENT="NOTSET"
for CHANGE in $PAGER; do ENV_DIR=${CHANGE%%/*}; done
for CHANGE in $PAGER; do if [[ "$CHANGE" != .* ]] && [[ "$ENV_DIR" == "${CHANGE%%/*}" ]]; then export COMPONENT="$CHANGE"; elif [[ "$CHANGE" == .* ]]; then echo "Not a Valid Dir for Helm Chart" ; else echo "Only one component per PR should be changed" && exit 1; fi; done
if [ "$COMPONENT" == "NOTSET" ]; then echo "No component is changed!" && exit 1; fi
echo "Initializing Component => $COMPONENT"
echo $COMPONENT | cut -f1 -d"/"
export COMPONENT_DIR="${COMPONENT%%/*}"
echo "Changed Dir => $COMPONENT_DIR"
cd $COMPONENT_DIR
echo "Install Helm and Upload Chart If Exists"
curl -L https://git.io/get_helm.sh | bash
helm init --client-only
但是 Workflow 失败,指出容器立即停止。
我尝试了很多镜像,包括"alpine:3.8"官方文档中描述的镜像,但是容器停止了。
根据 Workflow syntax for GitHub Actions,在容器部分:"A container to run any steps in a job that don't already specify a container." 我的假设是容器将启动并且步骤将在 Docker 容器内 运行 .
我们可以通过制作自定义 docker 图像来实现这一点,实际上 Github 跑步者在执行入口点命令后以某种方式停止了 运行 容器,我制作了 docker 图像entrypoint 使容器处于活动状态,因此容器在启动后不会死亡。
这是自定义的 Dockerfile (https://github.com/rizwan937/Helm-Image) 您可以将此图像发布到 dockerhub 并在
等工作流程文件中使用它 container:
image: docker://rizwan937/helm
您可以将此入口点添加到任何 docker 图像,以便它保持活动状态以执行进一步的步骤。
这是一个临时解决方案,如果有人有更好的解决方案,请告诉我。