tracehub

Tracehub and Project as a Code, a VCS-based collaboration tool

https://github.com/tracehubpm/tracehub

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

chatbot java project-as-a-code version-control yaml
Last synced: 6 months ago · JSON representation ·

Repository

Tracehub and Project as a Code, a VCS-based collaboration tool

Basic Info
  • Host: GitHub
  • Owner: tracehubpm
  • License: mit
  • Language: Java
  • Default Branch: master
  • Homepage:
  • Size: 404 KB
Statistics
  • Stars: 5
  • Watchers: 2
  • Forks: 0
  • Open Issues: 68
  • Releases: 1
Topics
chatbot java project-as-a-code version-control yaml
Created about 2 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

EO principles respected here DevOps By Rultor.com We recommend IntelliJ IDEA

mvn codecov

Hits-of-Code PDD status License

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

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

.github/workflows/reports-check.yml actions
  • actions/checkout v4 composite
  • tracehubpm/reports-check-action master composite
.github/workflows/codecov.yml actions
  • actions/cache v3 composite
  • actions/checkout v4 composite
  • actions/setup-java v3 composite
  • codecov/codecov-action v3 composite
.github/workflows/latexmk.yml actions
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
  • yegor256/latexmk-action 0.9.0 composite
.github/workflows/mvn.yml actions
  • actions/cache v3 composite
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
  • actions/setup-java v4 composite
.github/workflows/pdd.yml actions
  • actions/checkout v4 composite
  • volodya-lombrozo/pdd-action master composite
.github/workflows/plantuml.yml actions
  • EndBug/add-and-commit v9 composite
  • actions/checkout v4 composite
  • holowinski/plantuml-github-action main composite
.github/workflows/xcop.yml actions
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
  • g4s8/xcop-action v1.3 composite
.github/workflows/year.yml actions
  • FantasticFiasco/action-update-license-year v3 composite
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
Dockerfile docker
  • openjdk 17-jdk build
pom.xml maven
  • 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