Skip to content

nikhilsbhat/gocd-cli

Repository files navigation

GoCD commandline interface

Go Report Card shields shields shields shields

command-line interface for GoCD that helps in interacting with GoCD server.

Introduction

While GoCD offers a user interface for performing various tasks, this CLI is designed for administrators responsible for managing GoCD. It aims to provide CLI-based functionality equivalent to the UI.

This tool communicates with the GoCD server's API to perform tasks such as encrypting and decrypting secrets, retrieving lists of pipelines, creating configuration repositories, and more.

This CLI utilizes the GoCD Golang SDK. If you encounter a bug with the CLI, it likely originates from the SDK.

Requirements

  • Go 1.17 or above . Installing go can be found here.
  • Basic understanding of CI/CD server GoCD and GoCD golang sdk.

Authorization

The authorization configuration for GoCD can be locally cached for future use, streamlining subsequent operations.

The command auth-config will do the work.

# Running the below command should cache configurations under $HOME/.gocd/auth_config.default.yaml.
# Here 'default' is the profile of GoCD. And profile would help in handling multiple GoCD server with same CLI.
# If no profile is set, it defaults to 'default'. The profile can be set using flag '--profile'.
gocd-cli auth-config store --server-url <gocd-url> --username <username> --password <password>

# Running below command by setting --profile would save cache under $HOME/.gocd/auth_config.central.yaml.
gocd-cli auth-config store --server-url <gocd-url> --username <username> --password <password> --profile central

# User creds cached can be validated using below command.
gocd-cli who-am-i
# The response to the above command should be:
# user: admin

# Once we have authorization configurations cached, we do not need to pass the credentials every time we invoke the cli.
gocd-cli environment list

Update

The gocd-cli will display any pending updates in a diff format, similar to how it is commonly done in other CLI tools such as Terraform.

update

Documentation

Updated documentation on all available commands and flags can be found here.

Installation

  • Recommend installing released versions. Release binaries are available on the releases page.

Homebrew

Install gocd-cli on macOS

brew tap nikshilsbhat/stable git@github.com:nikhilsbhat/homebrew-stable.git
# for latest version
brew install nikshilsbhat/stable/gocd-cli
# for specific version
brew install nikshilsbhat/stable/gocd-cli@0.2.5

Check repo for all available versions of the formula.

Docker

Latest version of docker images are published to ghcr.io, all available images can be found there.

docker pull ghcr.io/nikhilsbhat/gocd-cli:latest
docker pull ghcr.io/nikhilsbhat/gocd-cli:<github-release-tag>

Build from Source

  1. Clone the repository:
    git clone https://github.com/nikhilsbhat/gocd-cli.git
    cd gocd-cli
  2. Build the project:
    make local.build

Note

  • The gocd-cli pipeline validate-syntax command uses the GoCD plugin binary to validate the pipeline's syntax.
  • Since the plugins are in JAR format, Java must be installed on the machine where the command will be executed.