{"id":23229012,"url":"https://github.com/common-workflow-language/cwlviewer","last_synced_at":"2025-09-02T21:33:02.906Z","repository":{"id":37421904,"uuid":"70346903","full_name":"common-workflow-language/cwlviewer","owner":"common-workflow-language","description":"A web application to view and share Common Workflow Language workflows","archived":false,"fork":false,"pushed_at":"2025-03-29T21:00:15.000Z","size":10536,"stargazers_count":46,"open_issues_count":60,"forks_count":28,"subscribers_count":31,"default_branch":"main","last_synced_at":"2025-03-29T21:26:14.968Z","etag":null,"topics":["common-workflow-language","cwl","java","workflow","workflows"],"latest_commit_sha":null,"homepage":"https://view.commonwl.org/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/common-workflow-language.png","metadata":{"funding":{"custom":["https://www.commonwl.org/donate/","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=Z55VS5LBBSZTJ"]},"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-08T17:26:16.000Z","updated_at":"2025-03-29T21:00:18.000Z","dependencies_parsed_at":"2023-10-02T06:48:32.447Z","dependency_job_id":"a2c1ade8-9165-4ca5-b239-f588cf35b322","html_url":"https://github.com/common-workflow-language/cwlviewer","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/common-workflow-language%2Fcwlviewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/common-workflow-language%2Fcwlviewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/common-workflow-language%2Fcwlviewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/common-workflow-language%2Fcwlviewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/common-workflow-language","download_url":"https://codeload.github.com/common-workflow-language/cwlviewer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648977,"owners_count":20972945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["common-workflow-language","cwl","java","workflow","workflows"],"created_at":"2024-12-19T01:15:55.254Z","updated_at":"2025-04-07T12:11:08.251Z","avatar_url":"https://github.com/common-workflow-language.png","language":"Java","funding_links":["https://www.commonwl.org/donate/","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=Z55VS5LBBSZTJ"],"categories":[],"sub_categories":[],"readme":"# CWL Viewer\n\nThis is a [Spring Boot](http://projects.spring.io/spring-boot/) MVC application which fetches [Common Workflow Language](http://www.commonwl.org/) files from a Github repository and creates a page for it detailing the main workflow and its inputs, outputs and steps.\n\n[![Build Status](https://github.com/common-workflow-language/cwlviewer/workflows/CWL%20Viewer%20Build/badge.svg?branch=main)](https://github.com/common-workflow-language/cwlviewer/actions?query=workflow%3A%22CWL%20Viewer%20Build%22) [![Coverage Status](https://coveralls.io/repos/github/common-workflow-language/cwlviewer/badge.svg)](https://coveralls.io/github/common-workflow-language/cwlviewer) [![Gitter](https://img.shields.io/gitter/room/gitterHQ/gitter.svg)](https://gitter.im/common-workflow-language/cwlviewer?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge) [![](https://images.microbadger.com/badges/image/commonworkflowlanguage/cwlviewer.svg)](https://microbadger.com/images/commonworkflowlanguage/cwlviewer \"MicroBadger commonworkflowlanguage/cwlviewer\") [![Docker image commonworkflowlanguage/cwlviewer](https://images.microbadger.com/badges/version/commonworkflowlanguage/cwlviewer.svg)](https://hub.docker.com/r/commonworkflowlanguage/cwlviewer/ \"Docker Hub commonworkflowlanguage/cwlviewer\")\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.823534.svg)](https://doi.org/10.5281/zenodo.823534)\n\n# Using CWL Viewer\n\nYou are recommended to use the **production instance** of CWL Viewer at https://view.commonwl.org/ which runs the latest [release](https://github.com/common-workflow-language/cwlviewer/releases). Any downtime should be reported on the [gitter chat for cwlviewer](https://gitter.im/common-workflow-language/cwlviewer).\n\n\u003c!--- I don't think this is a thing any more.\nThe **dev instance** at http://view.commonwl.org:8082/ corresponds to the current `master` branch, and is updated every 6 minutes to run the latest [commonworkflowlanguage/cwlviewer docker image](https://hub.docker.com/r/commonworkflowlanguage/cwlviewer/builds/). Note that this instance is NOT secured and might break at any time.\n--\u003e\n\n# Running\n\nIf you are a developer, or you want to use the CWL Viewer in a closed environment, then you can run your own instance.\n\n## Recommended - Running with Docker\n\nThis application can be started with [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/install/) and Docker Compose is the recommended method of running or developing this codebase.\n\nThen run the following commands to clone the project in your local system.\n\n   ```\n    git clone https://github.com/common-workflow-language/cwlviewer.git\n    cd cwlviewer\n  ```\n\nIn the project directory, to start CWLViewer exposed on port `8080`, run:\n\n    docker compose up\n\nThe web server will connect to a local host, you'll see the message saying \"Tomcat started on port(s):8080\".\n\nTo see the locally running CWL Viewer app, visit http://localhost:8080/ in your web browser.\n\nTo stop and remove:\n\n    docker compose down\n\n\nIf you change the source code, then use this `docker-compose.override.yml` and\nre-build with `docker compose build`:\n\n```yaml\nversion: '3.9'\nservices:\n  spring:\n    build: .\n```\n\nSee the [docker-compose.yml](docker-compose.yml) file for details.\n\nIf you have modified the source code, then you may want to build the docker image locally first:\n\n    docker build -t commonworkflowlanguage/cwlviewer .\n\n## Running Spring Boot locally for development, with PostgreSQL and Jena Fuseki in Docker\n\nCreate `docker-compose.override.yml`:\n\n```\nversion: '3.9'\nservices:\n  postgres:\n    ports:\n     - \"5432:5432\"\n  sparql:\n    ports:\n     - \"3030:3030\"\n```\n\nThen start the containers:\n\n```\ndocker compose up\n```\n\nThen start Spring Boot locally:\n\n```\nmvn spring-boot:run -Dserver.port=7999\n```\n\nNow you can connect to http://localhost:7999 in your browser.\n\n## Deleting the data volumes to reset state\n\nTo completely reset the state, you must delete the data volumes:\n\n```\ndocker compose down\ndocker volume rm  cwlviewer_bundle cwlviewer_git cwlviewer_graphviz cwlviewer_postgres cwlviewer_sparql\n```\n\n## Running without Docker\n\n### Requirements\n\n#### PostgreSQL\n\nYou will need to have [PostgreSQL](https://www.postgresql.org/) running,\nby default on `localhost:5432`\n\nIf you are running from the command line, you can override this by supplying\nsystem properties like `-Dspring.datasource.url=jdbc:postgresql://localhost:5432/cwlviewer` and\n`-Dspring.datasource.password=sa`\n\n#### Apache Jena Fuseki (or alternative SPARQL server)\n\nYou will also need to have a SPARQL server such as [Apache Jena Fuseki](https://jena.apache.org/documentation/fuseki2/) running,\nby default on `localhost:3030`\n\n#### Ruby and Licensee\n\nTo retrieve license information, CWL Viewer uses the [Licensee](https://github.com/licensee/licensee) Ruby Gem. To install it,\n[configure Ruby](https://www.ruby-lang.org/en/documentation/installation/) on your environment and then run\n\n```bash\ngem install licensee\n```\n\nYou may use a dependency from your operating system package manager if you\nprefer too, e.g. `ruby-licensee` for Ubuntu LTS 22.04.1.\n\nBefore running Maven, try running `licensee` in the command-line to verify\nit was installed successfully.\n\n## Compiling and Running\n\nTo compile you will need [Java 17](https://www.oracle.com/java/technologies/downloads/) or a compatible distribution\n(e.g. [Eclipse Adoptium](https://projects.eclipse.org/projects/adoptium)) and version, as well as\n[Apache Maven 3](https://maven.apache.org/download.cgi) (`apt install maven`).\n\nSpring 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:\n\n```\n$ mvn spring-boot:run\n```\n\nAlternatively, you can run the application from your IDE as a simple Java application by importing the Maven project.\n\nYou need to install [Graphviz](http://www.graphviz.org/) for all unit tests to pass.\n\nYou can create an executable JAR file by using:\n\n    mvn clean install\n\nAfterwards, run:\n\n    java -jar target/cwlviewer*.jar\n\n(The exact filename will vary per version)\n\nOnce CWL Viewer is running, you should see log output somewhat like:\n\n```\n()..)\ns.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)\norg.researchobject.CwlViewerApplication  : Started CwlViewerApplication in 28.604 seconds\n```\n\nNow check out http://localhost:8080/ to access CWL Viewer.\n\n## Configuration\n\nThere are a variety of configuration options detailed in the [application configuration file](https://github.com/common-workflow-language/cwlviewer/blob/master/src/main/resources/application.properties) which can be adjusted.\n\nWhen deploying with docker, these can be overridden externally by creating/modifying `docker-compose.override.yml` as follows:\n\n```yaml\nversion: '3.9'\nservices:\n  spring:\n    environment:\n            applicationName: Common Workflow Language Viewer\n            applicationURL: https://view.commonwl.org\n            cacheDays: 1\n```\n\nThe properties can alternatively be provided as system properties on the\ncommand line, e.g. `-DcacheDays=1` or via a [variety of other methods supported by Spring Boot](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html)\n\n# Dump/restore\n\nWhile you can perform backup of the Docker volumes,\nfor larger upgrades of CWL Viewer it is recommended instead to do a JSON dump\nand re-load, which will force CWL Viewer to fetch and parse again.\n\nThe script `dump.py` can be used for regular backups, it will store the full\noutput of /workflows as one or multiple timestamped JSON files (you can use\n`gzip` to compress them):\n\n    $ python dump.py --viewer https://view.commonwl.org/ --output /var/backups --page 0 --size 100\n      INFO:Viewer URL: https://view.commonwl.org/\n      INFO:Output: /var/backups\n      INFO:Dumping workflows from https://view.commonwl.org/, page 0, size 100 to /var/backups\n\n    $ python dump.py -o /var/backups -a\n      INFO:Viewer URL: https://view.commonwl.org/\n      INFO:Output: /var/backups\n      INFO:Dumping all the workflows from https://view.commonwl.org/ to /var/backups\n      100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [04:39\u003c00:00, 17.49s/it]\n\nThe script `load.py` (requires Python 3) can be used to restore from such JSON dumps:\n\n    ./load.py /var/backups/cwl/2018-06-06T135133+0000.json.gz https://view.commonwl.org/\n\nThe optional parameter `--no-commits` can be added to skip those entries that\nlook like a commit ID. Note that this might break previous permalinks.\n\n# Documentation\n\n2017 Poster \u003chttps://doi.org/10.7490/f1000research.1114375.1?\u003e\n\n2017 Video overview \u003chttps://youtu.be/_yjhVTmvxLU\u003e\n\n2017 Technical Report \u003chttps://doi.org/10.5281/zenodo.823295\u003e\n\n## License\n\nDistributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).\nSee the file [LICENSE.md](LICENSE.md) for details, and\n[NOTICE.md](NOTICE.md) for required attribution notices.\n\n## Contribute\n\nFeel free to contribute! You may [raise an issue](https://github.com/common-workflow-language/cwlviewer/issues),\nprovide a [pull request](https://github.com/common-workflow-language/cwlviewer/pulls)\nor join the [gitter chat for cwlviewer](https://gitter.im/common-workflow-language/cwlviewer)!\n\n## Changelog\nSee [CHANGELOG](https://github.com/common-workflow-language/cwlviewer/blob/main/CHANGELOG.md)\n\n## Making a development snapshot container image\n(and optionally publishing that image to DockerHub)\n\n```shell\n# confirm the build arguments\n# if these don't look correct, troubleshoot before continuing.\nBUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') VCS_REF=$(git rev-parse HEAD) VERSION=$(git describe)\necho BUILD_DATE=${BUILD_DATE} VCS_REF=${VCS_REF} VERSION=${VERSION}\n# build the container image\ndocker build --build-arg BUILD_DATE=${BUILD_DATE} --build-arg VCS_REF=${VCS_REF} \\\n  --build-arg VERSION=${VERSION} \\\n  -t cwlviewer:${VERSION} .\n# the rest is optional\ndocker tag cwlviewer:${VERSION} docker.io/commonworkflowlanguage/cwlviewer:${VERSION}\ndocker tag cwlviewer:${VERSION} quay.io/commonwl/cwlviewer:${VERSION}\ndocker push docker.io/commonworkflowlanguage/cwlviewer:${VERSION}\ndocker push quay.io/commonwl/cwlviewer:${VERSION}\n```\n\n## Making a release and publishing to GitHub, DockerHub, and Quay.io\n\nAfter CHANGELOG.md has been updated and the `-SNAPSHOT` suffix removed from `pom.xml`, run the following:\n\n```shell\ngit checkout main\ngit pull\nnew_version=1.4.3  # CHANGEME\n# create an annotated git tag\ngit tag -a -m \"release version ${new_version}\" v${new_version}\n# confirm the build arguments\n# if these don't look correct, troubleshoot before continuing.\n# for example, was your tag an annotated (-a) tag?\nBUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') VCS_REF=$(git rev-parse HEAD) VERSION=$(git describe)\necho BUILD_DATE=${BUILD_DATE} VCS_REF=${VCS_REF} VERSION=${VERSION}\n# build the container image\ndocker build --build-arg BUILD_DATE=${BUILD_DATE} --build-arg VCS_REF=${VCS_REF} \\\n  --build-arg VERSION=${VERSION} \\\n  -t cwlviewer:${VERSION} .\n# tag this container image in preparation for pushing to Docker Hub and Quay.io\ndocker tag cwlviewer:${VERSION} docker.io/commonworkflowlanguage/cwlviewer:${VERSION}\ndocker tag cwlviewer:${VERSION} docker.io/commonworkflowlanguage/cwlviewer:latest\ndocker tag cwlviewer:${VERSION} quay.io/commonwl/cwlviewer:${VERSION}\ndocker tag cwlviewer:${VERSION} quay.io/commonwl/cwlviewer:latest\n# push the container image to Docker Hub and Quay.io\ndocker push docker.io/commonworkflowlanguage/cwlviewer:${VERSION}\ndocker push docker.io/commonworkflowlanguage/cwlviewer:latest\ndocker push quay.io/commonwl/cwlviewer:${VERSION}\ndocker push quay.io/commonwl/cwlviewer:latest\n# upload the annotated tag to GitHub\ngit push --tags\ngit push\n```\n\nThen copy the changelog into https://github.com/common-workflow-language/cwlviewer/releases/new\nusing the tag you just pushed.\n\nFinally, make a new PR to bump the version and restore the `-SNAPSHOT` suffix in `pom.xml`.\n\n# Thanks\n\nDevelopers and [contributors](https://github.com/common-workflow-language/cwlviewer/graphs/contributors) include:\n\n* **Mark Robinson** http://orcid.org/0000-0002-8184-7507\n* Stian Soiland-Reyes http://orcid.org/0000-0001-9842-9718\n* Michael Crusoe http://orcid.org/0000-0002-2961-9670\n* Carole Goble http://orcid.org/0000-0003-1219-2137\n* Charles Overbeck https://github.com/coverbeck\n* Finn Bacall http://orcid.org/0000-0002-0048-3300\n* Osakpolor Obaseki https://github.com/obasekiosa\n* Bruno P. Kinoshita https://orcid.org/0000-0001-8250-4074\n\nThanks to:\n\n* [eScience Lab](http://www.esciencelab.org.uk/) at [The University of Manchester](http://www.cs.manchester.ac.uk/)\n* [BioExcel Center of Excellence for Computational Biomolecular Research](http://bioexcel.eu/)\n* * European Commission's [H2020 grant 675728](http://cordis.europa.eu/projects/675728)\n* [Common Workflow Language](http://www.commonwl.org/) community and the [CWL Gitter room](https://gitter.im/common-workflow-language/common-workflow-language)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommon-workflow-language%2Fcwlviewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommon-workflow-language%2Fcwlviewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommon-workflow-language%2Fcwlviewer/lists"}