Skip to content

.github/workflows/publish_v3.yml #85

.github/workflows/publish_v3.yml

.github/workflows/publish_v3.yml #85

Workflow file for this run

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: "bact" # for gh-pages commit
GIT_USER_EMAIL: "arthit@gmail.com" # 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