Boj*_*eng 55 yaml github github-actions
我有一个非常长的 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"
Run Code Online (Sandbox Code Playgroud)
我可以知道是否可以将长命令分成多行以提高可读性?我试过分隔符 '\' 但它不起作用。提前致谢。
Mik*_*rco 74
我有一个使用反斜杠来分隔行的多行命令,如下所示:
- name: Configure functions
run: |
firebase functions:config:set \
some.key1="${{ secrets.SOME_KEY_1 }}" \
some.key2="${{ secrets.SOME_KEY_2 }}" \
...
Run Code Online (Sandbox Code Playgroud)
注意前面的“|” 特点。
lor*_*ini 42
您可以使用YAML折叠风格与>它由GitHub的行动支持。
例如,
run: >
xvfb-run
./mvnw -f my/pom.xml
clean verify
-DskipTests
Run Code Online (Sandbox Code Playgroud)
换行符将被空格替换,所以上面的等价于
run: xvfb-run ./mvnw -f my/pom.xml clean verify -DskipTests
Run Code Online (Sandbox Code Playgroud)
Mix*_*nge 34
上面的答案都有部分,但这就是在 github 复合操作中对我有用的。它也应该在常规工作流程中工作。
正如 @lorenzo-bettini 所说,如果您希望所有内容都在一行上,请使用 @Josue Alexander Ibarra 所谓的Folded Block Scalar.
run: >
xvfb-run
./mvnw -f my/pom.xml
clean verify
-DskipTests
Run Code Online (Sandbox Code Playgroud)
换行符将替换为空格,因此上面相当于
run: xvfb-run ./mvnw -f my/pom.xml clean verify -DskipTests
Run Code Online (Sandbox Code Playgroud)
如果您想保留新行,请使用 @Josue Alexander Ibarra 所谓的Literal Block Scalar.
run: |
FILE=./package.json
if test -f "$FILE"
then
echo "$FILE exists."
else
echo "File does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
但是,当您进行多行运行时,您必须确保缩进正确,否则step会认为这shell: bash是字符串的一部分run: |。
错误的:
steps:
- run: |
FILE=./package.json
if test -f "$FILE"
then
echo "$FILE exists."
else
echo "File does not exist"
fi
shell: bash
Run Code Online (Sandbox Code Playgroud)
正确的:
steps:
- run: |
FILE=./package.json
if test -f "$FILE"
then
echo "$FILE exists."
else
echo "File does not exist"
fi
shell: bash
Run Code Online (Sandbox Code Playgroud)
Jos*_*rra 11
由于尚未提及,因此将在此分享。
您可以使用:
|称为 aLiteral Block Scalar保留新行和尾随空格>称为 a 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
Run Code Online (Sandbox Code Playgroud)
早些时候,这是不可能使用反斜杠的。请参阅有关如何立即执行的已接受答案。
据我所知,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'
Run Code Online (Sandbox Code Playgroud)
它创建环境变量line1, line2andline3并在 bash 会话中连接并执行它们。
| 归档时间: |
|
| 查看次数: |
19169 次 |
| 最近记录: |