Kostiantyn Kalynovskyi 3ca3a34fbf Add NewTestBundle function to testutils package
This commit adds small helper function in testutils module, that would
help with testing modules that relay on bundle interface. The function
will take directory with testdata as a parameter, and load all files in
it into its fakefile system, allowing bundle to get those files and
render required yaml/kustomize files storing them as airship documents
in the returned bundle.

Change-Id: Ib55180cc720c42cab77626601d9ec0d6151b8454
2019-11-04 18:28:13 +00:00
2019-11-01 02:41:38 +02:00
2019-06-06 09:30:51 -05:00
2019-06-25 08:11:57 -05:00
2019-10-04 15:31:45 +00:00
2019-11-01 02:41:38 +02:00
2019-11-01 02:41:38 +02:00

airshipctl

Custom Plugins Tutorial

This tutorial walks through a very basic plugin for airshipctl. For a more involved example, see Plugin Support

The following steps will get you started with a very rudimentary example plugin for airshipctl. First, create a directory for your project outside of the GOPATH:

mkdir /tmp/example
cd /tmp/example

This project will need to be a go module. You can initialize a module named example with the following:

go mod init example

Note that modules are a relatively new feature added to Go, so you'll need to be running Go1.11 or greater. Also note that most modules will follow a naming schema that matches the remote version control system. A more realistice module name might look something like opendev.org/airship/exampleplugin.

Next, create a file main.go and populate it with the following:

package main

import (
	"fmt"
	"os"

	"opendev.org/airship/airshipctl/cmd"
	"github.com/spf13/cobra"
)

func main() {
	rootCmd, _, err := cmd.NewRootCmd(os.Stdout)
	if err != nil {
		fmt.Fprintf(os.Stderr, "Failed to create root airshipctl command: %s\n", err.Error())
		os.Exit(1)
	}

	exampleCmd := &cobra.Command{
		Use:   "example",
		Short: "an example plugin",
		Run: func(cmd *cobra.Command, args []string) {
			fmt.Fprintln(os.Stdout, "Hello airshipctl!")
		},
	}

	rootCmd.AddCommand(exampleCmd)
	if err := rootCmd.Execute(); err != nil {
		fmt.Fprintf(os.Stderr, "Failure during execution: %s\n", err.Error())
		os.Exit(1)
	}
}

And finally, run the build command to download and compile airshipctl:

go build -o airshipctl

Now that you've built airshipctl, you can access your plugin with the following command:

./airshipctl example

You may have noticed that this example ignores the second return value from cmd.NewRootCmd. This value is a pointer to the AirshipCTLSettings, which contains various configuration details, such as the debug flag and the path to the config file*. A useful paradigm involves embedding this object into a custom ExampleSettings struct. This can be seen in the demo repo.

For a more involved example, see Plugin Support

* Work in progress

Description
A CLI for managing declarative infrastructure.
Readme 380 MiB
Languages
Go 85.7%
Shell 9.6%
Dockerfile 1.4%
Jinja 1.3%
Makefile 1.2%
Other 0.8%