Overview of Our Workflow
We'll begin with a detailed overview of the dependency update and release workflow, covering the key steps from update identification through automated testing and release.
📚 Part 2 of 3 in Update and Release
- Why Build an Update and Release Workflow?
- Overview of Our Workflow
- Final Post
- Previous: Why Build an Update and Release Workflow?
- Next: Final Post
Inputs to a release
--- config: look: handDrawn theme: forest displayMode: compact --- graph LR A["Development
Process"] --> C["Pull
Request"] B["Dependency
Check Process"] --> C C --> D["CI
Testing"] C --> E["Code
Review"] D --> F{"Tests
Pass?"} E --> G{"Review
Approved?"} F -->|Yes| H["Ready to
Merge"] G -->|Yes| H F -->|No| I["Fix
Issues"] G -->|No| I I --> C H --> J["Merge to
Main Branch"] J --> K["CircleCI
Periodic Trigger"] K --> L["Release
Process"] L --> M["Update Version
Numbers"] M --> N["Publish
Release"]
The diagram describes the processes, outputs and inputs through the release process that contribute to building and, ultimately, releasing a new version of the software.
The development and dependency check processes create pull requests to facilitate the CI testing and review. Once passed, the changes are merged into the main branch.
CircleCI triggers the release process weekly on the main branch, updates the version numbers, and publishes the release.
Schedule of release workflow
--- config: look: handDrawn theme: forest displayMode: compact --- gantt title Release Cycle Schedule dateFormat X axisFormat %s Today : vert, v1, 12, 1 section Standard Libraries/Tools Development Phase :done, dev1, 1, 8 Dependency Updates :done, dep1, 6, 9 Release Workflow :done, rel1, 9, 10 Rest/Buffer Period :done, rest1, 10, 11 section Docker Container (Offset) Development Phase :done, docker-dev1, 1, 2 Dependency Updates :done, docker-dep1, 1, 3 Release Workflow :done, docker-rel1, 3, 4 Rest/Buffer Period :done, docker-rest1, 4, 6 Development Phase :active, docker-dev2, 6, 13 Dependency Updates :active, docker-dep2, 11, 14 Release Workflow :docker-rel2, 14, 15 Rest/Buffer Period :docker-rest2, 15, 16
The Gantt chart displays the release cycle schedule. Development occupies most of the cycle, dependency updates run in parallel with the end of development, and the release workflow executes in the final phase.
The cycle concludes with a rest period or buffer time for remediation if issues arise.
Most libraries and tools follow a standard release schedule. However, some schedules are offset to accommodate dependencies. For example, the Docker container's dependency updates begin after the development cycles of its underlying tools are complete, allowing it to incorporate newly released versions.
Release cycle duration varies between libraries and tools based on security requirements and customer expectations. Components with frequently updated dependencies may require patch releases on a similar cadence to maintain currency.
📝 Series Navigation
- Previous: Why Build an Update and Release Workflow?
- Next: Final Post
- Series Overview