gpt4 book ai didi

docker - 我如何在 Github Actions 中运行 Pandoc 'convert all files in Dir' 命令

转载 作者:行者123 更新时间:2023-12-03 16:36:22 25 4
gpt4 key购买 nike

我想设置一个运行 this 的 github 操作当它被推送到 master 时,来自 pandoc FAQ 的命令。我们的目标是使用 pandoc docker 容器将我们 repo 中的所有 md 文件从 md 转换为另一种格式。

这是我到目前为止的地方。在第一个示例中,我没有声明入口点,并且收到错误“/usr/local/bin/docker-entrypoint.sh: exec: line 11: for: not found”。

name: Advanced Usage

on:
push:
branches:
- master

jobs:
convert_via_pandoc:
runs-on: ubuntu-18.04
steps:
- name: convert md to rtf
uses: docker://pandoc/latex:2.9
with:
args: |
for f in *.md; do pandoc "$f" -s -o "${f%.md}.rtf"; done

在第二个例子中,我们声明 entrypoint: /bin/sh结果是错误“/bin/sh: can't open 'for': No such file or directory”
name: Advanced Usage

on:
push:
branches:
- master

jobs:
convert_via_pandoc:
runs-on: ubuntu-18.04
steps:
- name: convert md to rtf
uses: docker://pandoc/latex:2.9
with:
entrypoint: /bin/sh
args: |
for f in *.md; do pandoc "$f" -s -o "${f%.md}.rtf"; done

我对 git 操作完全是个菜鸟,而不是技术人员,所以我猜这对 SO 社区来说是一个简单的想法。只是尝试一些简单的工作流程自动化。感谢任何明确的初学者反馈。谢谢 - 艾伦

最佳答案

我需要对 md 文件进行递归转换以制作可下载的包,所以这个答案超出了 OP 的目标。
这个 github 操作将:

  • 制作输出目录 ( mkdir output )
  • 遍历文件夹,在输出目录 ( for d in */; do mkdir output/$d; done )
  • 中创建名称相似的文件夹
  • 递归查找所有 md 文件( find ./ -iname '*.md' -type f )并执行 pandoc 命令( -exec sh -c 'pandoc ${0} -o output/${0%.md}.docx' {} \; )

  • 请注意,在将在终端中工作的内容转换为作为 github 操作的一部分正确转换为单个 docker 命令的内容时,您必须小心使用双引号和单引号。
    第一次迭代
    jobs:
    convert_via_pandoc:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: convert md to docx
    uses: docker://pandoc/latex:2.9
    with:
    entrypoint: /bin/sh
    args: -c "mkdir output;for d in */; do mkdir output/$d; done;find ./ -iname '*.md' -type f -exec sh -c 'pandoc ${0} -o output/${0%.md}.docx' {} \;"
    - uses: actions/upload-artifact@master
    with:
    name: output
    path: output
    此解决方案是使用@anemyte 的信息和此 SO post on recursive conversion 开发的
    来自@caleb 的第二次迭代
    name: Generate Word docs
    on: push

    jobs:
    convert_via_pandoc:
    runs-on: ubuntu-20.04
    container:
    image: docker://pandoc/latex:2.9
    options: --entrypoint=sh
    steps:
    - uses: actions/checkout@v2
    - name: prepare output directories
    run: |
    for d in */; do
    mkdir -p output/$d
    done
    - name: convert md to docx
    run: |
    find ./ -iname '*.md' -type f -exec sh -c 'pandoc ${0} -o output/${0%.md}.docx' {} \;
    - uses: actions/upload-artifact@master
    with:
    name: output
    path: output

    关于docker - 我如何在 Github Actions 中运行 Pandoc 'convert all files in Dir' 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60594105/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com