https://github.com/common-workflow-language/cwlviewer

A web application to view and share Common Workflow Language workflows

https://github.com/common-workflow-language/cwlviewer

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    2 of 20 committers (10.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary

Keywords

common-workflow-language cwl java workflow workflows

Keywords from Contributors

bioinformatics genomics archival commonwl sciworkflows hacking transformers sequences distribution embedded
Last synced: 5 months ago · JSON representation

Repository

A web application to view and share Common Workflow Language workflows

Basic Info
  • Host: GitHub
  • Owner: common-workflow-language
  • License: apache-2.0
  • Language: Java
  • Default Branch: main
  • Homepage: https://view.commonwl.org/
  • Size: 10.1 MB
Statistics
  • Stars: 47
  • Watchers: 30
  • Forks: 29
  • Open Issues: 60
  • Releases: 16
Topics
common-workflow-language cwl java workflow workflows
Created over 9 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Notice

README.md

CWL Viewer

This is a Spring Boot MVC application which fetches Common Workflow Language files from a Github repository and creates a page for it detailing the main workflow and its inputs, outputs and steps.

Build Status Coverage Status Gitter Docker image commonworkflowlanguage/cwlviewer DOI

Using CWL Viewer

You are recommended to use the production instance of CWL Viewer at https://view.commonwl.org/ which runs the latest release. Any downtime should be reported on the gitter chat for cwlviewer.

Running

If you are a developer, or you want to use the CWL Viewer in a closed environment, then you can run your own instance.

Recommended - Running with Docker

This application can be started with Docker and Docker Compose and Docker Compose is the recommended method of running or developing this codebase.

Then run the following commands to clone the project in your local system.

git clone https://github.com/common-workflow-language/cwlviewer.git cd cwlviewer

In the project directory, to start CWLViewer exposed on port 8080, run:

docker compose up

The web server will connect to a local host, you'll see the message saying "Tomcat started on port(s):8080".

To see the locally running CWL Viewer app, visit http://localhost:8080/ in your web browser.

To stop and remove:

docker compose down

If you change the source code, then use this docker-compose.override.yml and re-build with docker compose build:

yaml version: '3.9' services: spring: build: .

See the docker-compose.yml file for details.

If you have modified the source code, then you may want to build the docker image locally first:

docker build -t commonworkflowlanguage/cwlviewer .

Running Spring Boot locally for development, with PostgreSQL and Jena Fuseki in Docker

Create docker-compose.override.yml:

version: '3.9' services: postgres: ports: - "5432:5432" sparql: ports: - "3030:3030"

Then start the containers:

docker compose up

Then start Spring Boot locally:

mvn spring-boot:run -Dserver.port=7999

Now you can connect to http://localhost:7999 in your browser.

Deleting the data volumes to reset state

To completely reset the state, you must delete the data volumes:

docker compose down docker volume rm cwlviewer_bundle cwlviewer_git cwlviewer_graphviz cwlviewer_postgres cwlviewer_sparql

Running without Docker

Requirements

PostgreSQL

You will need to have PostgreSQL running, by default on localhost:5432

If you are running from the command line, you can override this by supplying system properties like -Dspring.datasource.url=jdbc:postgresql://localhost:5432/cwlviewer and -Dspring.datasource.password=sa

Apache Jena Fuseki (or alternative SPARQL server)

You will also need to have a SPARQL server such as Apache Jena Fuseki running, by default on localhost:3030

Ruby and Licensee

To retrieve license information, CWL Viewer uses the Licensee Ruby Gem. To install it, configure Ruby on your environment and then run

bash gem install licensee

You may use a dependency from your operating system package manager if you prefer too, e.g. ruby-licensee for Ubuntu LTS 22.04.1.

Before running Maven, try running licensee in the command-line to verify it was installed successfully.

Compiling and Running

To compile you will need Java 17 or a compatible distribution (e.g. Eclipse Adoptium) and version, as well as Apache Maven 3 (apt install maven).

Spring Boot uses an embedded HTTP server. The Spring Boot Maven plugin includes a run goal which can be used to quickly compile and run it:

$ mvn spring-boot:run

Alternatively, you can run the application from your IDE as a simple Java application by importing the Maven project.

You need to install Graphviz for all unit tests to pass.

You can create an executable JAR file by using:

mvn clean install

Afterwards, run:

java -jar target/cwlviewer*.jar

(The exact filename will vary per version)

Once CWL Viewer is running, you should see log output somewhat like:

()..) s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) org.researchobject.CwlViewerApplication : Started CwlViewerApplication in 28.604 seconds

