github - 是否可以在 GitHub Actions 中的 Actions 之间保留 WORKDIR?
问题描述
今天早上我收到了我的 GitHub Actions BETA 邀请 (wooo) 并开始使用它,目的是迁移我目前在 CircleCI 上运行的一些简单的构建、测试和部署管道。
我仍在尝试了解 Actions,但我想到的流程是,在推送之后,工作流中的第一个 Action 将启动 Docker 容器。在该容器内,我将运行一些简单的构建过程,例如最小化资产和移除人工制品。然后,下一个 Action 将对构建运行一些测试。管道中的下一个操作将部署到多个环境之一,具体取决于我推送到的分支。
我遵循了https://developer.github.com/actions/creating-github-actions/creating-a-docker-container/上的文档,并有一个基本的工作流程,可以启动 Docker 容器并在内部运行一些构建命令WORKDIR
. 我也可以在其中运行部署(通过 rsync)WORKDIR
。
但是,我想将其拆分为单独的步骤/操作,但我无法找到解决此问题的方法。
本质上,这类似于我正在使用的 CircleCI 工作/工作流模型。但是,使用 CircleCI,第一个作业会运行构建,然后在整个工作流程的其余部分中保留生成的目录结构,如下所示:
# Persist dist directory
- persist_to_workspace:
root: ~/project
paths:
- .
所以,我在这里将 CircleCI 的工作等同于 GitHub 的操作,这可能是错误的做法吗?本质上,我想知道的是我是否可以WORKDIR
在第一个 Action 的 Docker 容器中持久化 a 并将其WORKDIR
提供给后续的 Action。
这是可能的,还是我想象中的 GitHub Actions 可以做的事情还很遥远?
谢谢!
解决方案
自己回答这个问题,以防其他人遇到这个问题(并且像我一样,没有完全阅读文档!)。:o)
此处的文档进行了解释,但本质上,您作为操作的一部分启动的任何容器的工作目录都以/github/workspace
. 动作可以修改这个工作目录的内容,当容器在工作流的后续动作中启动时,这些动作/容器的工作目录将包含工作流之前所做的修改。
所以,答案是肯定的,Docker WORKDIR
at 在/github/workspace
整个 GitHub Actions 工作流程中以类似于它在 CircleCI 工作流程中持久化的方式持续存在。