Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hashicorp/composite-action-framework-go
https://github.com/hashicorp/composite-action-framework-go
crt
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/hashicorp/composite-action-framework-go
- Owner: hashicorp
- License: mpl-2.0
- Created: 2022-07-11T14:27:14.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-11T20:47:21.000Z (over 1 year ago)
- Last Synced: 2024-09-28T12:42:46.811Z (3 months ago)
- Topics: crt
- Language: Go
- Homepage:
- Size: 115 KB
- Stars: 5
- Watchers: 7
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Composite Action Framework Go
A library of packages for writing _composite_ GitHub Actions in Go.
---
_This is intended for internal HashiCorp use only and is not generally supported for other users._
---
This is different from other Go GitHub Actions libraries which are focussed on
writing standalone actions that just run a go binary and then exit.## Why Composite Actions?
Composite actions allow the composition of multiple other actions as
well as arbitrary build steps together in a single action. This means
that composite actions have the full actions ecosystem available.Composite actions can also present some challenges:
- Need to be able to run discrete chunks of logic in separate steps.
- Need to be able to share configuration and calculated values between steps.
- When complex logic is involved, need to be able to test it and share it
with other codebases.## The Implied Strategy
This framework is intended to help you to write Go-based composite actions
by implementing a CLI to do the heavy lifting, and embedding calls to that
CLI in the action.yml.The CLI package `./pkg/cli` is designed so that
each defined command is able to act as the entire CLI, or is able to be
embedded in another similar CLI and become a subcommand there.This means that functionality written to support an action can be embedded
inside other tools, to be run locally, for instance.