今天早上(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可以做的事情?
谢谢!
答案 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