Now check out http://localhost:8080/ to access CWL Viewer.

Configuration

There are a variety of configuration options detailed in the application configuration file which can be adjusted.

When deploying with docker, these can be overridden externally by creating/modifying docker-compose.override.yml as follows:

yaml version: '3.9' services: spring: environment: applicationName: Common Workflow Language Viewer applicationURL: https://view.commonwl.org cacheDays: 1

The properties can alternatively be provided as system properties on the command line, e.g. -DcacheDays=1 or via a variety of other methods supported by Spring Boot

Dump/restore

While you can perform backup of the Docker volumes, for larger upgrades of CWL Viewer it is recommended instead to do a JSON dump and re-load, which will force CWL Viewer to fetch and parse again.

The script dump.py can be used for regular backups, it will store the full output of /workflows as one or multiple timestamped JSON files (you can use gzip to compress them):

$ python dump.py --viewer https://view.commonwl.org/ --output /var/backups --page 0 --size 100
  INFO:Viewer URL: https://view.commonwl.org/
  INFO:Output: /var/backups
  INFO:Dumping workflows from https://view.commonwl.org/, page 0, size 100 to /var/backups

$ python dump.py -o /var/backups -a
  INFO:Viewer URL: https://view.commonwl.org/
  INFO:Output: /var/backups
  INFO:Dumping all the workflows from https://view.commonwl.org/ to /var/backups
  100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [04:39<00:00, 17.49s/it]

The script load.py (requires Python 3) can be used to restore from such JSON dumps:

./load.py /var/backups/cwl/2018-06-06T135133+0000.json.gz https://view.commonwl.org/

The optional parameter --no-commits can be added to skip those entries that look like a commit ID. Note that this might break previous permalinks.

Documentation

2017 Poster https://doi.org/10.7490/f1000research.1114375.1?

2017 Video overview https://youtu.be/_yjhVTmvxLU

2017 Technical Report https://doi.org/10.5281/zenodo.823295

License

Distributed under the Apache License, Version 2.0. See the file LICENSE.md for details, and NOTICE.md for required attribution notices.

Contribute

Feel free to contribute! You may raise an issue, provide a pull request or join the gitter chat for cwlviewer!

Changelog

See CHANGELOG

Making a development snapshot container image

(and optionally publishing that image to DockerHub)

```shell

confirm the build arguments

if these don't look correct, troubleshoot before continuing.

BUILDDATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') VCSREF=$(git rev-parse HEAD) VERSION=$(git describe) echo BUILDDATE=${BUILDDATE} VCSREF=${VCSREF} VERSION=${VERSION}

build the container image

docker build --build-arg BUILDDATE=${BUILDDATE} --build-arg VCSREF=${VCSREF} \ --build-arg VERSION=${VERSION} \ -t cwlviewer:${VERSION} .

the rest is optional

docker tag cwlviewer:${VERSION} docker.io/commonworkflowlanguage/cwlviewer:${VERSION} docker tag cwlviewer:${VERSION} quay.io/commonwl/cwlviewer:${VERSION} docker push docker.io/commonworkflowlanguage/cwlviewer:${VERSION} docker push quay.io/commonwl/cwlviewer:${VERSION} ```

Making a release and publishing to GitHub, DockerHub, and Quay.io

After CHANGELOG.md has been updated and the -SNAPSHOT suffix removed from pom.xml, run the following:

