From 879d9d9d22b02bada718b0616f12cd03953903f3 Mon Sep 17 00:00:00 2001 From: David Linke Date: Wed, 16 Aug 2023 16:36:38 +0200 Subject: [PATCH] Update workflows for 0.7.0 & new release workflow Includes template update for now optional version & modified date --- .github/workflows/ci-pr.yml | 4 +- .github/workflows/merge.yml | 101 ++++++++++++++++++++++++++++ .github/workflows/publish.yml | 51 +++++++++----- README.md | 20 ++++-- templates/README.md | 4 ++ templates/voc4cat_template_043.xlsx | Bin 96131 -> 96301 bytes 6 files changed, 156 insertions(+), 24 deletions(-) create mode 100644 .github/workflows/merge.yml diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml index b93d4ac..f7ff1d4 100644 --- a/.github/workflows/ci-pr.yml +++ b/.github/workflows/ci-pr.yml @@ -59,7 +59,7 @@ jobs: python -m pip install --upgrade pip setuptools wheel # install tagged version - python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@v0.6.2 + python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@v0.7.0 # python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@main # Example for installing from private repo: @@ -98,7 +98,7 @@ jobs: voc4cat transform --split --inplace --logfile outbox/voc4cat.log --outdir outbox_new_voc outbox/ merge_vocab --logfile outbox/voc4cat.log outbox_new_voc/ vocabularies/ # copy xlsx to outbox so that the xlsx file is part of the artifact - cp $(find inbox-excel-vocabs -name "*.xlsx") outbox/ + find inbox-excel-vocabs -name '*.xlsx' -exec cp {} -t outbox/ \; git status - name: Store artifacts diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml new file mode 100644 index 0000000..44f4df1 --- /dev/null +++ b/.github/workflows/merge.yml @@ -0,0 +1,101 @@ +# This action runs on merges to main. +# +# Workflow steps: +# - checkout gh-pages for updating +# - create joined vocabulary file in addition to split version +# - create excel-file from turtle +# - build docs +# - publish docs, vocabulary-turtle files and excel-file to gh-pages + +name: Build & Publish +on: + push: + branches: + - main + workflow_dispatch: + +env: + FORCE_COLOR: "1" # Make tool output pretty. + PIP_DISABLE_PIP_VERSION_CHECK: "1" + PIP_PROGRESS_BAR: "off" + LOGLEVEL: "DEBUG" + +jobs: + build: + name: Development build of vocabulary & documentation + permissions: + # Required for peaceiris/actions-gh-pages below + contents: write + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v3 + + - name: Checkout gh-pages branch to dir publish/ + uses: actions/checkout@v3 + with: + ref: gh-pages + path: publish + fetch-depth: 1 + + - uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + python -VV + python -m pip install --upgrade pip setuptools wheel + + # install tagged version + python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@v0.7.0 + # python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@main + + - name: Set dynamic environment variables. + run: | + echo "VOC4CAT_MODIFIED=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + # set first 8 chars of commit hash as version for "dev" + echo "VOC4CAT_VERSION=v_${GITHUB_SHA:0:8}" >> $GITHUB_ENV + + - name: Run voc4cat (publish joined & split SKOS/turtle) + run: | + voc4cat --version + mkdir -p publish/dev/ + # delete files xlsx and ttl produced in previous workflow runs + find publish/dev/ -type f \( -name "*.xlsx" -o -name "*.ttl" \) -delete + cp -r vocabularies/. publish/dev/ + # Build joined turtle + voc4cat transform --logfile publish/dev/voc4cat.log --join publish/dev/ + + - name: Run voc4cat (build HTML documentation) + run: | + voc4cat docs --force --logfile publish/dev/voc4cat.log publish/dev/ + + - name: Run voc4cat (build current Excel file) + run: | + voc4cat convert --logfile publish/dev/voc4cat.log --template templates/voc4cat_template_043.xlsx publish/dev/ + + - name: Deploy updated gh-pages content + # This replaces all prior content in gh-pages branch. But we have + # checked out the gh-pages branch above so that we keep all prior + # content and just re-publish the extended version. + # Pin third party action (v3.9.3) + uses: peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + with: + publish_branch: gh-pages + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./publish + force_orphan: true + + - name: Store publish dir (=pages) as artifact + # This step is not required and may be removed. + # It may be helpful for trouble shooting. + if: ${{ always() }} + uses: actions/upload-artifact@v3 + with: + name: voc4cat-pages-dev-content + path: publish/ + +# Lit: +# https://github.com/peaceiris/actions-gh-pages diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3cc41a1..b3b4012 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,6 +1,7 @@ -# This action runs when a release is created and on merges to main. +# This action runs when a release is created via tagging or via GitHub UI. # # Workflow steps: +# - checkout gh-pages for updating # - create joined vocabulary file in addition to split version # - create excel-file from turtle # - build docs @@ -9,21 +10,21 @@ name: Build & Publish on: push: - branches: - - main tags: - - v[0-9]+.[0-9]+.[0-9]+ - workflow_dispatch: + - 'v[0-9]+-[0-9]+-[0-9]+' + release: + types: [published] env: FORCE_COLOR: "1" # Make tool output pretty. PIP_DISABLE_PIP_VERSION_CHECK: "1" PIP_PROGRESS_BAR: "off" LOGLEVEL: "DEBUG" + VOC4CAT_VERSION: ${{github.ref_name}} # use release tag as version jobs: build: - name: Build vocabulary & documentation + name: Release vocabulary & documentation permissions: # Required for peaceiris/actions-gh-pages below contents: write @@ -32,6 +33,13 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Checkout gh-pages branch to dir publish/ + uses: actions/checkout@v3 + with: + ref: gh-pages + path: publish + fetch-depth: 1 + - uses: actions/setup-python@v4 with: python-version: '3.11' @@ -42,29 +50,42 @@ jobs: python -m pip install --upgrade pip setuptools wheel # install tagged version - python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@v0.6.2 + python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@v0.7.0 # python -m pip install git+https://github.com/nfdi4cat/voc4cat-tool.git@main + - name: Set dynamic environment variables. + run: | + echo "VOC4CAT_MODIFIED=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + - name: Run voc4cat (publish joined & split SKOS/turtle) run: | voc4cat --version - cp -r vocabularies/ publish/ + mkdir -p publish/latest/ + # delete files xlsx and ttl produced in previous workflow runs + find publish/latest/ -type f \( -name "*.xlsx" -o -name "*.ttl" \) -delete + cp -r vocabularies/. publish/latest/ # Build joined turtle - voc4cat transform --logfile publish/voc4cat.log --join publish/ + voc4cat transform --logfile publish/latest/voc4cat.log --join publish/latest/ - name: Run voc4cat (build HTML documentation) run: | - voc4cat docs --force --logfile publish/voc4cat.log publish/ + voc4cat docs --force --logfile publish/latest/voc4cat.log publish/latest/ - name: Run voc4cat (build current Excel file) run: | - voc4cat convert --logfile publish/voc4cat.log --template templates/voc4cat_template_043.xlsx publish/ - ls -l publish/ || echo "publish directory does not exist." + voc4cat convert --logfile publish/latest/voc4cat.log --template templates/voc4cat_template_043.xlsx publish/latest/ + + - name: Copy release to release-name directory + run: | + mkdir -p publish/${{ github.ref_name }} + cp -r publish/latest/. publish/${{ github.ref_name }}/ - - name: Deploy documentation & SKOS/turtle & xlsx + - name: Deploy updated gh-pages content + # This replaces all prior content in gh-pages branch. But we have + # checked out the gh-pages branch above so that we keep all prior + # content and just re-publish the extended version. # Pin third party action (v3.9.3) uses: peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} with: publish_branch: gh-pages github_token: ${{ secrets.GITHUB_TOKEN }} @@ -77,7 +98,7 @@ jobs: if: ${{ always() }} uses: actions/upload-artifact@v3 with: - name: voc4cat-pages-content + name: voc4cat-pages-release-${{ github.ref_name }} path: publish/ # Lit: diff --git a/README.md b/README.md index 813b14a..bb80f4e 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,17 @@ To validate IRIs the configuration supports ID-ranges (similar to [OBO idrange]( The idea is that every author gets their own range of IDs to consume. This allows independent work and avoids using the same ID repeatedly. -In addition, HTML-documentation is created automatically and published on GitHub-pages. +The voc4cat-template implements automatic storage of different versions of the vocabularies in gh-pages: + + - `dev` - Directory with artifacts built from the most recent commit to the main branch. + - `latest` - Directory with all files built for the latest release. + - `vYYYY-MM-DD` (for example `v2023-08-16`) - Directory with all files built for the release with this tag. + +For all versions, multiple files are stored (see https://github.com/nfdi4cat/voc4cat-template/issues/11#issuecomment-1680592185 for details). The correct version string is automatically inserted to all build artifacts. For `dev`, the first eight characters of the commit hash are used as version (for example `v_fadfa5f9`). + +- Taking into account the above scheme, the url for the artifacts for the `dev` version in gh-pages is `https://{gh-org-name}.github.io/{repository-name}/dev/{vocabulary-name}/` +- For example, in repository `nfdi4cat/voc4cat-template` the vocabulary `vocab_example` is documented at [https://nfdi4cat.github.io/voc4cat-template/dev/vocab_example/](https://nfdi4cat.github.io/voc4cat-template/dev/vocab_example/) -- The general url is `https://{gh-org-name}.github.io/{repository-name}/{vocabulary-name}/` -- In repository `nfdi4cat/voc4cat-template` the vocabulary `vocab_example` is documented at [https://nfdi4cat.github.io/voc4cat-template/vocab_example/](https://nfdi4cat.github.io/voc4cat-template/vocab_example/) - ### Creating vocabularies for catalysis or catalytic reaction engineering Please strongly consider contributing to [voc4cat](https://github.com/nfdi4cat/voc4cat) instead of creating your own. @@ -43,9 +49,9 @@ To contribute new concepts or collections or change existing ones, you may eithe Here are the steps for submitting updates in Excel. - Get the Excel/xlsx-vocabulary file - - The latest version of the vocabulary is always available via github-pages. - - The general url is `https://{gh-org-name}.github.io/{repository-name}/{vocabulary-name}.xlsx` - - For example in nfdi4cat/voc4cat-template the vocabulary `vocab_example` can be downloaded from [https://nfdi4cat.github.io/voc4cat-template/vocab_example.xlsx](https://nfdi4cat.github.io/voc4cat-template/vocab_example.xlsx) + - The most recent version of the vocabulary is always available via github-pages. + - The general url is `https://{gh-org-name}.github.io/{repository-name}/dev/{vocabulary-name}.xlsx` + - For example in nfdi4cat/voc4cat-template the most recent vocabulary `vocab_example` can be downloaded from [https://nfdi4cat.github.io/voc4cat-template/dev/vocab_example.xlsx](https://nfdi4cat.github.io/voc4cat-template/dev/vocab_example.xlsx) - For setting up a new vocabulary, use the xlsx-file from the templates-folder. - Make changes to the Excel file - Add the xlsx file to your clone of the repository into the folder `inbox-excel-vocabs` diff --git a/templates/README.md b/templates/README.md index 088f50c..468636e 100644 --- a/templates/README.md +++ b/templates/README.md @@ -4,6 +4,10 @@ The templates here match structure-wise with the templates in [Voc4Cat-tool](htt ### Version 0.4.3 +#### Revision 2023-08b + +- Cells version and modified date in concept scheme sheet are now optional. Updated notes accordingly. + #### Revision 2023-08a - Changed included example data to be consistent with improved validation. diff --git a/templates/voc4cat_template_043.xlsx b/templates/voc4cat_template_043.xlsx index 6e66b5b117df698fe7db520c557b40b5f86712ff..1b1a52a4b2d28c4df5f2046e1d734b2848fb1077 100644 GIT binary patch delta 21161 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≫+bkkbeK{?ut!}JtPIm0`$H`%TT0 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 blyTQ|@p48xCabLJ;pL2KY-@6X1t$XlGbrqT delta 20818 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 wU{JhEnch&&s3r~0tH44vor!?~7$Hc2Z~DP