Клонировать данные перед запуском службы в действиях github
Я пытаюсь создать рабочий процесс действия github, который зависит от базы данных (доступной в виде контейнера докеров), которая, в свою очередь, зависит от данных, которые необходимо клонировать из репозитория git. Данные должны быть доступны при запуске контейнера докеров.
В настоящее время у меня есть следующая настройка (полный файл доступен на 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
…
Если невозможно клонировать репозиторий перед запуском службы, можно ли клонировать репозиторий, а затем запустить контейнер в качестве одного из шагов и оставить его в фоновом режиме?
1 ответ
Я узнал, что могу просто определить шаг, который запускает док-контейнер. Таким образом, я мог бы сначала выполнить действие проверки, а затем запустить базу данных:
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.
Это, в свою очередь, привело к тому, что я не мог получить доступ к контейнеру базы данных от каких-либо дальнейших действий. Эта проблема рассматривается здесь: доступ к контейнеру по имени хоста в действиях github из действия.