21 个稳定版本
1.1.20 | 2022年6月3日 |
---|---|
1.1.19 | 2022年5月10日 |
1.1.13 | 2022年4月13日 |
1.1.11 | 2022年3月24日 |
1.1.8 | 2022年2月16日 |
#695 in 命令行工具
9.5MB
4K SLoC
gh-trs: 使用 GitHub 发布和测试您自己的 GA4GH TRS API 的 CLI 工具
CLI 工具,用于将工作流程作为 GA4GH 工具注册服务 (TRS) API 发布,并使用 GitHub 测试工作流程。
功能特点
- 从工作流程文档的 URL(称为
config_file
)生成发布模板 - 根据 gh-trs 配置文件测试工作流程
- 将工作流程作为 GA4GH TRS API 发布到 GitHub
注意,存在 ddbj/yevis-cli 作为更全面且维护得更好的工具。基本上,我推荐使用它。
安装
使用无任何依赖项构建的单个二进制文件
$ curl -fsSL -O https://github.com/suecharo/gh-trs/releases/latest/download/gh-trs
$ chmod +x ./gh-trs
$ ./gh-trs --help
或者,使用 Docker
环境(也支持 docker-compose
)
$ docker-compose up -d --build
$ docker-compose exec app gh-trs --help
入门
首先,gh-trs
需要通过 GitHub REST API 进行各种操作,需要 GitHub 个人访问令牌
。请参阅 GitHub 文档 - 创建个人访问令牌 了解如何生成 GitHub 个人访问令牌
。
所需的作用域如下(也请参见截图)
repo-public_repo
user-read:user
生成 GitHub 个人访问令牌
后,您需要通过以下方式之一将其传递给 gh-trs
- 环境文件:将令牌写入
.env
文件,如GITHUB_TOKEN=<paste_your_token>
- 环境变量:设置
GITHUB_TOKEN
环境变量 - 命令行选项:使用
--gh-token <paste_your_token>
选项
使用工作流程 trimming_and_qc.cwl
作为示例。
首先,从工作流程文档的 GitHub 位置生成 gh-trs 配置文件的模板
$ gh-trs make-template https://github.com/suecharo/gh-trs/blob/main/tests/CWL/wf/trimming_and_qc.cwl
test_config_CWL_template.yml
是将要生成内容的示例。
接下来,编辑生成的 ./gh-trs-config.yml
,如 test_config_CWL.yml
。
主要编辑部分如下
workflow.files
:要包含在工作流程中的文件列表workflow.testing
:要运行的测试列表
更多详细信息,请参阅 readme - validate。
然后,根据 gh-trs 配置文件生成 GA4GH TRS API,并将其部署在 GitHub Pages 上。
$ gh-trs publish --repo <repo_owner>/<repo_name> ./gh-trs-config.yml
已部署的工作流程可以从 GA4GH TRS API 规范 中检索。
$ curl -L https://<repo_owner>.github.io/<repo_name>/tools
使用方法
本节描述了 gh-trs
的某些子命令。
$ gh-trs --help
gh-trs 0.1.1
CLI tool to publish and test your own GA4GH TRS API using GitHub
USAGE:
gh-trs <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
help Prints this message or the help of the given subcommand(s)
make-template Make a template for the gh-trs configuration file
publish Publish the TRS response to GitHub
test Test the workflow based on the gh-trs configuration file
validate Validate the gh-trs configuration file
make-template
从主要工作流程文件的 GitHub 位置生成 gh-trs 配置文件模板。
$ gh-trs make-template --help
gh-trs-make-template 0.1.1
Make a template for the gh-trs configuration file
USAGE:
gh-trs make-template [FLAGS] [OPTIONS] <workflow-location>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
-v, --verbose Verbose mode
OPTIONS:
--gh-token <github-token> GitHub Personal Access Token
-o, --output <output> Path to the output file [default: gh-trs-config.yml]
ARGS:
<workflow-location> Location of the primary workflow document
仅接受托管在 GitHub 上的 URL 作为 workflow-location
。这是一个类似于 https://github.com/suecharo/gh-trs/blob/main/tests/CWL/wf/trimming_and_qc.cwl
的 URL,稍后将转换为类似 https://raw.githubusercontent.com/suecharo/gh-trs/645a193826bdb3f0731421d4ff1468d0736b4a06/tests/CWL/wf/trimming_and_qc.cwl
的 raw URL。
gh-trs
收集各种信息并生成 gh-trs 配置文件模板。特别是,workflow.files
会从主要工作流程位置递归生成文件列表。
validate
验证 gh-trs 配置文件的架构和内容。
$ gh-trs validate --help
gh-trs-validate 0.1.1
Validate the gh-trs configuration file
USAGE:
gh-trs validate [FLAGS] [OPTIONS] [config-locations]...
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
-v, --verbose Verbose mode
OPTIONS:
--gh-token <github-token> GitHub Personal Access Token
ARGS:
<config-locations>... Location of the gh-trs configuration files (local file path or remote URL) [default:
gh-trs-config.yml]
以下是 gh-trs 配置文件中某些字段的验证规则解释
id
:工作流程的 ID。由make-template
命令生成。如果您想更新现有工作流程,请填写现有工作流程的 ID。version
:版本形式为x.y.z
。authors
:作者列表。workflow.name
:请自由填写。允许的字符包括a-z
、A-Z
、0-9
、~!@#$%^&*()_+-={}[]|:;,.<>?,以及空格。
workflow.readme
:用于describe
工作流程的字段。使用您喜欢的任何 URL。workflow.language
:支持CWL
、WDL
、NFL
和SMK
。workflow.files
:文件列表。指定为type: secondary
的文件将在工作流程执行时,以target
作为路径放置在执行目录中。workflow.testing
:测试列表。有关编写测试的详细信息,请参阅test
。
已准备了一些示例。请检查
test
根据配置文件测试工作流程。
$ gh-trs test --help
gh-trs-test 0.1.1
Test the workflow based on the gh-trs configuration file
USAGE:
gh-trs test [FLAGS] [OPTIONS] [config-locations]...
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
-v, --verbose Verbose mode
OPTIONS:
-d, --docker-host <docker-host> Location of the docker host [default: unix:///var/run/docker.sock]
--gh-token <github-token> GitHub Personal Access Token
-w, --wes-location <wes-location> Location of WES in which to run the test. If not specified, `sapporo-service`
will be started
ARGS:
<config-locations>... Location of the gh-trs configuration files (local file path or remote URL) [default:
gh-trs-config.yml]
测试使用 GA4GH 工作流程执行服务 (WES;GA4GH - WES API。特别是,gh-trs
使用 sapporo-service
作为 WES。如果没有指定 --wes-location
选项,则使用默认的 DOCKER_HOST
来指定 sapporo-service
。
以下是一个配置文件中 workflow.testing
字段的示例
testing:
- id: test_1
files:
- url: "https://example.com/path/to/wf_params.json"
target: wf_params.json
type: wf_params
- url: "https://example.com/path/to/wf_engine_params.json"
target: wf_engine_params.json
type: wf_engine_params
- url: "https://example.com/path/to/data.fq"
target: data.fq
type: other
存在三种文件类型
wf_params
:工作流程的参数。wf_engine_params
:工作流程引擎的执行参数。other
:其他文件(例如,数据文件)。
指定为 wf_params
和 wf_engine_params
的文件将作为 WES 执行参数放置在 WES 运行时。此外,other
文件将在工作流程执行时,以 target
作为路径放置在执行目录中。
您可以自由指定 id
字段。
有关如何运行 WES 的更多信息,请参阅 WES API 文档 和 sapporo 文档。
publish
将工作流程作为 GA4GH TRS API 发布到 GitHub。
$ gh-trs publish --help
gh-trs-publish 0.1.1
Publish the TRS response to GitHub
USAGE:
gh-trs publish [FLAGS] [OPTIONS] --repo <repo> [config-locations]...
FLAGS:
--from-trs Recursively get the gh-trs configuration files from the TRS endpoint and publish them. It is
mainly intended to be tested and published all at once in a CI environment. If you use this option,
specify the TRS endpoint for `config_location`
-h, --help Prints help information
-V, --version Prints version information
-v, --verbose Verbose mode
--with-test Test before publishing
OPTIONS:
-b, --branch <branch> GitHub branch to publish to [default: gh-pages]
-d, --docker-host <docker-host> Location of the docker host [default: unix:///var/run/docker.sock]
--gh-token <github-token> GitHub Personal Access Token
-r, --repo <repo> GitHub Repository to publish to. (e.g. owner/name)
-w, --wes-location <wes-location> Location of WES in which to run the test. If not specified, `sapporo-service`
will be started
ARGS:
<config-locations>... Location of the gh-trs configuration files (local file path or remote URL) [default:
gh-trs-config.yml]
基于 gh-trs 配置文件生成 GA4GH TRS 响应,并发布到 GitHub Pages。此外,使用 --repo <repo>
和 --branch <branch>
选项,gh-trs
可以指定要发布到的 GitHub 仓库或分支。
使用 --with-test
选项,gh-trs
可以在发布前运行测试。测试的工作流程将在 TRS 响应中将 verified
字段设置为 true
。
使用 --from-trs
选项,gh-trs
可以从 TRS 端点获取 gh-trs 配置文件并发布它们。因此,如果您想测试和发布已发布的 TRS 的所有工作流程,请运行类似以下命令
$ gh-trs publish --repo <owner/name> --branch gh-pages --with-test --from-trs https://example.com/path/to/trs
持续测试(CI/CD)
发布了用于持续测试的 GitHub Action (actions/gh-trs-action
)。
此操作的输入如下
gh-token
:GitHub 个人访问令牌repo
:可选 要发布的 GitHub 仓库。 (例如,owner/name
,默认:您的仓库)branch
:可选 要发布的 GitHub 分支。 (默认:gh-pages
)trs-endpoint
:可选 获取 gh-trs 配置文件的 TRS 端点。 (默认:您的默认 trs 端点)
如果您想指定这些输入,请使用with
上下文(文档,https://githubdocs.cn/ja/actions/using-workflows/workflow-syntax-for-github-actions#),如下所示:
jobs:
test-and-publish:
steps:
- name: gh-trs-action
uses: suecharo/gh-trs-action@v1
with:
gh-token: ${{ secrets.GITHUB_TOKEN }}
repo: suecharo/gh-trs
branch: gh-pages
trs-endpoint: https://suecharo.github.io/gh-trs/
这些输入是可选的,如果不指定,将使用基于您仓库的默认值。
在此操作中,将执行以下命令:
$ gh-trs publish --verbose --with-test --repo ${{ inputs.repo }} --branch ${{ inputs.branch }} --from-trs ${{ inputs.trs-endpoint }}
测试结果将被上传到GitHub Actions,并以gh-trs-test-logs
为名称的工件。此外,如果测试作为CI运行发布,GitHub Actions的相关运行URL将被设置在TRS响应中的verified_source
字段。
以下是GitHub Actions两种模式的配方。
页面构建触发器
这是响应本地执行运行CI的配方。
name: page-build-ci
on:
page_build: {}
jobs:
test-and-publish:
runs-on: ubuntu-latest
if: "! contains(github.event.head_commit.message, 'in CI')"
steps:
- name: gh-trs-action
uses: suecharo/gh-trs-action@v1
with:
gh-token: ${{ secrets.GITHUB_TOKEN }}
放置此操作后,当在本地环境中执行如下命令时,将启动CI:
$ gh-trs publish --repo suecharo/gh-trs ./tests/test_config_CWL.yml
计划触发器
name: schedule-ci
on:
schedule:
- cron: "0 0 * * 0" // every Sunday at midnight
jobs:
test-and-publish:
runs-on: ubuntu-latest
steps:
- name: gh-trs-action
uses: suecharo/gh-trs-action@v1
with:
gh-token: ${{ secrets.GITHUB_TOKEN }}
放置此操作后,CI将根据计划执行。
认可
gh-trs
部分得到JSPS KAKENHI Grant Numbers 20J22439的支持。
许可证
Apache-2.0。请参阅LICENSE。
依赖项
~12–29MB
~425K SLoC