This is a example repository to show how you can publish your SKOS vocabulary using GitHub infrastructure.
Every time a push is made to the repository a GitHub-workflow-action is triggered to publish the most recent vocabulary to the gh-pages
-branch, which is used by GitHub pages.
It spins up a Docker-Container made out the SkoHub-Vocabs-tool. You can have a look at the Dockerfile at this branch of skohub-vocabs.
If you want to reuse this repo and have your vocabulary automatically pushed und published via GitHub-Pages, follow these steps (also explained in these slides including screenshots):
-
Fork this repo
-
go to the
.github/workflows/main.yml
-file, make sure to replace the following lines:
run: git clone https://github.com/skohub-io/skohub-docker-vocabs.git data/
⬅ adjust the path to point to YOUR repositoryrun: echo "BASEURL=/skohub-docker-vocabs" > .env
⬅ theBASEURL
has to be set to YOUR repository name (only necessary if you changed the repository name; if you just forked and did not rename, leave it as it is)
-
in your repository settings go to the "GitHub Pages" setting and select
gh-pages
as the branch your site is being built from. If it is not available yet, you might have to push something to your repo, so the GitHub-Action gets triggered or you can trigger it manually with going to "Actions" in the menubar, then select the workflow "Build /public and deploy..." and click "Run workflow". This way you can trigger the workflow automatically. -
after that your vocabulary will be automatically published every time a push to this repo is made.
-
Any issues? Please open up a issue here
name: Build /public and delpoy to gh-pages with docker container
on:
push:
branches:
- master
- main
- gh-pages
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
with:
persist-credentials: false
- name: remove public and data-dir if already exists
run: rm -rf public data
- run: mkdir public
- run: chmod -R 777 public # user in container is node which won't have write access to public
- run: mkdir data
- run: chmod -R 777 data # user in container is node which won't have write access to public
- run: git clone https://github.com/skohub-io/skohub-docker-vocabs.git data/ # <-- add link to your repo here
- name: make .env file
run: echo "BASEURL=/skohub-docker-vocabs" > .env
# below add link to your repo after -e GATSBY_REPOSITORY_URL=...
- name: build public dir with docker image
run: >
docker run
-v $(pwd)/public:/app/public
-v $(pwd)/data:/app/data
-v $(pwd)/.env:/app/.env
-e GATSBY_RESPOSITORY_URL=https://github.com/skohub-io/skohub-docker-vocabs.git
skohub/skohub-vocabs-docker:latest
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
- During the build I get an error saying
The requested URL returned error: 403
- You maybe need to update permissions like described here: peaceiris/actions-gh-pages#744
- Go to
Settings
>Actions
>General
>Workflow permissions
and toggle the Read and write permissions
09.02.2021:
- In an earlier version, there was the .env variable
PATH_PREFIX
set to point to the repository the vocabulary is hosted at. To align with rest of code, this was changed toBASEURL
. - The docker image now also support i18n