```shell git checkout main git pull new_version=1.4.3 # CHANGEME

create an annotated git tag

git tag -a -m "release version ${newversion}" v${newversion}

confirm the build arguments

if these don't look correct, troubleshoot before continuing.

for example, was your tag an annotated (-a) tag?

BUILDDATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') VCSREF=$(git rev-parse HEAD) VERSION=$(git describe) echo BUILDDATE=${BUILDDATE} VCSREF=${VCSREF} VERSION=${VERSION}

build the container image

docker build --build-arg BUILDDATE=${BUILDDATE} --build-arg VCSREF=${VCSREF} \ --build-arg VERSION=${VERSION} \ -t cwlviewer:${VERSION} .

tag this container image in preparation for pushing to Docker Hub and Quay.io

docker tag cwlviewer:${VERSION} docker.io/commonworkflowlanguage/cwlviewer:${VERSION} docker tag cwlviewer:${VERSION} docker.io/commonworkflowlanguage/cwlviewer:latest docker tag cwlviewer:${VERSION} quay.io/commonwl/cwlviewer:${VERSION} docker tag cwlviewer:${VERSION} quay.io/commonwl/cwlviewer:latest

push the container image to Docker Hub and Quay.io

docker push docker.io/commonworkflowlanguage/cwlviewer:${VERSION} docker push docker.io/commonworkflowlanguage/cwlviewer:latest docker push quay.io/commonwl/cwlviewer:${VERSION} docker push quay.io/commonwl/cwlviewer:latest

upload the annotated tag to GitHub

git push --tags git push ```

Then copy the changelog into https://github.com/common-workflow-language/cwlviewer/releases/new using the tag you just pushed.

Finally, make a new PR to bump the version and restore the -SNAPSHOT suffix in pom.xml.

Thanks

Developers and contributors include:

  • Mark Robinson http://orcid.org/0000-0002-8184-7507
  • Stian Soiland-Reyes http://orcid.org/0000-0001-9842-9718
  • Michael Crusoe http://orcid.org/0000-0002-2961-9670
  • Carole Goble http://orcid.org/0000-0003-1219-2137
  • Charles Overbeck https://github.com/coverbeck
  • Finn Bacall http://orcid.org/0000-0002-0048-3300
  • Osakpolor Obaseki https://github.com/obasekiosa
  • Bruno P. Kinoshita https://orcid.org/0000-0001-8250-4074

Thanks to:

Owner

  • Name: Common Workflow Language
  • Login: common-workflow-language
  • Kind: organization

GitHub Events

Total
  • Issues event: 3
  • Watch event: 2
  • Delete event: 59
  • Issue comment event: 20
  • Push event: 113
  • Pull request review comment event: 4
  • Pull request review event: 55
  • Pull request event: 117
  • Fork event: 1
  • Create event: 63
Last Year
  • Issues event: 3
  • Watch event: 2
  • Delete event: 59
  • Issue comment event: 20
  • Push event: 113
  • Pull request review comment event: 4
  • Pull request review event: 55
  • Pull request event: 117
  • Fork event: 1
  • Create event: 63

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,043
  • Total Committers: 20
  • Avg Commits per committer: 52.15
  • Development Distribution Score (DDS): 0.749
Past Year
  • Commits: 82
  • Committers: 4
  • Avg Commits per committer: 20.5
  • Development Distribution Score (DDS): 0.195
Top Committers
Name Email Commits
dependabot[bot] 4****] 262
Mark Robinson m****k@g****k 242
Mark Robinson m****4@s****k 201
Stian Soiland-Reyes s****n@a****g 124
Michael R. Crusoe m****e@g****m 74
Bruno P. Kinoshita k****w 62
dependabot-preview[bot] 2****] 32
Osakpolor Obaseki o****a@g****m 12
GlassOfWhiskey i****2@g****m 7
Peter Amstutz p****z@c****m 4
etzanis e****s@g****m 4
Snyk bot g****t@s****o 4
Anushka Shukla 4****a 3
Charles Overbeck c****c@u****u 3
Ward Vandewege w****d@c****m 3
ImgBotApp I****p@g****m 2
Finn Bacall f****l 1
Jonathan Leitschuh j****h@g****m 1
yichiehc 4****c 1
Mergify 3****] 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 52
  • Total pull requests: 226
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 6 days
  • Total issue authors: 9
  • Total pull request authors: 7
  • Average comments per issue: 1.4
  • Average comments per pull request: 0.27
  • Merged pull requests: 194
  • Bot issues: 0
  • Bot pull requests: 158
