condo.foobar.si

Condo provides a way to present Trello cards on a timeline and simplify on-going and future task management.

Additionally it integrates with Trello, Slack, Bitbucket and Github for even better experience.

Trello commands

@condo create $branch - create branch and connect it with card

@condo connect $branch - connect trello card with speciffic branch

@condo disconnect $branch - disconnect trello card with speciffic branch

@condo test - merge branches connected with this card to preprod

@condo tested - mark branches connected with this card as tested and prepared to release - create pr

@condo release - create quick release for branches connected with this card - confirm pr

Automatic versioning

majorVersion.minorVersion.patch

Each version change must reset trailing versions.

Feature releases may increase minor or major version.

Security and bug fix relases may increase patch version.

Breaking changes must increase major version.

Deprecated changes must increase minor or major version on adding.

Deprecated changes must increase major version increase on removal.

Simplified branch statuses

  • New - not synced branches
  • Syncing - syncing branch
  • Ahead - ahead of master
  • Merged - merged into develop
  • Releasing - merged into release
  • Released - merged into master
  • Develop - main develop / staging branch
  • Release - release branches
  • Master - master / main / production branch

Other

Creating branches

Feature branches should be branched from master or develop branch.

Bugfix branch may be branched from master or develop branch.

Security branches may be branched from master only.

Deploying to staging

Staging deploys are always automatic via webhook.

Preparing release

When development branch is stable we can branch it to release-vx.x branch.

Possible dependency updates are applied in release branch.

Release branch is merged into master.

Master branch is tagged.

Master is merged into develop branch.

Preparing security release

When ready, security branch gets branched directly to release branch.

No dependency updates (except related to security fix) are changed.

Release branch is merged into master.

Master branch is tagged.

Master is merged into develop branch.

Deploying to production

Production deploys are always manual.

All tests, except for security fixes, should pass when deploying to production.

Nightly builds

Nightly builds are automatically tagged on develop branch.

Connecting condo to your project

GIT

  • Add condo webhook: https://condo.foobar.si/webhook
  • That's it, condo will automatically call

Task sources

  • Trello
    • Access to linked boards
    • Watches linked cards
  • Bitbucket
    • Access to linked repositories
    • Watches linked issues
  • Github
    • Access to linked repositories
    • Watches linked issues

Timeline

We want to build timeline for all Trello tasks. Bitbucket and Github issues should have corresponding Trello tasks.

We do not know which user will work for how long on this task, so we need to collect that. We will measure that in minutes. Also, there can be many users working on each card.

Each card may depend on another card by putting depending card in checkbox list.

Card deadline date may be defined in Trello.

Weights (priority, difficulty and gain) and human resources (people) are defined as YAML at the end of Trello card description after *condo* tag.

            *condo*
            priority: 3
            difficulty: 7
            gain: 2
            people:
              bojan: 120
              nemanja: 120
              tadej: 120
            branch: f-12-bla-foobar-branch
        

Timeline is split into 2 parts. First part shows work in progress tasks. Second timeline shows coming up tasks.

first task second task third task | first task second task third task

Since there could be tasks running concurrently we additionally split each task by user.

Bojan: first really long task second task third long task | first task task third task
Nemanja: task second task time third task that takes | first task second task some time third task

Coming up

Tasks that were linked, but were not started - no branch, pull request or proper label.

Start action will move task to work in progress section.

Any task can be started - dev, planning, maintenance, design or anything else. Tasks are not git dependent.

Task / Issue Type Duration Status Rating
Task bla foobar Feature 4 days blocking 10 * 10 * 10 = 1000 start
Lorem ipsum dolor sit Bug 2 hours blocking 10 * 8 * 9 = 720 start
Ipsum dolor sit task Improvement 12 hours blocking 5 * 5 * 5 = 125 start
Ipsum dolor sit task Task 2 weeks blocking 1 * 1 * 1 = 1 start

Work in progress

Tasks that have connected branches, or have labels "in progress", "review" or "done", but are not released.

Creating branch will create branch from Trello card url and item type - f-34-some-card. In which repository? Do we need project?

Creating pull request will create pull request on Bitbucket / Github from linked branch.

Task / Issue Project Branch Pull request Status Collaborators
#1234 - Some task name Comms f-12-some-branch Pull request name
Another request name
todo
#1234 - Some task name Comms Hub create create todo
#1234 - Some task name Comms Docs b-43-anothe-branch create in progress
#1234 - Some task name Comms Docs b-43-anothe-branch [WIP] Update something under review
#1234 - Some task name Comms Status h-23-change-sth create merged
#1234 - Some task name Medium create create released

Current

Completing (sub)task will mark Trello (sub)card (or subtask) as done.

Postponing task will show next task. Postponing subtask will show next subtask.

#1234 - Some task name

Bitbucket issue #123
Trello card #313
f-45-some-branch-name
#4343 - Some sub task name

Releases

Releases should be mainly manually scheduled - like plan to release weekly release every tuesday at 12:00, daily release every day at 14:00, security and hotfixes immediately.

Releases are created manually or by selecting merge branch.

Every branch merge to master branch presents a commit.

Task Pull request Branch Version Date Status
Some task name
Another task name
Pull request name
Merged request name
Another merged request name
r-some-release v1.2.0 (minor) created
Some task name
Foobar name
Some task name that is long
Task name
Another task name
Pull request name
r-another-lengthy-release v1.1.0 (minor) preparing
Some task name
Another task name
Pull request name r-some-release v1.0.1 (patch) ready
Some task name
Pull request name r-some-release v1.0.0 (major) released