.github/workflows/publish_v3.yml #84
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- development/v3.0.1 | |
repository_dispatch: | |
types: | |
- publish_v3_spec | |
workflow_dispatch: {} | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
container: python:3 | |
env: | |
PARSER_OUTPUT_DIR: "__parser_output" # temp dir for output from spec-parser | |
RDF_BASE_DIR: "" # change to "rdf" in new structure | |
MKDOCS_BASE_DIR: "" # change to "mkdocs" in new structure | |
MKDOCS_MODEL_YML: "mkdocs-files.yml" # contains list of model Markdown files | |
BASE_MKDOCS_YML: "mkdocs.yml" # initial MkDocs configuration | |
FULL_MKDOCS_YML: "__mkdocs-full.yml" # MkDocs configuration combined with model list | |
GIT_USER_NAME: "ci-bot" # for gh-pages commit | |
GIT_USER_EMAIL: "ci-bot@spdx.dev" # for gh-pages commit | |
steps: | |
- name: Checkout spdx-spec | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 | |
with: | |
ref: development/v3.0.1 | |
path: spdx-spec | |
fetch-depth: 0 # Because we will be pushing the gh-pages branch | |
- name: Checkout spdx-3-model | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 | |
with: | |
repository: spdx/spdx-3-model | |
ref: main # for v3.0.1-draft, checkout latest from main (development) | |
# Once 3.0.1 released, use the following ref to checkout from the release tag | |
# ref: 3.0.1 # for v3.0.1 final release | |
path: spdx-3-model | |
- name: Checkout spec-parser | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 | |
with: | |
repository: spdx/spec-parser | |
ref: main | |
path: spec-parser | |
- name: Install pre-requisites for spdx-spec | |
run: pip install -r spdx-spec/requirements.txt | |
- name: Install pre-requisites for spec-parser | |
run: pip install -r spec-parser/requirements.txt | |
- name: Build model files | |
run: python3 spec-parser/main.py spdx-3-model/model $PARSER_OUTPUT_DIR | |
- name: Create directories for model (MkDocs) and RDF files | |
run: | | |
mkdir spdx-spec/docs/rdf | |
mkdir spdx-spec/docs/model | |
- name: Copy JSON annotations | |
# Will be redirected from https://spdx.org/rdf/3.0.0/spdx-json-serialize-annotations.ttl | |
# and available at https://spdx.github.io/spdx-spec/v3.0/rdf/jsonld-annotations.ttl | |
run: | | |
cp spdx-spec/serialization/jsonld/annotations.ttl spdx-spec/docs/rdf/jsonld-annotations.ttl | |
cp spdx-spec/serialization/jsonld/annotations.ttl spdx-spec/docs/model/jsonld-annotations.ttl | |
- name: Copy JSON-LD context and RDFs | |
# Will be redirected from https://spdx.org/rdf/3.0.0/spdx-context.jsonld, spdx-model.ttl, etc. | |
# and available at https://spdx.github.io/spdx-spec/v3.0/model/spdx-context.jsonld | |
run: | | |
echo "=====================" | |
echo "Source: $PARSER_OUTPUT_DIR/$RDF_BASE_DIR" | |
echo "---------------------" | |
ls $PARSER_OUTPUT_DIR/$RDF_BASE_DIR | |
echo "=====================" | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-context.jsonld spdx-spec/docs/rdf/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.dot spdx-spec/docs/rdf/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.json-ld spdx-spec/docs/rdf/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.pretty-xml spdx-spec/docs/rdf/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.ttl spdx-spec/docs/rdf/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.xml spdx-spec/docs/rdf/ | |
cp spdx-spec/docs/rdf/spdx-model.json-ld spdx-spec/docs/rdf/spdx-model.jsonld | |
echo "=====================" | |
echo "Target (after copy): spdx-spec/docs/rdf" | |
echo "---------------------" | |
ls spdx-spec/docs/rdf | |
echo "=====================" | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-context.jsonld spdx-spec/docs/model/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.dot spdx-spec/docs/model/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.json-ld spdx-spec/docs/model/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.pretty-xml spdx-spec/docs/model/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.ttl spdx-spec/docs/model/ | |
cp $PARSER_OUTPUT_DIR/$RDF_BASE_DIR/spdx-model.xml spdx-spec/docs/model/ | |
cp spdx-spec/docs/model/spdx-model.json-ld spdx-spec/docs/model/spdx-model.jsonld | |
echo "=====================" | |
echo "Target (after copy): spdx-spec/docs/model" | |
echo "---------------------" | |
ls spdx-spec/docs/model | |
echo "=====================" | |
- name: Generate JSON schema -- OLD DIR STRUCTURE | |
# Will be redirected from https://spdx.org/schema/3.0.0/spdx-json-schema.json | |
# and available at https://spdx.github.io/spdx-spec/v3.0/model/schema.json | |
run: | | |
shacl2code generate \ | |
--input spdx-spec/docs/rdf/spdx-model.ttl \ | |
--input spdx-spec/docs/rdf/jsonld-annotations.ttl \ | |
--context-url spdx-spec/docs/rdf/spdx-context.jsonld https://spdx.org/rdf/3.0.1/spdx-context.jsonld \ | |
jsonschema \ | |
--output spdx-spec/docs/rdf/schema.json | |
cp spdx-spec/docs/rdf/schema.json spdx-spec/docs/model/schema.json | |
- name: Copy model files and file list for MkDocs | |
# Will be available at https://spdx.github.io/spdx-spec/v3.0/model/* | |
run: | | |
cp -R $PARSER_OUTPUT_DIR/$MKDOCS_BASE_DIR/* spdx-spec/docs/model | |
cp $PARSER_OUTPUT_DIR/$MKDOCS_MODEL_YML spdx-spec | |
- name: Set Git identity | |
working-directory: spdx-spec | |
run: git config user.name $GIT_USER_NAME; git config user.email $GIT_USER_EMAIL | |
- name: Sync gh-pages | |
working-directory: spdx-spec | |
run: git checkout gh-pages && git pull && git checkout development/v3.0.1 | |
- name: Build complete MkDocs configuration | |
working-directory: spdx-spec | |
run: | | |
echo "Build $FULL_MKDOCS_YML from $BASE_MKDOCS_YML and $MKDOCS_MODEL_YML" | |
sed -e "\|- model.*#.*__MODEL_PLACEHOLDER__.*|{ | |
r $MKDOCS_MODEL_YML | |
a\\ | |
d | |
}" "$BASE_MKDOCS_YML" > "$FULL_MKDOCS_YML" | |
sed -i "/__MODEL_PLACEHOLDER__/d" "$FULL_MKDOCS_YML" | |
echo "=====================" | |
echo "$FULL_MKDOCS_YML" | |
echo "---------------------" | |
cat "$FULL_MKDOCS_YML" | |
echo "[End of File]" | |
- name: Deploy and set aliases | |
working-directory: spdx-spec | |
run: | | |
mike delete --config-file "$FULL_MKDOCS_YML" --branch gh-pages --push --allow-empty v3.0 || true | |
mike delete --config-file "$FULL_MKDOCS_YML" --branch gh-pages --push --allow-empty v3.0.1-draft || true | |
mike deploy --update-aliase --config-file "$FULL_MKDOCS_YML" --branch gh-pages --push v3.0.1 v3.0.1-draft v3-draft v3.0-RC1 v3.0-RC2 v3.0 latest | |
mike set-default --config-file "$FULL_MKDOCS_YML" --branch gh-pages --push v3.0.1 | |
# Explanations of the above mike steps: | |
# 1) delete existing v3.0 alias/deployment, if exists | |
# 2) delete existing v3.0.1-draft alias/deployment, if exists | |
# 3) deploy v3.0.1, with aliases (v3.0.1-draft, v3-draft, v3.0-RC1, v3.0-RC2, v3.0 latest) | |
# 4) set default version to v3.0.1 | |
# A script for additional redirections will be run after this point | |
# See https://github.com/spdx/spdx-spec/issues/1069 |