github-actions - 在 github 操作中启动服务之前克隆数据
问题描述
我尝试构建一个 github 操作工作流,它依赖于数据库(可作为 docker 容器使用),而数据库又依赖于需要从 git 存储库克隆的数据。启动 docker 容器时数据需要可用。
目前我原始有以下设置(完整文件可在 GitHub 上找到)
jobs:
build-and-publish:
runs-on: ubuntu-latest # This job uses a GitHub-hosted runner.
services:
# befor this service is started the repository
# https://github.com/AKSW/aksw.org-model.git
# needs to be clones to a volume
fuseki:
image: stain/jena-fuseki
ports:
- 3030:3030
volumes:
- ${{ github.workspace }}/aksw-model:/staging
options: --entrypoint "exec /jena-fuseki/fuseki-server --file=/staging/aksw.org.nt /aksw"
steps:
# Checkout the data repository
- name: Check out Model Repository
uses: actions/checkout@v2
with:
# Repository name with owner. For example, actions/checkout
# Default: ${{ github.repository }}
repository: 'https://github.com/AKSW/aksw.org-model.git'
path: 'aksw-model'
- name: Further steps
…
如果在启动服务之前无法克隆存储库,是否可以克隆存储库,然后将容器作为步骤之一启动并保持在后台?
解决方案
我发现,我可以定义一个运行 docker 容器的步骤。因此,我可以先执行结帐操作,然后运行数据库:
jobs:
build-and-publish:
runs-on: ubuntu-latest
steps:
- name: Check out Model Repository
uses: actions/checkout@v2
with:
repository: 'AKSW/aksw.org-model'
path: '.aksw-model'
- name: Run Triple Store
run: docker run -v ${{ github.workspace }}/.aksw-model:/staging --name fuseki -d stain/jena-fuseki /jena-fuseki/fuseki-server --file=/staging/aksw.org.nt /aksw
- …
GitHub 上提供了实际且完整的文件。
这反过来又导致了我无法通过任何进一步的操作访问数据库容器的问题。此处介绍了此问题:Access a container by hostname in github actions from within an action
推荐阅读
- c - 变量存在于流程的哪些逻辑段中?
- ruby-on-rails - Rails - 根据排序对项目进行排序并更改标题
- c# - 多个 Blazor 应用程序,相同的托管。从第一个应用程序重定向到第二个应用程序。Azure 应用服务
- php - 用 Ajax 添加到购物车的 Woocommerce 产品的可变价格范围替换可变价格范围
- javascript - 重新加载 DOM 元素而不重新加载整个页面(修改源 html)
- java - 用户将数据传递给另一个类
- vue.js - 使用 Vue 和 Axios 渲染列表时如何解决这个问题?
- c - 如何使这段代码更短更准确这段代码只是一个基本代码如何使它更高效
- c++ - 从同一点恢复类方法而不使用 goto
- mongodb - 本地 MongoDB 服务器拒绝启动