Past Year
  • Issues: 2
  • Pull requests: 111
  • Average time to close issues: 3 months
  • Average time to close pull requests: 3 days
  • Issue authors: 2
  • Pull request authors: 5
  • Average comments per issue: 3.0
  • Average comments per pull request: 0.22
  • Merged pull requests: 86
  • Bot issues: 0
  • Bot pull requests: 100
Top Authors
Issue Authors
  • MarkRobbo (34)
  • stain (7)
  • mr-c (5)
  • egpbos (1)
  • pmiddend (1)
  • mexanick (1)
  • martinchapman (1)
  • astewart-twist (1)
  • kinow (1)
Pull Request Authors
  • dependabot[bot] (218)
  • MarkRobbo (53)
  • kinow (8)
  • mr-c (4)
  • wanghang-github (4)
  • mergify[bot] (3)
  • oceenachi (2)
Top Labels
Issue Labels
enhancement (24) bug (10) ready (4) invalid (1) wontfix (1) help wanted (1)
Pull Request Labels
dependencies (218) java (193) github_actions (25) bug (2)

Dependencies

src/main/resources/static/bower_components/bootstrap/bower.json bower
  • jquery 1.9.1 - 3
pom.xml maven
  • com.fasterxml.jackson.core:jackson-core 2.13.3
  • com.github.jabbalaci:graphviz-java-api f9bf94896776de6e98b5004e819b63fb4c15b15d
  • com.github.jsonld-java:jsonld-java 0.13.4
  • com.vladmihalcea:hibernate-types-55 2.16.3
  • org.apache.commons:commons-compress 1.21
  • org.apache.jena:jena-core 4.5.0
  • org.apache.taverna.language:taverna-robundle 0.16.0-incubating-SNAPSHOT
  • org.eclipse.jgit:org.eclipse.jgit 6.1.0.202203080745-r
  • org.liquibase:liquibase-core 4.12.0
  • org.postgresql:postgresql
  • org.springframework.boot:spring-boot-starter-data-jpa
  • org.springframework.boot:spring-boot-starter-thymeleaf
  • org.springframework.boot:spring-boot-starter-validation
  • org.springframework.boot:spring-boot-starter-web
  • org.springframework.data:spring-data-commons 2.7.1
  • org.yaml:snakeyaml 1.30
  • org.mockito:mockito-all 1.10.19 test
  • org.springframework.boot:spring-boot-starter-test test
  • org.testcontainers:junit-jupiter 1.17.3 test
  • org.testcontainers:postgresql 1.17.3 test
src/main/resources/static/bower_components/bootstrap/grunt/npm-shrinkwrap.json npm
  • 428 dependencies
src/main/resources/static/bower_components/bootstrap/package.json npm
  • btoa ~1.1.2 development
  • glob ~7.0.3 development
  • grunt ~1.0.1 development
  • grunt-autoprefixer ~3.0.4 development
  • grunt-contrib-clean ~1.0.0 development
  • grunt-contrib-compress ~1.3.0 development
  • grunt-contrib-concat ~1.0.0 development
  • grunt-contrib-connect ~1.0.0 development
  • grunt-contrib-copy ~1.0.0 development
  • grunt-contrib-csslint ~1.0.0 development
  • grunt-contrib-cssmin ~1.0.0 development
  • grunt-contrib-htmlmin ~1.5.0 development
  • grunt-contrib-jshint ~1.0.0 development
  • grunt-contrib-less ~1.3.0 development
  • grunt-contrib-pug ~1.0.0 development
  • grunt-contrib-qunit ~0.7.0 development
  • grunt-contrib-uglify ~1.0.0 development
  • grunt-contrib-watch ~1.0.0 development
  • grunt-csscomb ~3.1.0 development
  • grunt-exec ~1.0.0 development
  • grunt-html ~8.0.1 development
  • grunt-jekyll ~0.4.4 development
  • grunt-jscs ~3.0.1 development
  • grunt-saucelabs ~9.0.0 development
  • load-grunt-tasks ~3.5.0 development
  • markdown-it ^7.0.0 development
  • shelljs ^0.7.0 development
  • shx ^0.1.2 development
  • time-grunt ^1.3.0 development
