Releases: clintjedwards/gofer
v0.7.0
v0.7.0 (July 11, 2024)
Yes I rewrote it in Rust. Yes, I'm aware of the meme.
To be honest this was just a lot of fun. The majority of Gofer's actions
are purely just state machine triage, so since Golang doesn't really have
great enums that made things awkward in a lot of places.
The trade off being that Go is SIGNIFICANTLY easier to write concurrent
code with. Async Rust is obtuse in a lot of areas, especially when debugging.
I started down the path of trying to switch from GRPC to REST and
from that discovered
dropshot...and the rest was history.
Some of the bigger changes:
I just got really tired of troubleshooting issues within GRPC and having to deal with protobuf types. I'm still torn about
what is the correct chicken or egg order. Do you write a spec first and then generate code or do you write code that autogenerates the spec? My inclination is the former because
while convenient, code that generates spec makes refactors a bit harder. I believe dropshot is working on a way to define traits and then generate a spec from that. Which might
be a bit easier.
Some of the smaller ideas like interactive installation were just straight up removed. They were only half baked and the implementation was an eyesore.
It wasn't worth the time reimplementing them.
Before I created a documentation site that had to be hosted on it's own. Instead I think it's a bit more convenient to have those docs be connected with
the verison of Gofer you're running and be able to be accessed no matter where you host it.
Gofer is very much event based even though I tried to avoid that paradigm on the first write. This rewrite doesn't go full events but the event system is
much better now and used for some of the more critical parts of the app. The previous solution of passing around state with god structs and channels was good
but caused a little bit too heavy coupling for some part of the app. Making them hard to refactor and hard to reason about. Much more work needs to be done
on this front.
v0.6.2
v0.6.2 (March 6, 2024)
IMPROVEMENTS:
- Github Extension Back online: Previously the Github extensions was left behind in the extensions refactor. Now
it's back to a working state.
BUG FIXES:
- Multiple Bootstrap Tokens: Previoulsy there was a bug where multiple bootstrap tokens could be created.
v0.6.1
v0.6.0
v0.6.0 (September 18, 2023)
FEATURES:
- Container Attaching: Added the ability to attach to containers, enabling real-time troubleshooting of containers. [24851d2]
IMPROVEMENTS:
- Github Extension Revival: Brought the Github extension back to life after it became inoperable due to a massive refactor for extensions. It is now restored to a pre-alpha state for testing and further improvements. [79a9ac2]
- Extension Installations: Completely revamped the extension installation process for better interactivity and user experience. Extensions can now interact intelligently with users during installation, providing real-time feedback. [20ea14b]
- Documentation Updates: Improved the readability of documentation and fixed various errors, including a broken link. [0f76630, 0dc073a, 1af2f69]
BUG FIXES:
v0.5.0
v0.5.0 (April 16, 2023)
Many, many breaking changes. A lot of major parts have been refactored to work better and closer to the values/vision.
FEATURES/IMPROVEMENTS:
- Trigger/Component/Extension Refactor: Extensions now act as independent services which call upon Gofer using the same API as everything else. This helps get rid of special interactions for extensions and standardize all interactions with Gofer.
- Removed Common Tasks: Extensions and user created libraries will replace the need that common tasks were meant to fill. Common tasks made the code hard to work with and Gofer harder to understand and were generally against the design goals.
- Pipeline extend command: The Cli has been updated to provide a quicker way to extend a pipeline.
- Event models package: Previously an internal package the Event models package lists different event types that Gofer emits from it's API. Making this package public supports the design choice to have the CLI not depend on any special internal packages that other devs wont have and makes it so de-serializing events is easier.
- Clearer event names: Event names have been updated to be clearer to read and understand.
- Global secrets now support namespaces: Global secrets previously were only meant for use in extensions and common tasks. This has changed and global secrets now can be used in normal pipelines. To allow proper scoping of those secrets global secrets has been given a namespace filter that accepts regexes.
- Dev mode updated: Dev mode previously was a flag that alterned the code paths such that developmenet was easy. While this was great, it wasn't modular enough and testing specific things was impossible without turning off ALL of dev mode. Instead the root of the cli commands has been given a
--dev-mode
flag, that turns on a new set of configuration options for dev. - Configuration refactor: Configuration was previously handled by a bunch of separte libraries which handled different parts of what is a fairly complicated interactions of env vars, flags, and configuration file. Instead Gofer has moved over to koanf which gets rid of a bunch of packages and makes it so the config package is more coherent. As a by product env vars are not somewhat more tricky and require double underscores to separate some levels of configuration. A full list of the configurations can be found in CLI help.
- Versioned Pipelines!: One of the long-time goals for this project was to provide versioned pipelines so that pipelines can be deployed using reliable methods. Pipelines now support the concept of deploying, updating, and versioning. This gets rid of a lot of bad design choices around how pipelines are updated and makes it less of a dance and more of a straightforward process.
- Extensions removed from pipeline config: In relation to versioned pipelines the ability to set triggers up using the configuration file has been removed. This was a poor design choice because the song and dance of swapping over an extension when a user updated a pipeline was incongruent with versioned pipelines. There was no good way to canary a pipeline if the two versions of the pipeline had differnet extensions trying to run them at the same time.
- Auto-Inject token to task: Previously we would auto-inject a Gofer token into a task so that it could talk back to the API without the user having to do this themselves. This was updated to instead be a flag that the user must opt into first.
BUG FIXES:
A lot
v0.4.1
v0.4.1 (November 9, 2022)
Hotfix: The Run
CLI subcommand was mistakenly left as the Runs
CLI command. Fixed.
v0.4.0
v0.4.0 (November 9, 2022)
- Multiple doc spelling fixes and reorganizations.
- Rust SDK is now on part with Golang SDK.
- Added more documentation around triggers and how to create a trigger.
- Golang SDK has more documentation.
v0.3.1
v0.3.1 (October 25, 2022)
Documentation updates:
- Updated demo README png.
- Documentation site intro is now the same as the README to keep things from diverging.
- Multiple typo and bug fixes.
- New
pipeline config
section added.
v0.3.0
v0.3.0 (October 13, 2022)
Fully working product and documentation. Somewhat of an initial release. From here on out changelogs will actually be populated.
v0.2.0-alpha
v0.2.0-alpha (October 4, 2022)
- Divided SDKs into multiple modules to be more clear.
- Bugfix for commonTasks