diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..dc9c619 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,66 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +permissions: + contents: read + pages: write + id-token: write + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: "pip" + + - name: Install system dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -y \ + texlive-base texlive-latex-base texlive-latex-extra \ + texlive-fonts-recommended texlive-fonts-extra \ + pandoc graphviz + + - name: Install Python dependencies + run: pip install -r requirements.txt + - name: make deploy executable + run: chmod +x deploy.sh + + - name: Run doorstop sync and publish + run: bash deploy.sh + + - name: make sync_tex executable + run: chmod +x sync_tex.sh + + - name: Build Beamer PDF + run: bash sync_tex.sh ./dist beamer + + - name: Upload Pages artifact + if: github.ref == 'refs/heads/main' && github.event_name == 'push' + uses: actions/upload-pages-artifact@v3 + with: + path: ./dist + + deploy: + needs: build + if: github.ref == 'refs/heads/main' && github.event_name == 'push' + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ec0095a..0000000 --- a/.travis.yml +++ /dev/null @@ -1,41 +0,0 @@ -dist: focal - -language: python - -cache: pip - -python: - - "3.7" - -before_install: - - sudo apt-get -qq update - - sudo apt-get install -y texlive-base texlive-latex-base texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra - - sudo apt-get install pandoc - - sudo apt-get install graphviz - -install: - - pip install pipenv --upgrade-strategy=only-if-needed - - pipenv install --dev - -script: - - bash deploy.sh - #https://blog.travis-ci.com/2021-03-08-latex-ci - - bash sync_tex.sh ./dist beamer - -# Here is the magic part, https://slashgear.github.io/how-to-deploy-on-github-pages-with-travis-ci/ -deploy: - # Use Github pages deploy process - provider: pages - # Keep builded pages - skip-cleanup: true - # Directory where your generated files are located - local_dir: dist - # Github security/auth token - github-token: $github_token - # Incremental commit to keep old build/files from previous deployments - keep-history: true - # Git branch on which it should deploy (master, gh-pages, foo...) - target_branch: gh-pages - on: - # Which branch on commit/push will trigger deployment - branch: main diff --git a/MakeBeamer b/MakeBeamer index 3e42415..5cf3373 100644 --- a/MakeBeamer +++ b/MakeBeamer @@ -1,7 +1,11 @@ #via http://stackoverflow.com/a/11030209 +# Converts doorstop-published HTML (dist/documents/*.html) into LaTeX Beamer +# slides (dist/*_beamer.tex) using pandoc. The master beamer.tex in dist/ +# \input{s} those generated files. TXTDIR=dist -HTMLS=$(wildcard dist/*.html) -MDS=$(patsubst %.html,%_beamer.tex,$(HTMLS)) +DOCDIR=dist/documents +HTMLS=$(wildcard $(DOCDIR)/*.html) +MDS=$(patsubst $(DOCDIR)/%.html,$(TXTDIR)/%_beamer.tex,$(HTMLS)) #$(patsubst pattern,replacement,text) #Finds whitespace-separated words in text that match pattern and replaces them with replacement. @@ -10,10 +14,7 @@ MDS=$(patsubst %.html,%_beamer.tex,$(HTMLS)) all : $(MDS) -#$(TXTDIR) : -# mkdir $(TXTDIR) - -$(TXTDIR)/%_beamer.tex : $(TXTDIR)/%.html $(TXTDIR) +$(TXTDIR)/%_beamer.tex : $(DOCDIR)/%.html pandoc -t beamer -f html+tex_math_dollars+tex_math_single_backslash $< -o $@ #preserves math,see: http://stackoverflow.com/questions/11338049/how-to-convert-html-with-mathjax-into-latex-using-pandoc#11461355 diff --git a/MakeFile b/MakeFile index f59f49d..e336fa6 100644 --- a/MakeFile +++ b/MakeFile @@ -1,14 +1,7 @@ -#via http://stackoverflow.com/a/11030209 -TXTDIR=dist -HTMLS=$(wildcard dist/*.html) -MDS=$(patsubst %.html,%.markdown, $(HTMLS)) +# MakeFile - previously used to convert doorstop-generated HTML to Markdown +# via pandoc. No longer needed: doorstop >= 3.1 can publish Markdown directly +# with `doorstop publish all ./dist -m`. Kept as a no-op placeholder. .PHONY : all -all : $(MDS) - -#$(TXTDIR) : -# mkdir $(TXTDIR) - -$(TXTDIR)/%.markdown : $(TXTDIR)/%.html $(TXTDIR) - pandoc -f html -t markdown -s $< -o $@ +all : diff --git a/MakeLinksGitHubFriendly.py b/MakeLinksGitHubFriendly.py index 8bcea52..4685428 100644 --- a/MakeLinksGitHubFriendly.py +++ b/MakeLinksGitHubFriendly.py @@ -1,32 +1,6 @@ -#python MakeLinksGitHubFriendly.py - -import glob -import os - -md_files=glob.glob("dist/*.markdown") -for markd_file in md_files: - with open(markd_file+".out", "wt") as fout: - with open(markd_file, "rt") as fin: - for line in fin: - if "#" in line: - split_into_lines=line.split("[") - new_line='' - for i,s2 in enumerate(split_into_lines): - #print(s2) - if "#" in s2: - split_links=s2.split("#") - new_link=split_links[0]+"#1-"+split_links[1].lower().replace('.', '').replace(' ','').replace(")","-) ")#+'-' - if i >0: - new_line+=" ["+new_link - else: - new_line = s2 - #print(new_line) - line=new_line - #else: - #print(line) - fout.write(line) - fout.close() - fin.close() - os.rename(markd_file+".out", markd_file) - +# MakeLinksGitHubFriendly.py - previously post-processed pandoc-generated +# Markdown to rewrite hash anchors so relative links worked on GitHub. +# No longer needed: doorstop >= 3.1 publishes Markdown directly +# (`doorstop publish all ./dist -m`) with anchors already compatible with +# GitHub rendering. This script is retained as a no-op for reference. diff --git a/README.md b/README.md index f47f7ad..5430640 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![DOI](https://zenodo.org/badge/68635117.svg)](https://zenodo.org/badge/latestdoi/68635117) -[![Build Status](https://travis-ci.com/douglase/doorstop_requirements_template.svg?branch=main)](https://travis-ci.com/douglase/doorstop_requirements_template) +[![CI](https://github.com/douglase/doorstop_requirements_template/actions/workflows/ci.yml/badge.svg)](https://github.com/douglase/doorstop_requirements_template/actions/workflows/ci.yml) # doorstop Requirements Template @@ -9,29 +9,23 @@ ## Features: * version controlled requirements tracking * Generates a graphviz diagram (see example at bottom of page) showing relations between requirements -* Uses pandoc to translate doorstop generated html pages into github friendly markdown with links that work on github +* Uses doorstop's native Markdown publisher to generate GitHub-renderable markdown with working relative links ## Requirements * Bash -* doorstop (Browning and Adams, 2014, +* doorstop >= 3.1 (Browning and Adams, 2014, * http://dx.doi.org/10.4236/jsea.2014.73020): * https://doorstop.readthedocs.io/en/latest/#setup -* pandoc: http://pandoc.org/installing.html +* pandoc: http://pandoc.org/installing.html (required only for Beamer/LaTeX PDF output) * graphviz: https://pypi.python.org/pypi/graphviz * pdflatex (optional, for Beamer slide output) ## Installation -### Note: +Install Python dependencies: -By default, doorstop only prints one level of links, so if a level is -skipped, it won't be shown. @douglase's branch adds a setting which -expands published links to sublevels. To install this branch which has been tested with the template: - - git clone git@github.com:douglase/doorstop.git - cd doorstop - python setup.py develop + pip install -r requirements.txt ### macOS: @@ -40,7 +34,7 @@ Example setup from command line in OS-X/macOS (with [homebrew](http://brew.sh/) brew install pandoc brew install graphviz git clone https://github.com/douglase/doorstop_requirements_template - pip install graphviz + pip install -r requirements.txt ### Linux @@ -48,10 +42,19 @@ In Ubuntu or other Debian variant: sudo apt-get install graphviz sudo apt-get install pandoc - pip install graphviz + pip install -r requirements.txt Optional for editing in a spreadsheet: `sudo apt-get install libreoffice` Optional for generating PDF output: `sudo apt-get install texlive-latex-extra` + +> **Note on `PUBLISH_GRANDCHILD_LINKS`:** The previous installation instructions +> referenced a custom `douglase/doorstop` fork that added a +> `PUBLISH_GRANDCHILD_LINKS` setting to display links spanning two or more +> levels (e.g., L1 → L3 directly when an intermediate level is skipped). +> Upstream doorstop v3.1 does not include this setting; it supports +> `PUBLISH_CHILD_LINKS` (direct children) which covers the current template +> data. If you need cross-level link display in future, consider opening a PR +> against [doorstop-dev/doorstop](https://github.com/doorstop-dev/doorstop). ## Usage To run the template (which generates a sample subset of post-facto requirements imagined for the PICTURE sounding rocket to image a debris disk [Chakrabarti et al. 2016](http://adsabs.harvard.edu/abs/2016JAI.....540004C), [Douglas et al 2016](http://adsabs.harvard.edu/abs/2016arXiv160700277D)): @@ -69,21 +72,21 @@ The template includes three levels which were created by the following commands: * make and save edits to the .csv file related to the requirement of interest (i.e. sci_L2.csv) * _this step can be done repeatedly and by users without the dependencies installed_ (by directly editing .csv files on github, for example) * run _./doorstop_sync.sh_ -* commit and push changes to view markdown [output in dist/ directory](dist/index.markdown) +* commit and push changes to view markdown [output in dist/ directory](dist/L1.md) -[Linked Requirements Documents and Traceability matrix](dist/index.markdown) +[Linked Requirements Documents](dist/L1.md) ## Outputs of the template ### Published Documents: -- [L1](dist/L1.markdown) -- [L2](dist/L2.markdown) -- [L3](dist/L3.markdown) +- [L1](dist/L1.md) +- [L2](dist/L2.md) +- [L3](dist/L3.md) ## Most recently committed flowchart: @@ -92,13 +95,13 @@ The template includes three levels which were created by the following commands: ## Continuous Integration -This repository has been setup to publish to Travis CI, see [CI setup guide](guides/CI-setup.md) and published to github pages, for the latest PDF, see: [blob/gh-pages/beamer.pdf](../gh-pages/beamer.pdf) +This repository uses GitHub Actions for CI/CD, see [CI setup guide](guides/CI-setup.md). On each push to `main`, the workflow regenerates all outputs and deploys them to the `gh-pages` branch. For the latest PDF, see: [blob/gh-pages/beamer.pdf](../gh-pages/beamer.pdf) -## Flow of the scripts used to generate flowchart and human readible markdown files: +## Flow of the scripts used to generate flowchart and human readable markdown files: ``` - ./sync_doorstop + ./doorstop_sync.sh +---------------------------------------------------------------------------------------------+ | +-------------------------+ | | |INPUT | | @@ -120,30 +123,24 @@ This repository has been setup to publish to Travis CI, see [CI setup guide](gui | | parses yaml files, resolves links and warns if unconnected requirements. | | | | ++---------------------------------------------------------------------------+ | | | | | | -| |doorstop publish all ./dist | | +| |doorstop publish all ./dist -m | | | | | | | +----v--------------------------------------------------------------------+ | | -| | generates html document for each input document with hyperlinks. | | | +| | publishes Markdown (dist/*.md) with parent/child links and GitHub- | | | +| | compatible anchors. Also publishes HTML to dist/documents/ for Beamer. | | | | +-+-----------------------------------------------------------------------+ | | | | | | -| | pandoc via MakeFile | | +| | pandoc via MakeBeamer (HTML -> Beamer .tex, for PDF output only) | | | | | | | +-+------------------------------------------------------------------------------+ | | -| | converts html to markdown that can be parsed by github. Can also export LaTeX | | | -| | or MSWord .docx. (http://pandoc.org). | | | +| | converts HTML to LaTeX Beamer slides. (http://pandoc.org). | | | | ++-------------------------------------------------------------------------------+ | | | | | | -| |sed and python | | +| |doorstop python API and Graphviz (via graphviz python module) | | | | | | -| +-+--------------------------+ | | -| |hack to make relative links | doorstop python api and | | -| |work-on-github.-------------+ Graphviz (via graphviz python module)| | -| +----------------------------| | | -| | | -| | | | +-------------------------------------------------------------------------------------+ | | |draws connections between each linked requirement and minimizes energy of network || | -| |and exports requirements network asa png file. || | +| |and exports requirements network as a png file. || | | +-------------------------------------------------------------------------------------+ | | | | made using http://asciiflow.com | diff --git a/deploy.sh b/deploy.sh index 888969f..1cb0468 100644 --- a/deploy.sh +++ b/deploy.sh @@ -2,30 +2,20 @@ ORIGINAL_WD=$(pwd) -# download and install doorstop - -git clone --branch develop https://github.com/douglase/doorstop doorstop_lib - -cd doorstop_lib - -python setup.py install - -cd ${ORIGINAL_WD} - -#cleanup, otherwise breaks with multiple -rm -rf doorstop_lib +# install Python dependencies (doorstop and graphviz python bindings) +pip install -r requirements.txt #copy the gitinfo2 web-hook #make executable -chmod g+x ./example_hook.sh -./example_hook.sh +chmod g+x ./guides/example_hook.sh +./guides/example_hook.sh pwd ./doorstop_sync.sh -mkdir .git +mkdir -p .git # get git parameters: # Copyright 2015 Brent Longborough diff --git a/dist/L1.markdown b/dist/L1.markdown deleted file mode 100644 index bcce264..0000000 --- a/dist/L1.markdown +++ /dev/null @@ -1,20 +0,0 @@ -User requirement 1 Mission-01 -============================= - -Mission level requirement A - -*Child links:* [SCI-03](L2.markdown#1-sci-03-) - -Constraints 1 Mission-02 -======================== - -Mission level requirement B - -*Child links:* [SCI-01](L2.markdown#1-sci-01-) , [SCI-02](L2.markdown#1-sci-02-) - -User requirement 1 Mission-03 -============================= - -Mission level requirement C - -*Child links:* [SCI-03](L2.markdown#1-sci-03-) diff --git a/dist/L1.md b/dist/L1.md new file mode 100644 index 0000000..4e45859 --- /dev/null +++ b/dist/L1.md @@ -0,0 +1,24 @@ +### Table of Contents + + * [1 Mission-01](#1-mission-01-mission-01) + * [1 Mission-02](#1-mission-02-mission-02) + * [1 Mission-03](#1-mission-03-mission-03) + +# 1 Mission-01 {#Mission-01} + +Mission level requirement A + +*Child links:* [SCI-03](L2.md#1-sci-03-sci-03) + +# 1 Mission-02 {#Mission-02} + +Mission level requirement B + +*Child links:* [SCI-01](L2.md#1-sci-01-sci-01), [SCI-02](L2.md#1-sci-02-sci-02) + +# 1 Mission-03 {#Mission-03} + +Mission level requirement C + +*Child links:* [SCI-03](L2.md#1-sci-03-sci-03) + diff --git a/dist/L2.markdown b/dist/L2.markdown deleted file mode 100644 index 1ec61cb..0000000 --- a/dist/L2.markdown +++ /dev/null @@ -1,27 +0,0 @@ -Science requirement I 1 SCI-01 -============================== - -Mission shall be able to perform example measurement one - -*Parent links:* [Mission-02](L1.markdown#1-mission-02-) - -*Child links:* [Tech-1](L3.markdown#1-tech-1-) - -Science requirement II 1 SCI-02 -=============================== - -Mission shall be able to perform example measurement two - -*Parent links:* [Mission-02](L1.markdown#1-mission-02-) - -*Child links:* [Tech-2](L3.markdown#1-tech-2-) , [Tech-3](L3.markdown#1-tech-3-) - -Science requirement III 1 SCI-03 -================================ - -Mission shall be able to perform example measurement three - -*Parent links:* [Mission-01](L1.markdown#1-mission-01-) , - [Mission-03](L1.markdown#1-mission-03-) - -*Child links:* [Tech-2](L3.markdown#1-tech-2-) diff --git a/dist/L2.md b/dist/L2.md new file mode 100644 index 0000000..5c4613f --- /dev/null +++ b/dist/L2.md @@ -0,0 +1,30 @@ +### Table of Contents + + * [1 SCI-01](#1-sci-01-sci-01) + * [1 SCI-02](#1-sci-02-sci-02) + * [1 SCI-03](#1-sci-03-sci-03) + +# 1 SCI-01 {#SCI-01} + +Mission shall be able to perform example measurement one + +*Parent links:* [Mission-02](L1.md#1-mission-02-mission-02) + +*Child links:* [Tech-1](L3.md#1-tech-1-tech-1) + +# 1 SCI-02 {#SCI-02} + +Mission shall be able to perform example measurement two + +*Parent links:* [Mission-02](L1.md#1-mission-02-mission-02) + +*Child links:* [Tech-2](L3.md#1-tech-2-tech-2), [Tech-3](L3.md#1-tech-3-tech-3) + +# 1 SCI-03 {#SCI-03} + +Mission shall be able to perform example measurement three + +*Parent links:* [Mission-01](L1.md#1-mission-01-mission-01), [Mission-03](L1.md#1-mission-03-mission-03) + +*Child links:* [Tech-2](L3.md#1-tech-2-tech-2) + diff --git a/dist/L3.markdown b/dist/L3.markdown deleted file mode 100644 index 87946eb..0000000 --- a/dist/L3.markdown +++ /dev/null @@ -1,20 +0,0 @@ -Instrument Alpha 1 Tech-1 -========================= - -Technical instrument requirement Alpha - -*Parent links:* [SCI-01](L2.markdown#1-sci-01-) - -Instrument Beta 1 Tech-2 -======================== - -Technical instrument requirement Beta - -*Parent links:* [SCI-02](L2.markdown#1-sci-02-) , [SCI-03](L2.markdown#1-sci-03-) - -Instrument Gamma 1 Tech-3 -========================= - -Technical instrument requirement Gamma - -*Parent links:* [SCI-02](L2.markdown#1-sci-02-) diff --git a/dist/L3.md b/dist/L3.md new file mode 100644 index 0000000..13d8ca8 --- /dev/null +++ b/dist/L3.md @@ -0,0 +1,24 @@ +### Table of Contents + + * [1 Tech-1](#1-tech-1-tech-1) + * [1 Tech-2](#1-tech-2-tech-2) + * [1 Tech-3](#1-tech-3-tech-3) + +# 1 Tech-1 {#Tech-1} + +Technical instrument requirement Alpha + +*Parent links:* [SCI-01](L2.md#1-sci-01-sci-01) + +# 1 Tech-2 {#Tech-2} + +Technical instrument requirement Beta + +*Parent links:* [SCI-02](L2.md#1-sci-02-sci-02), [SCI-03](L2.md#1-sci-03-sci-03) + +# 1 Tech-3 {#Tech-3} + +Technical instrument requirement Gamma + +*Parent links:* [SCI-02](L2.md#1-sci-02-sci-02) + diff --git a/dist/index.markdown b/dist/index.markdown deleted file mode 100644 index 6d6e0a2..0000000 --- a/dist/index.markdown +++ /dev/null @@ -1,27 +0,0 @@ -### Tree Structure: - - L1 - │ - └ ─ L2 - │ - └ ─ L3 - ------------------------------------------------------------------------- - -### Published Documents: - -- [L3](L3.markdown) -- [L2](L2.markdown) -- [L1](L1.markdown) - ------------------------------------------------------------------------- - -### Item Traceability: - - [L1](L1.markdown) [L2](L2.markdown) [L3](L3.markdown) - ---------------------------------- -------------------------- -------------------------- - [Mission-01](L1.markdown#1-mission-01-) [SCI-03](L2.markdown#1-sci-03-) [Tech-2](L3.markdown#1-tech-2-) - [Mission-02](L1.markdown#1-mission-02-) [SCI-01](L2.markdown#1-sci-01-) [Tech-1](L3.markdown#1-tech-1-) - [Mission-02](L1.markdown#1-mission-02-) [SCI-02](L2.markdown#1-sci-02-) [Tech-2](L3.markdown#1-tech-2-) - [Mission-02](L1.markdown#1-mission-02-) [SCI-02](L2.markdown#1-sci-02-) [Tech-3](L3.markdown#1-tech-3-) - [Mission-03](L1.markdown#1-mission-03-) [SCI-03](L2.markdown#1-sci-03-) [Tech-2](L3.markdown#1-tech-2-) diff --git a/doorstop_sync.sh b/doorstop_sync.sh index 9ecd18e..878c529 100755 --- a/doorstop_sync.sh +++ b/doorstop_sync.sh @@ -2,45 +2,22 @@ #this should all probably be a makefile -#run in a python 3 environment with doorstop, e.g. source activate py3_5 +#run in a python 3 environment with doorstop installed (pip install -r requirements.txt) doorstop import mission_L1.csv L1 doorstop import sci_L2.csv L2 doorstop import tech_L3.csv L3 doorstop -#publish as html +#publish as HTML (used by Beamer/LaTeX workflow, output lands in dist/documents/) doorstop publish all ./dist -#doorstop publish all ./markdown -m - -#call pandoc to convert html to markdown -make -f MakeFile - - -if [[ "$OSTYPE" == "darwin"* ]]; then - #(https://stackoverflow.com/a/8597411) - # Mac OSX - #clean up the titles of the published requirements by remove everything between {# and } - sed -i '' -e 's/{.*}//' dist/*.markdown - - #change published links to point to markdown files: - sed -i '' -e 's/.html/.markdown/g' dist/*.markdown -elif [[ "$OSTYPE" == "freebsd"* ]]; then - # assuming FreeBSD is not running GNU sed - sed -i '' -e 's/{.*}//' dist/*.markdown - sed -i '' -e 's/.html/.markdown/g' dist/*.markdown -else - #run GNU sed in place commands: - sed -i -e 's/{.*}//' dist/*.markdown - sed -i -e 's/.html/.markdown/g' dist/*.markdown -fi +#publish as Markdown (GitHub-renderable, output lands in dist/*.md) +doorstop publish all ./dist -m python RunGraphviz.py -python MakeLinksGitHubFriendly.py - -#to make latex beamer slides, uncomment next three lines: +#to make latex beamer slides, convert HTML to Beamer .tex files and compile: make -f MakeBeamer cd dist pdflatex beamer.tex diff --git a/guides/CI-setup.md b/guides/CI-setup.md index 5a7aeae..2bd5d0c 100644 --- a/guides/CI-setup.md +++ b/guides/CI-setup.md @@ -3,17 +3,19 @@ ### Intro -Continuous integration tools such as Travis CI, allow real-time compilation of the final output PDF without local installation of dependencies. +Continuous integration tools such as GitHub Actions allow real-time compilation of the final output PDF and automatic deployment to GitHub Pages, without local installation of dependencies. -[.travis.yml](../.travis.yml) and [requirements.txt](requirements.txt) defines the system for compilation and lists dependencies and calls [deploy.sh](../deploy.sh), which installs the preferred version of the doorstop library and runs _doorstop_sync.sh_ which updates the datebase and generates LaTeX and Markdown outputs them to a new branch called gh-pages, which you can configure to publish publically or not in your repository settings. +[`.github/workflows/ci.yml`](../.github/workflows/ci.yml) and [`requirements.txt`](../requirements.txt) define the CI environment. The workflow installs system packages (texlive, pandoc, graphviz) and Python dependencies, then calls [`deploy.sh`](../deploy.sh), which runs `doorstop_sync.sh` to update the database and generate LaTeX and Markdown outputs. On pushes to `main`, the workflow deploys the `dist/` directory to GitHub Pages using the official [actions/deploy-pages](https://github.com/actions/deploy-pages) action. -### setup for Travis CI on new copy of the template +### Setup for GitHub Actions on a new copy of the template -- create Travis CI account by configuring app: https://github.com/apps/travis-ci -- link your requirements repository to account -- add [github personal access token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token), named `github_token` to repo setup on travis CI as shown in screenshot below +1. Fork or copy this repository to your GitHub account. +2. Go to **Settings → Pages** and set the **Source** to **GitHub Actions** (not "Deploy from a branch"). This is required for the official `actions/deploy-pages` deployment model. +3. Push a commit to `main` to trigger the first CI run. The workflow will build the PDF and deploy the `dist/` directory to GitHub Pages. +No separate CI service account, personal access token, or extra `GITHUB_TOKEN` permissions are required — the workflow uses the built-in `id-token: write` permission granted in the workflow file. -![image](https://user-images.githubusercontent.com/1025951/113973312-f5664e80-97f0-11eb-8e14-45d2498cafb6.png) - -For [security](https://blog.travis-ci.com/2017-05-08-security-advisory), I created a new "machine" user , made it a collaborator on the repo, and used the machine user's token on Travis instead of my primary user's token. this isn't required. +> **Migrating from Travis CI:** If you previously used `.travis.yml` with a +> `github_token` secret, that configuration has been replaced by the GitHub +> Actions workflow. The Travis CI integration can be safely disabled in your +> Travis account settings. diff --git a/reqs/L1/Mission-01.yml b/reqs/L1/Mission-01.yml index a3f0ae2..2616b4f 100644 --- a/reqs/L1/Mission-01.yml +++ b/reqs/L1/Mission-01.yml @@ -1,14 +1,15 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: [] mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: 4df33868b6317d02b557a7bd48124bab -short name: User requirement +reviewed: YyheTsRlb396NCXis3mtNkKvL1Dp5XHU091K8_Sghws= +short name: 'User requirement ' text: | Mission level requirement A verification plan: '' diff --git a/reqs/L1/Mission-02.yml b/reqs/L1/Mission-02.yml index 663ca73..a390ea7 100644 --- a/reqs/L1/Mission-02.yml +++ b/reqs/L1/Mission-02.yml @@ -1,13 +1,14 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: [] mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: 79070034b1a1744bace885529089f2cc +reviewed: UM9hXz3Qj4zdH0dVOnQzt93F7OpwBizsU8z1VkNNjvw= short name: Constraints text: | Mission level requirement B diff --git a/reqs/L1/Mission-03.yml b/reqs/L1/Mission-03.yml index af99bcf..b9414eb 100644 --- a/reqs/L1/Mission-03.yml +++ b/reqs/L1/Mission-03.yml @@ -1,14 +1,15 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: [] mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: 0d6c52fe65c60e9e6a48c6c1b189a3e7 -short name: User requirement +reviewed: aZpVUIP5OVikRMasTGhZ85s-6Sg4eL0ibVLsK2mNzqQ= +short name: 'User requirement ' text: | Mission level requirement C verification plan: '' diff --git a/reqs/L2/SCI-01.yml b/reqs/L2/SCI-01.yml index 5f6605f..310bfc0 100644 --- a/reqs/L2/SCI-01.yml +++ b/reqs/L2/SCI-01.yml @@ -1,14 +1,15 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: -- Mission-02: 79070034b1a1744bace885529089f2cc +- Mission-02: UM9hXz3Qj4zdH0dVOnQzt93F7OpwBizsU8z1VkNNjvw= mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: ce35d65c066a99144f5cd0b6cfba2f85 +reviewed: fA23gJgD_dmmNhl-2C5pu5DXz68dMtoxlTFapDvwBw8= short name: Science requirement I text: | Mission shall be able to perform example measurement one diff --git a/reqs/L2/SCI-02.yml b/reqs/L2/SCI-02.yml index dce35cb..aa7b61c 100644 --- a/reqs/L2/SCI-02.yml +++ b/reqs/L2/SCI-02.yml @@ -1,14 +1,15 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: -- Mission-02: 79070034b1a1744bace885529089f2cc +- Mission-02: UM9hXz3Qj4zdH0dVOnQzt93F7OpwBizsU8z1VkNNjvw= mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: 3f2b27210890485fd2c8e2391cd62157 +reviewed: NLoz_ZKlgbNPh8nqVM9f9OMUXtA2Pah0Qw1D08d3pow= short name: Science requirement II text: | Mission shall be able to perform example measurement two diff --git a/reqs/L2/SCI-03.yml b/reqs/L2/SCI-03.yml index 9aaf7b2..ed76c55 100644 --- a/reqs/L2/SCI-03.yml +++ b/reqs/L2/SCI-03.yml @@ -1,15 +1,16 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: -- Mission-01: 4df33868b6317d02b557a7bd48124bab -- Mission-03: 0d6c52fe65c60e9e6a48c6c1b189a3e7 +- Mission-01: YyheTsRlb396NCXis3mtNkKvL1Dp5XHU091K8_Sghws= +- Mission-03: aZpVUIP5OVikRMasTGhZ85s-6Sg4eL0ibVLsK2mNzqQ= mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: 28477f4723958c1f1b1a329c803b7ba5 +reviewed: wKjFdrYagtaPAdtUsgM3138g53nYQn_yCj9iCiFsmn8= short name: Science requirement III text: | Mission shall be able to perform example measurement three diff --git a/reqs/L3/Tech-1.yml b/reqs/L3/Tech-1.yml index 112a0bd..40c9346 100644 --- a/reqs/L3/Tech-1.yml +++ b/reqs/L3/Tech-1.yml @@ -1,14 +1,15 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: -- SCI-01: f9801348ce3b33579655fabb64aa6d0f +- SCI-01: y-Eg52flLPcCGEeSX37bgE9Kb5Rc44Iae3_THcf08dg= mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: e46d304c1cf8716689a2a16a0fedee90 +reviewed: hTiqUXl-6Us3X0NZ8GFzdJYpMD8FAp5KGR4s18HirKE= short name: Instrument Alpha text: | Technical instrument requirement Alpha diff --git a/reqs/L3/Tech-2.yml b/reqs/L3/Tech-2.yml index eec035e..aaaf212 100644 --- a/reqs/L3/Tech-2.yml +++ b/reqs/L3/Tech-2.yml @@ -1,15 +1,16 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: -- SCI-02: 6ca9c82ddd547ecb4400af37201b5113 -- SCI-03: 66dc99b21505632b514edb24dbc4ff15 +- SCI-02: KKIFU6SeKQwr6_WQR3TRSUJHX42Lc52t3Rxp4trgRmQ= +- SCI-03: -idcB35K817AuZ-vPOaJkMoFBBCxD3m7wQMexk5QLZk= mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: 408d1c6beb848eae444ed7acf033e7d9 +reviewed: LqZno3gcbUMJk71goPFscWcxI4jg2ghnlmT93fA5TDE= short name: Instrument Beta text: | Technical instrument requirement Beta diff --git a/reqs/L3/Tech-3.yml b/reqs/L3/Tech-3.yml index d3c12cc..3fff283 100644 --- a/reqs/L3/Tech-3.yml +++ b/reqs/L3/Tech-3.yml @@ -1,15 +1,16 @@ active: true additional notes: '' derived: false +header: '' level: 1 links: -- SCI-02: 6ca9c82ddd547ecb4400af37201b5113 +- SCI-02: KKIFU6SeKQwr6_WQR3TRSUJHX42Lc52t3Rxp4trgRmQ= mission success criteria: '' normative: true rationale: '' ref: '' -reviewed: abdc9f388305bddd465caaa74042dc14 +reviewed: 2C9MmigZpOBKPgN4N9lmDHqv7DhG_zM0nuD76pUUO1g= short name: Instrument Gamma text: | Technical instrument requirement Gamma -verification plan: '' +verification plan: ' test' diff --git a/requirements.txt b/requirements.txt index ea57898..585453a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,3 @@ -graphviz==0.16 +doorstop>=3.1 +graphviz>=0.20 +numpy