Skip to content

Run on changes of github action file (e.g. main.yml) #15 #54

Run on changes of github action file (e.g. main.yml) #15

Run on changes of github action file (e.g. main.yml) #15 #54

Workflow file for this run

name: Build /public and deploy to gh-pages with docker container
on:
push:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'
jobs:
changedfiles:
runs-on: ubuntu-latest
outputs:
ttl: ${{ steps.set-matrix.outputs.ttl }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v42
with:
files: |
**/*.ttl
**/*.yml
json: "true"
- name: Set matrix
id: set-matrix
run: echo "ttl=$(echo ${{ steps.changed-files.outputs.all_changed_files }} | grep '\.ttl$')" >> $GITHUB_OUTPUT
validate:
runs-on: ubuntu-latest
needs: changedfiles
# only run there are changed files
if: ${{needs.changedfiles.outputs.ttl != '[]'}}
strategy:
fail-fast: false # other validation jobs should continue checking even if one file is invalid
matrix:
file: ${{ fromJson(needs.changedfiles.outputs.ttl) }}
steps:
- uses: actions/checkout@v3
- name: echo changed files
run: echo "${{ matrix.file }}"
- name: get shape
run: curl https://raw.githubusercontent.com/skohub-io/shapes/main/skohub.shacl.ttl --output skohub.shacl.ttl
- name: make scripts directory
run: mkdir scripts
- name: get script
run: curl https://raw.githubusercontent.com/skohub-io/shapes/main/scripts/validate-skos --output scripts/validate-skos
- name: get violation query
run: curl https://raw.githubusercontent.com/skohub-io/shapes/main/scripts/checkForViolation.rq --output scripts/checkForViolation.rq
- name: Validate with script
run: bash ${GITHUB_WORKSPACE}/scripts/validate-skos -s skohub.shacl.ttl ${{ matrix.file }}
build:
runs-on: ubuntu-latest
needs: [changedfiles, validate]
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
- 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