是否可以在GitHub Actions中的Actions之间保留WORKDIR?

时间:2019-02-01 16:18:10

标签: github github-actions

今天早上(wooo),我醒来了我的GitHub Actions BETA邀请,并开始使用它,目的是迁移一些我目前在CircleCI上运行的简单构建,测试和部署管道。

我仍在努力了解Actions,但我想到的流程是,在推送之后,工作流中的第一个Action将启动Docker容器。在该容器内,我将运行一些简单的构建过程,例如最大程度地减少资产并消除人工制品。然后,下一个操作将在构建上运行一些测试。管道中的下一个动作将部署到许多环境之一,具体取决于我推送到的分支。

我一直关注https://developer.github.com/actions/creating-github-actions/creating-a-docker-container/上的文档,并拥有一个基本的工作流程,该工作流程可启动Docker容器并在WORKDIR内运行一些构建命令。我也可以从WORKDIR内部运行部署(通过rsync)。

但是,我想将其分为单独的步骤/操作,但是我找不到解决方法。

从本质上讲,这类似于我正在使用的CircleCI作业/工作流模型。但是,使用CircleCI,第一个作业将运行一个构建,然后在整个工作流程的其余部分中保留生成的目录结构,如下所示:

# Persist dist directory
  - persist_to_workspace:
      root: ~/project
      paths:
        - .

所以,我在这里将CircleCI的Jobs等同于GitHub的Actions,这可能做错了吗?本质上,我想发现的是我是否可以将WORKDIR保留在第一个Action的Docker容器中,并使该WORKDIR可用于后续Action。

这是可能的,还是我想像不到GitHub Actions可以做的事情?

谢谢!

2 个答案:

答案 0 :(得分:1)

我自己回答此问题,以防其他人遇到此问题(并且像我一样,没有完全阅读文档!)。 :o)

文档here进行了说明,但实际上,作为操作一部分而启动的任何容器的工作目录都以/github/workspace的形式存在。动作可以修改此工作目录的内容,当在工作流期间的后续动作中启动容器时,这些动作/容器的工作目录将包含工作流中较早进行的修改。

因此,答案是肯定的,WORKDIR处的Docker /github/workspace在GitHub Actions工作流程中持久存在,其方式类似于在CircleCI工作流程中持久的方式。

答案 1 :(得分:0)

今天进行的测试中,它无法在作业之间保留文件。 CircleCi确实可以,在那里您可以存储一些内容以供以后的工作阅读,但是我不能在GitHub Actions上阅读。

以下是我的测试:

在作业上写文件,尝试在下一个继续阅读

使用了test file

1)GITHUB_WORKSPACE上写
我的路径:/ home / runner / work / github-actions-test / github-actions-test)
结果:第一份工作可写且可读,但第二份工作为空 Action link

2)写在/github/home
我的路径:/ github / home
结果:cannot access '/github/home/ Action link

3)/home上写
我的路径:/ home
结果:touch: cannot touch '/home/myFile.txt': Permission denied
Action link