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:
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:
.trace
project.yml
/docs
req.yml
uc1.yml
uc2.yml
/jobs
update-year.yml
fix-me.yml
/rules
contribution.yml
...
...
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 nameroles
: an array of roles, that performer has
For now, we support these roles:
PO
: Product OwnerPM
: Project ManagerARC
: ArchitectDEV
: Developer, ProgrammerTEST
: Tester
Section backlog
represents the place where all issues from /jobs
package
will be placed.
type
: issue tracker type, possible values areGitHub
(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) andmin-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 areMarkdown
(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):
central: github.com/tracehubpm/tracebot
Now, you inherit all the configuration from central repository.
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:
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.
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:
type: Specs
spec: |-
...
The element type
defines the type of the document.
We support these values:
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.
TBD..
Avoid storing sensitive information in Git inside your YAML documents. Use this notation instead:
...
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.
We aim to support the following platforms:
Git-hosted repositories in:
Issue trackers:
Document storages:
It is a Java project. First install Java SDK 17+, Maven 3.8+.
Then run:
$ 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:
$ mvn clean install -Psimulation -DTracehub-GitHubToken=...
Provide your GitHub token with write permissions to the next repositories: