tracehub
Tracehub and Project as a Code, a VCS-based collaboration tool
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: ieee.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.6%) to scientific vocabulary
Keywords
Repository
Tracehub and Project as a Code, a VCS-based collaboration tool
Basic Info
Statistics
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 68
- Releases: 1
Topics
Metadata Files
README.md
Tracehub and Project as a Code, a VCS-based collaboration tool, and its robot.
Motivation. We want to keep our code, tickets, and docs in-sync. However, there is no tool to do it in flexible and configurable way. We provide both-side integration through YAML notation.
Principles. These are the design principles behind tracehub.
How to use. All you need is to register your project in pmo.
Then create project document (project.yml in the root of .trace directory, in master branch)
in the following notation:
yaml
id: 5B0185CB-424B-42D4-9631-7B628B7BB78F
name: Tracehub
active: true
performers:
- name: h1alexbel
roles:
- DEV
- ARC
backlog:
type: GitHub
rules:
min-words: 20
min-estimate: 25
max-estimate: 90
docs:
type: Markdown
dependencies:
- github.com/h1alexbel/cdit@master
- github.com/tracehubpm/pmo@master
your file tree should look like this:
text
.trace
project.yml
/docs
req.yml
uc1.yml
uc2.yml
/jobs
update-year.yml
fix-me.yml
/rules
contribution.yml
...
...
project.yml notation
The element id is generated by tracehubpm/pmo
and represents a unique UUID
assigned to the project.
The element name represents the name of the project.
The element description denotes project's description.
The element active represents that project active-in-development.
Section performers for specifying who is working on the projects.
Each one has the following schema:
* name: performer's name
* roles: an array of roles, that performer has
For now, we support these roles:
* PO: Product Owner
* PM: Project Manager
* ARC: Architect
* DEV: Developer, Programmer
* TEST: Tester
Section backlog represents the place where all issues from /jobs package
will be placed.
* type: issue tracker type, possible values are GitHub
(jobs will be registered as issues in GitHub),
JIRA (jobs will be registered as tickets in Atlassian JIRA).
* rules: rules, related to the backlog, there are few: min-estimate (measured in minutes),
max-estimate (measured in minutes) and min-words (amount of words in task description),
all of them should be specified as positive integer values.
Section docs represents the place where all documentation from /docs package
will be placed.
* type: document repository, possible values are Markdown
(all docs will be formatted in markdown and placed inside root /docs directory),
GitHub Wikis, Confluence.
Section dependencies denotes the repository dependencies
This is can be helpful in case of multi-repository codebase management.
Inside those repositories, outlined as a dependencies (@ specifies which branch to check),
you should create .trace directory inside root, in master branch as well
with this configuration (project.yml):
yaml
central: github.com/tracehubpm/tracebot
Now, you inherit all the configuration from central repository.
Jobs
Jobs can be created as "work activity" for performers.
Each job must be located inside /jobs package in the .trace directory.
Take a look at the example of Job document:
yaml
label: Update License year to 2024
description: |
Lets update a copyright year in our License to 2024
cost: 20
role: ARC
The element label represents the job name.
The element description represents description of the job.
The element cost represents an estimation in minutes of this job, positive integer value.
The element role represents a required role for assigning on the job.
If not specified, then it will be DEV.
Once it committed inside master branch, @tracehubgit will create it in backlog that was
specified in project.yml.
It works both sides, when somebody will create/update/delete ticket in a backlog,
@tracehubgit will catch it up and create new Pull Request with your changes in your git repository.
Docs
To document something, use Documents.
Each document must be located inside /docs package in the .trace directory.
Take a look at the example of it:
yaml
type: Specs
spec: |-
...
The element type defines the type of the document.
We support these values:
* Specs, analogue of SRS
* UC, which stands for Use case
* Other, any other document you wish to have
Once it goes in master branch, @tracehubgit will create it in document repository that was
specified in project.yml.
It also works both sides, when somebody will create/update/delete document in a docs,
@tracehubgit will catch it up and create new Pull Request with changes in your git repository.
Rules
TBD..
Secret Variables
Avoid storing sensitive information in Git inside your YAML documents. Use this notation instead:
yaml
...
backlog:
type: GitHub
url: ${jira-url}
token: ${jira-token}
rules:
...
...
Both secrets jira-url and jira-token must be present in your project account
inside pmo.
When integration will happen,
values from these secret variables will be injected instead of placeholders.
Supported platforms
We aim to support the following platforms:
Git-hosted repositories in: * GitHub * GitLab * Bitbucket
Issue trackers: * GitHub Issues * JIRA
Document storages: * GitHub Wikis * Confluence
How to contribute?
It is a Java project. First install Java SDK 17+, Maven 3.8+.
Then run:
shell
$ mvn clean install -Pjacoco
The build has to be clean. If it's not, submit an issue.
Then, make your changes, make sure the build is still clean, and submit a pull request.
If you want to run a real simulation run this:
shell
$ mvn clean install -Psimulation -DTracehub-GitHubToken=...
Provide your GitHub token with write permissions to the next repositories:
Owner
- Name: Tracehub
- Login: tracehubpm
- Kind: organization
- Repositories: 1
- Profile: https://github.com/tracehubpm
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Bialiauski" given-names: "Aliaksei" orcid: "https://orcid.org/0009-0007-1155-2571" title: "Tracehub and Project as a Code, a VCS-based collaboration tool" version: 0.0.1 date-released: 2024-02-01 url: "https://github.com/tracehubpm/tracehub"
GitHub Events
Total
- Delete event: 3
- Push event: 31
- Pull request event: 9
- Create event: 6
Last Year
- Delete event: 3
- Push event: 31
- Pull request event: 9
- Create event: 6
Dependencies
- actions/checkout v4 composite
- tracehubpm/reports-check-action master composite
- actions/cache v3 composite
- actions/checkout v4 composite
- actions/setup-java v3 composite
- codecov/codecov-action v3 composite
- actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
- yegor256/latexmk-action 0.9.0 composite
- actions/cache v3 composite
- actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
- actions/setup-java v4 composite
- actions/checkout v4 composite
- volodya-lombrozo/pdd-action master composite
- EndBug/add-and-commit v9 composite
- actions/checkout v4 composite
- holowinski/plantuml-github-action main composite
- actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
- g4s8/xcop-action v1.3 composite
- FantasticFiasco/action-update-license-year v3 composite
- actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
- openjdk 17-jdk build
- org.hamcrest:hamcrest 2.2 compile
- ch.qos.logback:logback-classic 1.4.14
- com.amihaiemil.web:eo-yaml 7.2.0
- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml 2.16.1
- com.jcabi.incubator:xembly 0.31.0
- com.jcabi:jcabi-aspects
- com.jcabi:jcabi-github
- com.jcabi:jcabi-http
- com.jcabi:jcabi-xml
- commons-codec:commons-codec
- io.github.eo-cqrs:eokson 0.3.2
- net.sf.saxon:Saxon-HE 12.4
- org.apache.commons:commons-text
- org.apache.velocity:velocity-engine-core 2.3
- org.cactoos:cactoos 0.55.0
- org.projectlombok:lombok 1.18.30
- org.takes:takes 1.24.4
- com.yegor256:jping 0.0.1 test
- io.github.h1alexbel:ghquota 0.0.1 test
- io.github.hakky54:logcaptor 2.9.0 test
- org.hamcrest:hamcrest-core 2.2 test
- org.junit.jupiter:junit-jupiter-api 5.10.0 test
- org.junit.jupiter:junit-jupiter-params 5.10.0 test
- org.llorllale:cactoos-matchers 0.25 test
- org.mockito:mockito-core 5.5.0 test
- org.mockito:mockito-junit-jupiter 5.5.0 test