src/main/resources/static/bower_components/svg-pan-zoom/package.json npm
  • browserify ^8.0.3 development
  • gulp ^3.8.10 development
  • gulp-concat ^2.4.3 development
  • gulp-config-sync git://github.com/bumbu/gulp-config-sync development
  • gulp-header ^1.2.2 development
  • gulp-jscs ^1.4.0 development
  • gulp-jshint ^1.9.0 development
  • gulp-plumber ^0.6.6 development
  • gulp-qunit ^1.1.0 development
  • gulp-rename ^1.2.0 development
  • gulp-uglify ^1.0.2 development
  • gulp-watch ^3.0.0 development
  • vinyl-buffer ^1.0.0 development
  • vinyl-source-stream ^1.0.0 development
src/main/resources/static/bower_components/bootstrap/nuget/bootstrap.less.nuspec nuget
  • jQuery [1.9.1,4)
src/main/resources/static/bower_components/bootstrap/nuget/bootstrap.nuspec nuget
  • jQuery [1.9.1,4)
docs/mongo-to-postgres/requirements.txt pypi
  • jupyterlab *
  • numpy *
  • pandas *
  • requests ==2.27.
src/main/resources/static/bower_components/bootstrap/Gemfile rubygems
  • jekyll ~> 3.9.0 development
  • jekyll-sitemap ~> 0.12.0 development
src/main/resources/static/bower_components/bootstrap/Gemfile.lock rubygems
  • addressable 2.8.0
  • colorator 1.1.0
  • concurrent-ruby 1.1.9
  • em-websocket 0.5.2
  • eventmachine 1.2.7
  • ffi 1.15.3
  • forwardable-extended 2.6.0
  • http_parser.rb 0.6.0
  • i18n 0.9.5
  • jekyll 3.9.1
  • jekyll-sass-converter 1.5.2
  • jekyll-sitemap 0.12.0
  • jekyll-watch 2.2.1
  • kramdown 2.3.1
  • liquid 4.0.3
  • listen 3.5.1
  • mercenary 0.3.6
  • pathutil 0.16.2
  • public_suffix 4.0.6
  • rb-fsevent 0.11.0
  • rb-inotify 0.10.1
  • rexml 3.2.5
  • rouge 3.26.0
  • safe_yaml 1.0.5
  • sass 3.7.4
  • sass-listen 4.0.0
.github/workflows/ci-build.yml actions
  • actions/cache v2.1.4 composite
  • actions/checkout v2.3.4 composite
  • actions/setup-java v2 composite
  • ruby/setup-ruby v1 composite
.github/workflows/codeql-analysis.yml actions
  • actions/checkout v2 composite
  • actions/setup-java v2 composite
  • github/codeql-action/analyze v1 composite
  • github/codeql-action/autobuild v1 composite
  • github/codeql-action/init v1 composite
.github/workflows/docker.yml actions
  • actions/checkout v3 composite
Dockerfile docker
  • maven 3-eclipse-temurin-17-alpine build
docker-compose.yml docker
  • commonworkflowlanguage/cwlviewer latest
  • postgres 14-alpine
  • stain/jena-fuseki 3.4.0
src/main/resources/static/bower_components/hammerjs/bower.json bower
src/main/resources/static/bower_components/highlightjs/bower.json bower
src/main/resources/static/bower_components/jquery/bower.json bower
src/main/resources/static/bower_components/requirejs/bower.json bower
src/main/resources/static/bower_components/svg-pan-zoom/bower.json bower
src/main/resources/static/bower_components/highlightjs/package.json npm
src/main/resources/static/bower_components/highlightjs/composer.json packagist