forked from Eeveid/lightOps
🐛 fix(workflow): 提高 Rust 环境初始化兼容性
- 用纯 shell 逻辑替换 PATH 过滤中的 awk 写法,避免不同 runner 上的 awk 语法差异 - 保持优先系统工具链、跳过 ~/.cargo/bin 的策略不变 - 修复安装 Rust 步骤在 shell 解析阶段直接失败的问题
This commit is contained in:
@@ -60,8 +60,21 @@ jobs:
|
|||||||
- name: 安装 Rust
|
- name: 安装 Rust
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
PATH_WITHOUT_CARGO_BIN="$(printf '%s' "$PATH" | awk -v RS=: -v ORS=: '$0 != ENVIRON["HOME"] \"/.cargo/bin\" { print }' | sed 's/:$//')"
|
PATH_BASE="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin${PATH_WITHOUT_CARGO_BIN:+:$PATH_WITHOUT_CARGO_BIN}"
|
PATH_EXTRA=""
|
||||||
|
OLD_IFS="$IFS"
|
||||||
|
IFS=':'
|
||||||
|
set -- $PATH
|
||||||
|
IFS="$OLD_IFS"
|
||||||
|
for entry in "$@"; do
|
||||||
|
[ -n "$entry" ] || continue
|
||||||
|
[ "$entry" = "$HOME/.cargo/bin" ] && continue
|
||||||
|
case ":$PATH_BASE:$PATH_EXTRA:" in
|
||||||
|
*":$entry:"*) continue ;;
|
||||||
|
esac
|
||||||
|
PATH_EXTRA="${PATH_EXTRA:+$PATH_EXTRA:}$entry"
|
||||||
|
done
|
||||||
|
export PATH="$PATH_BASE${PATH_EXTRA:+:$PATH_EXTRA}"
|
||||||
if ! command -v cargo >/dev/null 2>&1 || ! command -v rustc >/dev/null 2>&1; then
|
if ! command -v cargo >/dev/null 2>&1 || ! command -v rustc >/dev/null 2>&1; then
|
||||||
[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
|
[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
|
||||||
fi
|
fi
|
||||||
@@ -78,8 +91,21 @@ jobs:
|
|||||||
- name: 构建发布包
|
- name: 构建发布包
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
PATH_WITHOUT_CARGO_BIN="$(printf '%s' "$PATH" | awk -v RS=: -v ORS=: '$0 != ENVIRON["HOME"] \"/.cargo/bin\" { print }' | sed 's/:$//')"
|
PATH_BASE="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin${PATH_WITHOUT_CARGO_BIN:+:$PATH_WITHOUT_CARGO_BIN}"
|
PATH_EXTRA=""
|
||||||
|
OLD_IFS="$IFS"
|
||||||
|
IFS=':'
|
||||||
|
set -- $PATH
|
||||||
|
IFS="$OLD_IFS"
|
||||||
|
for entry in "$@"; do
|
||||||
|
[ -n "$entry" ] || continue
|
||||||
|
[ "$entry" = "$HOME/.cargo/bin" ] && continue
|
||||||
|
case ":$PATH_BASE:$PATH_EXTRA:" in
|
||||||
|
*":$entry:"*) continue ;;
|
||||||
|
esac
|
||||||
|
PATH_EXTRA="${PATH_EXTRA:+$PATH_EXTRA:}$entry"
|
||||||
|
done
|
||||||
|
export PATH="$PATH_BASE${PATH_EXTRA:+:$PATH_EXTRA}"
|
||||||
if ! command -v cargo >/dev/null 2>&1 || ! command -v rustc >/dev/null 2>&1; then
|
if ! command -v cargo >/dev/null 2>&1 || ! command -v rustc >/dev/null 2>&1; then
|
||||||
[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
|
[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user