在 GitHub Actions 中使用 docker 文件
Posted
技术标签:
【中文标题】在 GitHub Actions 中使用 docker 文件【英文标题】:Use of docker files in GitHub Actions 【发布时间】:2022-01-20 04:14:06 【问题描述】:我想在 Github Action 中使用 pandoc 从 Markdown 文件生成 pdf。为此,我打算使用现有的 Docker 容器来提高性能。但不幸的是,我不能通过添加相应的容器引用(删除第 6 行中的 #
)来简单地在原生 ubuntu-latest
和 pandoc/latex:2.9
之间切换。在这种情况下,我收到了没有 pandoc 容器时不会发生的意外错误消息。
name: Execute_pandoc
on: [push]
jobs:
Run_pandoc:
runs-on: ubuntu-latest
#container: pandoc/latex:2.16
steps:
- name: Illustrate the problem
run: |
echo "Hello World"
dirlist=(`ls *`)
Run echo "Hello World"
Hello World
/__w/_temp/2ac5de2c-2847-4b00-8a97-ba3bb034898e.sh: line 2: syntax error: unexpected "("
Error: Process completed with exit code 2.
【问题讨论】:
为此使用操作是有意义的。您可以基于该 docker 映像创建自己的自定义操作,也可以尝试在市场上找到现有的操作。我看到那里已经有一个了:github.com/marketplace/actions/pandoc-document-converter 好吧,也许它更有效。但是为什么这个例子在这两种情况下都不起作用?我必须以不同的方式处理混凝土容器吗? 【参考方案1】:你得到的语法错误是因为 shell 不理解你的命令。尝试设置不同的 shell 或更改命令。
请记住,在您的示例中,pandoc/latex
的基本映像是 alpine
,它使用 ash
。您可以简单地使用基于其他发行版的另一个 pandoc 图像。
这是一个例子:
name: Execute_pandoc
on: [push]
jobs:
Run_pandoc:
runs-on: ubuntu-latest
container: pandoc/ubuntu-latex
steps:
- name: Illustrate the problem
run: |
echo "Hello World"
dirlist=(`ls /*`)
echo $dirlist[@]
shell: bash
【讨论】:
以上是关于在 GitHub Actions 中使用 docker 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GitHub Actions 中构建的 Dockerfile 中使用 github 令牌并尝试克隆私有存储库?
在 Windows 上的 GitHub Actions 中缓存依赖项
如何在 GitHub Actions 中使用 env 文件?
在 GitHub Actions 中使用 docker 文件