使用 self-hosted
当使用自建的 runner 时,checkout 插件并没有自动清空工作空间,这时可以使用环境变量配置前置、后置脚本。
ACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/actions-runner/scripts/cleanup.sh
ACTIONS_RUNNER_HOOK_JOB_COMPLETED=/opt/actions-runner/scripts/cleanup.sh
#!/usr/bin/env bash
rm -rf $GITHUB_WORKSPACE/*
rm -rf $GITHUB_WORKSPACE/.??*
使用 self-hosted container
当使用 container 时就遇到问题了,我的 runner 使用单独的用户运行,并且没有 sudo 权限,而容器运行后,生成的工作空间全为 root 权限,导致我的后置任务,也无法删除。
这时可以使用容器来提权,修改工作空间的权限后再执行删除操作。
#!/usr/bin/env bash
# ================================================
# 文件路径 /opt/actions-runner/scripts/cleanup.sh
# ================================================
if [ -n "${GITHUB_WORKSPACE}" ]; then
docker run --rm \
-v $GITHUB_WORKSPACE/../../:/workspace \
busybox:latest \
/bin/sh -c "chown -R $(id -u):$(id -g) /workspace"
rm -rf ${GITHUB_WORKSPACE}/{.??*,*}
fi
配置 .env
使用该清理脚本,需要在 /opt/actions-runner/.env
文件中添加环境变量,之后运行 sudo ./svc.sh stop && sudo ./svc.sh start
重启 runner