tr

package module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 22, 2024 License: 0BSD Imports: 14 Imported by: 1

README

Task-Runner

Handling CI-related tasks such as building, testing, and deploying can be automated using bash scripts, but these can quickly get messy. Managing multiple processes, handling cleanup, aborting on failure, adding pretty colored output, and more can lead to complex bash code. That's why Task-Runner was created: a simple, open source tool to replace bash scripts with cleaner, more maintainable CI logic written in Golang.

Installation

go get github.com/ocelot-cloud/task-runner

Usage Example

var backendDir = "../backend"
var frontendDir = "../frontend"
var acceptanceTestsDir = "../acceptance"

func TestFrontend() {
	tr.PrintTaskDescription("Testing Integrated Components")
	defer tr.Cleanup() // shuts down the daemon processes at the end
	tr.ExecuteInDir(backendDir, "go build")
	tr.StartDaemon(backendDir, "./backend")
	tr.WaitUntilPortIsReady("8080")

	tr.ExecuteInDir(frontendDir, "npm install")
	tr.StartDaemon(frontendDir, "npm run serve", "VITE_APP_PROFILE=TEST")
	tr.WaitForWebPageToBeReady("http://localhost:8081/")
	tr.ExecuteInDir(acceptanceTestsDir, cypressCommand, "CYPRESS_PROFILE=TEST")
}

The idea is to write simple functions like this and build a CLI tool, e.g., by using cobra, to call these functions. The final use of the CLI tool might look like this:

go build
./my-task-runner test frontend

This approach helps you create a modern and scalable CI infrastructure. Here is an example of how to initialize the tool in the main function:

func main() {
	// Optional. If you enable this, when a process hangs, you can press "CTRL" + "C" which will 
	// call the cleanup function and try to gracefully shut down the process. If that does not work, 
	// it will forcefully exit the program.
	go tr.HandleSignals()

	// Optional. Is applied to each command called.
    tr.DefaultEnvs = []string{"LOG_LEVEL=DEBUG"}

    // Optional. Is called as sub-function whenever tr.Cleanup is called
	tr.CustomCleanupFunc = MyCustomCleanupFunction

	// Sample usage of cobra library
	if err := rootCmd.Execute(); err != nil {
		tr.ColoredPrintln("\nError during execution: %v\n", err)
		tr.CleanupAndExitWithError()
	}
}

The tool has only been tested on Linux.

License

This project is licensed under the Zero-Clause BSD license.

About

This project is a side-product of Ocelot-Cloud.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CustomCleanupFunc = func() {

}
View Source
var DefaultEnvs []string

Functions

func Cleanup

func Cleanup()

func CleanupAndExitWithError

func CleanupAndExitWithError()

func ColoredPrintln

func ColoredPrintln(format string, a ...interface{})

func ExecuteInDir

func ExecuteInDir(dir string, commandStr string, envs ...string)

func HandleSignals

func HandleSignals()

func PrintTaskDescription

func PrintTaskDescription(text string)

func StartDaemon

func StartDaemon(dir string, commandStr string, envs ...string)

func WaitForWebPageToBeReady

func WaitForWebPageToBeReady(url string)

func WaitUntilPortIsReady

func WaitUntilPortIsReady(port string)

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL