Skip to content

Latest commit

 

History

History
176 lines (133 loc) · 8.13 KB

README.md

File metadata and controls

176 lines (133 loc) · 8.13 KB

Development Kit

This project provides the tools to install a cloud native software development environment. The development environment supports versions of the bash shell and the vim editor that have been enhanced through completions and plugins to support a cloud native environment. In addition the project installs the go language and relevant packages along with the git command and other necessary development software.

Features

These are the core features of the Development Kit:

  • It can be bootstrapped by downloading a single shell script and running it
  • It supports most Linux environments and MacOS
  • It runs on bare metal, on laptops, in a container or in a virtual machine

Getting Started

A bash bootstrap script must be downloaded to the target device and run to install the Development Kit. This script first installs curl, git and salt on the target device and then clones the PavedRoad Development Kit repository.

See the information needed to perform this bootstrap: Install.

SaltStack

SaltStack (in masterless mode) is used to install the development environment. Thus the bootstrap script runs salt-call to apply the salt states in the cloned repository to the target device. Running the bootstrap script installs the complete development environment. The salt states generally use the local package manager to do the installations. In some cases a binary install is required in order to get a later version. Also a build from source is required for vim to set the build options.

Development Environment

This release provides a modest development environment with the following:

  • Tools to enhance the usage of the bash shell
  • The zsh shell and tools as an alternative to bash
  • The vim editor and tools to enhance its usage
  • The go language along a number of relevant go packages
  • The git command and other necessary development software

Future releases will add new curated software as it makes sense.

Bash

The bash shell, bash aliases and bash completions are integral parts of any reasonable development environment. It is assumed that bash is already installed on most Unix systems. However on some systems an alternative version of bash may be installed in /usr/local/bin.

Zsh

The zsh shell is a popular alternative to the bash shell. It is assumed that zsh is not installed by default on most Unix systems and it will be installed as part of the Development Kit using the local system package manager. On some systems where zsh is already installed then the latest version of zsh may be installed in /usr/local/bin.

Shell Completion

Completion of commands is especially important in a development environment as there are commands like git that have many sub commands and options.

It is not assumed that the bash-completion package is installed so it will be installed if it is missing. Completions are installed for zsh as part of the zsh package. Two additional packages of zsh completions are installed. Some command packages install their own completion files. If no completion files are installed by default for specific commands then individual completion files will be installed if they can be found.

Extra completion packages and individual completion files are installed in two separate directories for bash and zsh in /usr/local/share. See information on where completions are installed, how they are initialized, and the complete list of completions installed: Shell Completions.

Vim

The vim editor can be enhanced to become a complete IDE in its own right. This is accomplished by installing vim plugins. Plugins can provide word completion that is either based on the programming language of the file being edited or statistical usage of words in the file. Plugins can add development related shell commands that can be run from inside of vim with the output going into vim buffers. Plugins can also open extra windows with more capabilities such as directory traversal, showing project tags, and project wide search and replace.

Further these plugin commands can be mapped to one or two keystrokes for execution. This allows one to work without ever having to leave vim and this is what turns vim into an IDE. If the version of vim on the target device is not 8.0 or later then the latest version of vim is built and installed.

See the complete list of plugins installed: Vim Plugins.

Golang

The go language has become popular for developing microservices for the cloud native environment. Many go packages are available either as development tools or as base libraries that can be incorporated into development projects. Some of these go tools may have been developed as shell completions or vim plugins. This project installs go package tools as well as completions and plugins. Shell aliases are also installed for golang.

See the complete list of packages installed: Go Packages.

Git

One of the most important pieces of development software is the git system. The git system has been enhanced by installing shell completions and vim plugins. Shell aliases are installed for git as well as a shell prompt with git features. The git prompt is set up for both bash and zsh with three sections: the user@host, the current directory, and the git branch. The prompt is set up for both bash and zsh with green, blue and yellow colors respectively for the above three sections.

Software

Two package installers that are not fully supported by SaltStack are installed and used by this project, pip3 and snap. This project installs several systems for running cloud native applications such as docker, microk8s, and multipass. Installed cloud native applications include docker-compose, kompose, kubebuilder, kubectl, kustomize, skaffold, stern and tilt. Other development applications include ctags, direnv, fossa-cli, fzf, graphviz, jq, nodejs, ripgrep, and sonar-scanner.

See the complete list of software installed: Development Software.

Swagger

In addition to the cloud native software the Development Kit includes the ability to create Swagger 2.0 REST API specifications and to generate golang client and server code. This is accomplished by installing the go package go-swagger and the UI application pretty-swag. The go-swagger package is an implementation of Swagger 2.0 that is specific to golang and is more versatile than swagger-codegen. The pretty-swag application generates HTML from Swagger specifications and has extensive configuration ability to provide customized output.

Platforms Supported

Platforms That Should Work

  • Ubuntu LTS releases starting with version 16.04
  • Ubuntu supported interim releases
  • CentOS releases starting with version 7
  • Fedora releases starting with version 29
  • MacOS releases starting with version 10.13
  • openSUSE Leap releases starting with version 15.0

Platforms Tested

For detailed information on platforms that have been tested see: Platforms Tested.

Feedback is much appreciated on installing the Development Kit on other distributions, see: Support.

Links to More Information

Getting Help

For contact information or to report a bug see Support.

How to Contribute

For guidelines on contributions see Contributing.

Code of Conduct

This project follows this Code of Conduct.

License

This project is licensed under the following License.