如何在一个Github Actions Docker中运行多个命令

时间:2019-06-23 17:49:30

标签: docker dockerfile docker-entrypoint github-actions

在一个action中运行多个命令的正确方法是什么?

例如:

我想以action的身份运行python脚本。在运行此脚本之前,我需要安装requirements.txt

我可以想到几种选择:

  • 使用命令Dockerfile创建一个RUN pip install -r requirements.txt
  • 使用python:3图片,并在pip install -r requirements.txt文件中运行entrypoint.sh,然后再运行argsmain.workflow中的参数。
  • pip installpython myscript.py都用作args

另一个例子:

我想运行存储库中存在的脚本,然后比较2个文件(其输出和一个已经存在的文件)。

这是一个包含两个命令的过程,而在第一个示例中,可以将pip install命令视为构建命令,而不是测试命令。

问题:

我可以为另一个命令创建另一个Docker,其中包含先前Docker的输出吗?

我正在寻找Dockerfileentrypointargs中命令位置的准则。

1 个答案:

答案 0 :(得分:3)

您可以使用|属性上的管道run运行多个命令。检查一下:

name: My Workflow

on: [push]

jobs:
  runMultipleCommands:
    runs-on: ubuntu-latest
    steps:
     - uses: actions/checkout@v1
     - run: |
        echo "A initial message"
        pip install -r requirements.txt
        echo "Another message or command"
        python myscript.py
        bash some-shell-script-file.sh -xe
     - run: echo "One last message"

在我的测试中,运行像./myscript.sh这样的shell脚本会返回``。但是像bash myscript.sh -xe一样运行就可以了。

My workflow file | Results

如果要在docker机器内部运行 ,则可以在您的run子句上运行类似的选项:

docker exec -it pseudoName /bin/bash -c "cd myproject; pip install -r requirements.txt;"