我在代码库的多个子目录中有多个 .md
文件,它们都具有相同的命名约定,例如 seminar1/slides.md
、seminar2/slides.md
等。需要使用 pandoc 处理这些 *.md
文件。我希望每次提交到代码库时都能自动执行此操作,并决定将其实现为在 Github 上运行的操作。
我创建了以下工作流程作为 .yml 文件,Github 可以识别为操作。它可以处理单个子目录下的文件,例如/seminar1/*.md
,但处理多个子目录时会失败。
name: Make slides
on: push
jobs:
convert_via_pandoc:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
ref: slides
- run: |
echo "::set-env name=FILELIST::$(printf '"%s"' seminar*/*.md)"
- uses: docker://pandoc/latex:2.9
with:
args: -t beamer --output=${{env.FILELIST}}.pdf ${{env.FILELIST}}
- uses: actions/upload-artifact@v2
with:
name: seminar-slides
path: seminar*/*.md.pdf
如何编写一个脚本以检测所有的 seminar*/*.md
文件并对其进行操作?
此外,我需要一些关于通用性的帮助:
- 所有脚本都是从根目录运行。这意味着我必须修改 .md 文件的内容以包含目录,例如使用
seminar1/bridge.jpg
而不仅仅是使用bridge.jpg
。如何为每个$env.FILELIST
更改工作目录? - 如何剥离文件名的扩展名并在
$env.FILELIST
中使用?
cd
命令,除非至少切换回原始目录(pushd/popd)或使用子shell,以便你的脚本CWD不会移动。但即使你解决了这个问题,也无法解决在与预期路径不同的位置上使用GH Action的问题。虽然有一种方法可以解决,但这不是其中之一。 - Caleb