我有一个非常长的Github操作命令:
name: build
on: [push]
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Install Prerequisites
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends "a very very long list of prerequisites"
我是否可以将长命令分成多行以提高可读性?我已经尝试使用分隔符'\',但是它不起作用。预先感谢。
答案 0 :(得分:36)
您可以将 YAML 折叠样式与 GitHub Actions 支持的 >
一起使用。
例如
run: >
xvfb-run
./mvnw -f my/pom.xml
clean verify
-DskipTests
换行符会被空格替换,所以上面的内容等价于
run: xvfb-run ./mvnw -f my/pom.xml clean verify -DskipTests
答案 1 :(得分:34)
我有一个多行命令,使用反斜杠来分隔行,如下所示:
- name: Configure functions
run: firebase functions:config:set \
some.key1="${{ secrets.SOME_KEY_1 }}" \
some.key2="${{ secrets.SOME_KEY_2 }}" \
...
答案 2 :(得分:4)
在早期,使用反斜杠是不可能的。有关如何立即执行的操作,请参阅已接受的答案。
据我所知,GitHub Actions不支持。
但是,您可以为此使用环境变量。
例如,此脚本将您的命令分为3行代码,然后将其作为一行执行。
steps:
- name: Install Prerequisites
run: |
sudo apt-get update
bash -c "$line1 $line2 $line3"
env:
- line1='sudo apt-get install -y --no-install-recommends '
- line2='a very very long list'
- line3='of prerequisites'
它创建环境变量line1
,line2
和line3
并合并并在bash会话中执行它们。
答案 3 :(得分:4)
因为没有提到所以打算分享一下。
您可以使用:
|
调用了一个 Literal Block Scalar
,它保留了新行和尾随空格>
调用 Folded Block Scalar
将新行转换为空格我发现网站 yaml-multiline.info 有助于理解 yaml 字符串的解释方式。
对于我的用例,我最终做了以下事情:
run: >-
for i in $(find . -type f -name "*.log");
do
echo "File: ${i} \n";
cat $i;
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' -;
done
答案 4 :(得分:2)