Giter VIP home page Giter VIP logo

kubicorn's Introduction

Create, manage, snapshot, and scale Kubernetes infrastructure in the public cloud.

Build Status Go Report Card

Phonetic pronunciation: KEW - BHIK - OH - AR - IN

Project Update

  • Kubicorn will be going through a breaking API change as we adopt the upstream cluster API
  • Kubicorn has moved to github.com/kubicorn/kubicorn permanently.
  • Kubicorn will be targeting a stable release shortly!

About

kubicorn is a free and open source project that solves the Kubernetes infrastructure problem and gives users a rich golang library to work with infrastructure.

kubicorn is a project that helps a user manage cloud infrastructure for Kubernetes. With kubicorn a user can declaratively create new clusters, modify and scale them.

NOTE: This is a work-in-progress, we do not consider it production ready. Use at your own risk and if you're as excited about it as we are, maybe you want to join us on the #kubicorn channel in the Kubernetes Slack community.

Previously, we mainly used a channel in the Gophers Slack community, which is still active, but we're moving to the Kubernetes Slack. You can also get involved and send your questions to our public mailing list.

We hold developer calls biweekly on Tuesdays, 1pm Pacific Time. By joining the mailing list, you'll get a calendar invite.

Proudly packaged with Golang dep

Core Values

Community first.

This is a community driven project. We love you, and respect you. We are here to help you learn, help you grow, and help you succeed. If you have an idea, please share it.

Developer empathy.

We are all software engineers, and we all work in many different code bases. We want the code to be stable, and approachable. We strive for clean and simple software, and we encourage refactoring and fixing technical debt.

Operational empathy.

We want our tool to work, and work well. If an operator is running kubicorn it should feel comfortable and make sense to them. We want operators to feel empowered.

Infrastructure as software.

We believe that the oh-so important layer of infrastructure should be represented as software (not as code!). We hope that our project demonstrates this idea, so the community can begin thinking in the way of the new paradigm.

Rainbows and Unicorns

We believe that sharing is important, and encouraging our peers is even more important. Part of contributing to kubicorn means respecting, encouraging, and welcoming others to the project.

Installing

$ go get github.com/kubicorn/kubicorn

..or read the Install Guide.

Quickstart

This asciicast shows how to get a Kubernetes cluster on DigitalOcean using kubicorn in less than 5 minutes:

asciicast

Concepts

Create

kubicorn lets a user create a Kubernetes cluster in a cloud of their choice.

Apply

Define what you want, then apply it. That simple.

Scale

kubicorn is powered by a state enforcement pattern. A user defines the intended state of Kubernetes infrastructure, and kubicorn can enforce the intended state.

Enforce

kubicorn is built as a library and a framework. Thus allowing it to be easily vendored into operator and controller patterns to enforce intended state of infrastructure.

Documentation

Name Description Link
Install Install guide for Kubicorn CLI install
Environmental Variables Master list of supported environmental variables envvars
Kops vs Kubicorn Blog about kubicorn with comparison table nivenly.com/kubicorn
Azure Walkthrough A walkthrough guide on installing Kubernetes on Azure walkthrough
AWS Walkthrough A walkthrough guide on installing Kubernetes on AWS walkthrough
DigitalOcean Walkthrough A walkthrough guide on installing Kubernetes on D.O. walkthrough
DigitalOcean Quickstart A quickstart asciicast on installing Kubernetes on D.O. asciinema
Google Compute Engine Walkthrough A walkthrough guide on installing Kubernetes on GCE walkthrough
OVH Walkthrough A walkthrough guide on installing Kubernetes on OVH walkthrough
OVH Video A quickstart asciicast on installing Kubernetes on OVH asciinema
Packet Walkthrough A walkthrough guide on installing Kubernetes on Packet walkthrough
AWS Video A step by step video of using Kubicorn in AWS video
DigitalOcean Video A step by step video of using Kubicorn in DigitalOcean video
Tech N Talk Deep Dive A technical deep dive courtesy of RedHat youtube

kubicorn's People

Contributors

adnxn avatar aledbf avatar alejandroesc avatar alex1x avatar annhill avatar boingram avatar cschiewek avatar davidewatson avatar deitch avatar detiber avatar dimi-kr avatar fabriziopandini avatar geojaz avatar krisnova avatar liztio avatar matyix avatar metmajer avatar mhausenblas avatar mydigitallife avatar mzamot avatar ncdc avatar paulczar avatar prateekgogia avatar richard87 avatar rickyrajinder avatar stealthybox avatar tedwardd avatar vkorbes avatar xmudrii avatar zoidyzoidzoid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kubicorn's Issues

install fails with `undefined: bootstrap.Asset`

When I try to install I get an error about bootstap.Asset being undefined. I believe its looking for a function inside the bootstrap.go file that was removed here - #21

$ go get github.com/kris-nova/kubicorn
# github.com/kris-nova/kubicorn/cloud/amazon/resources
../go/src/github.com/kris-nova/kubicorn/cloud/amazon/resources/launchconfiguration.go:165: undefined: bootstrap.Asset

Build a more reliable testing infrastructure?

It seems that the travis CI is just a make test, I don't think it will be good enough if more PR will be coming this way. Thus, to build a reliable testing infrastructure seem to be on the critical path. Thoughts?

We need IDs out of the API

Having IDs in the API is going to kill us moving forward. They were there at first to help with our POC, but we need them gone gone gone.

I can provide more information if anyone wants to take this.

Add Volumes

We need to add volumes definition to the API, and add it to any existing implementations

Test Harness

We need to flesh out a test harness for the following

  1. Integration tests
  2. Unit tests

I have a credit card, and am happy to share if anyone wants to take this and set up testing accounts anywhere.

  • Will need make targets
  • Will need an example test or two that demonstrate how the harness works
  • Will need to add documentation on how to use the harness

Github Pages

We need someone to build out the framework for github pages for

  • kubicorn.com
  • kubicorn.io

Implement Openstack

Hey,
Unfortunately I don't have access to EC2 or Azure, it is possible to create some sort of profile for Openstack environment? If so I would be happy to help (I work on openstack a lot)

Please add additional instruction to build kubicorn from source

Have added a short instruction for newbies to build kubicorn from source:
https://github.com/kubernauts/kubicorn/blob/master/docs/walkthrough.md

This part is new after the line:
$ go get github.com/kris-nova/kubicorn:

If you're new to Go, before you proceed you've to set GOPATH and build the kubicorn binary from source. For this you'd need to build go-bindata and provide it in your path:

Set GOPATH in your bash profile:

$ vi .bash_profil
export GOPATH=/Users/<your user>/go
export PATH=$GOPATH/bin:$PATH
$ go get github.com/jteeuwen/go-bindata
$ cd $GOPATH/src/github.com/jteeuwen/go-bindata/go-bindata
$ go build
$ cp go-bindata /usr/local/bin/

And run make from the src directory of kubicorn:

$ cd $GOPATH/src/github.com/kris-nova/kubicorn/
$ make

The kubicorn binary will get built and placed under $GOPATH/bin, run kubicorn -h to get the nice Unicorn:

$ kubicorn -h

The next thing

Please add it to the official walkthrough:
https://github.com/kris-nova/kubicorn/blob/master/docs/aws/walkthrough.md

Thanks kindly!

We need our API refactored

So one of the main goals of the project is to ultimately consume a community standard API that will work with Google!

The API is a work in progress that will live here: https://github.com/kris-nova/cluter-api

Furthermore, we need someone to audit and review this API, as it will be a good candidate for a starting point for the cluster API project.

I kind of hate the words we use now to represent things, can we please change them? I am terrible at naming things.

Kubernetes Version

This is a big one - we will need to start versioning our releases to support different k8s versions

Commands should provide some context on execution

Currently, when running for example kubicorn create the execution by default is silent. This is not a good UX, new users might think nothing happened. So after execution, the command should output a summary and suggest next steps, for example:

$ kubicorn create --name myfirstk8s --profile aws
I've created _state/myfirstk8s/cluster.yaml based on your input and now you can run kubicorn apply

E2E testing harness

We need to build an e2e suite that we can run to verify kubicorn is working. We can run this before a release and actually create/destroy clusters.

Again, I have a credit card if you want to hook shit up to the cloud.

Cheers!

Build in support for snapshots

Glossary

Snapshot: The process of creating an image
Image: The artifact created from taking a snapshot

  • We need to implement and flesh out the kubicorn snapshot command.
  • We need to delete the kubicorn image command

What is a snapshot?

A tarball.

A tarball that holds all relevant data to rebuild a Kubernetes cluster (both infra and app).

How do we make one?

We dump all the yaml into a directory and compress that shit up.

No seriously, that is what we do.
We need to pull the kubicorn cluster api into the directory, as well as all the yaml from kubectl

How do we apply one?

We do the reverse of the above.

Things you will need to do

  1. vendor kubectl
  2. write something that dumps all the yaml to disk
  3. write something that will compress/decompress the directory into a tarball
  4. verify you can create a cluster, then create some apps, then create and image
  5. nuke your cluster
  6. apply your newly created image
  7. verify it's the same
  8. win

API machinery improvements

Right now we are vendoring in API Machinery (good) but we aren't really using it all that well (bad)

Can we tidy up our API Machinery implementation and make it awesome?

Bypass password auth for SSH keys by global env var

We need to have an optional environmental variable to disable ALL password interactive auth (for our friends in CI/CD land)

Success Criteria

  1. The environmental variable is documented, and follows the standard KUBICORN_ prefix. (You can see examples in any of the cobra commands)
  2. The environmental variable is always called using os.Getenv and never cached
  3. Please define the new variable here https://github.com/kris-nova/kubicorn/blob/master/docs/envar.md

ssh: cannot decode encrypted private keys

kubicorn getconfig -n attractive-badger -v4
2017-07-17T11:44:46-04:00 [✔]  Selected [fs] state store
2017-07-17T11:44:46-04:00 [✔]  Loaded cluster: attractive-badger
2017-07-17T11:44:46-04:00 [✔]  Init Cluster
2017-07-17T11:44:46-04:00 [▶]  Running preprocessors
2017-07-17T11:44:46-04:00 [✖]  ssh: cannot decode encrypted private keys

I believe this is related to: krisnova/klone#13

We need a file parser

We need a package/tool/etc that takes a string

myString string

and attempts to turn it into another string

myString string

with the caveat being that we need the first string to represent some type of file resource, and the second string to represent it's content.


Examples:

~/data -> content
/tmp/data -> content
http://nivenly.com/data -> content
https://nivenly.com/data -> content
s3://something/data -> content

Signal Handler Interface

We need to create a global signal handler, that will reference an interface. Each reconciler should implement said interface so that we can handle POSIX signals globally.

If you are interested in coding we should talk, because I would want to hear your ideas! Otherwise I might just code this.

Clean up API object

We need to add the json:"" camelCase to the members, also omitonly most of them

Also we need to see which members we are/aren't using and remove any unused members

New user on-boarding

It would be great to have a walkthrough supporting new users how to do the basic steps

Kubicorn Logo

Who has mad art skills and likes to draw unicorns? Or maybe unicorns with gophers? Or maybe a gopher unicorn? gophercorn? kubigoph?

Ideally something we could put on the README.md and also render into ascii to replace the existing unicorn.

Force overwrite state store

When doing a create in a directory where the state store already exists, the tool barks and stops:

$ kubicorn create --name myfirstk8s --profile aws
2017-07-15T16:17:11-06:00 [✖]  State store [myfirstk8s] exists, will not overwrite

The user at this moment does not have enough information to know how to overcome the situation, for example by removing the state store like so: rm -R ./_state/myfirstk8s/.

nil pointer dereference on kubicorn create

  [~/dev/go/src/github.com/kris-nova/kubicorn]
erichole   $ kubicorn create -n eric
  [~/dev/go/src/github.com/kris-nova/kubicorn]
erichole   $ kubicorn apply -n eric -v 4
2017-07-15T10:49:27-06:00 [✔]  Selected [fs] state store
2017-07-15T10:49:27-06:00 [✔]  Loaded cluster: eric
2017-07-15T10:49:27-06:00 [✔]  Init Cluster
2017-07-15T10:49:27-06:00 [▶]  Running preprocessors: 0x143d780
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x130 pc=0x143d7ad]

goroutine 1 [running]:
github.com/kris-nova/kubicorn/cluster.ssh(0xc420094dc0, 0x19, 0xc420513b30, 0x1)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cluster/ssh.go:10 +0x2d
github.com/kris-nova/kubicorn/cluster.InitCluster(0xc420094dc0, 0x12, 0xc420513c68, 0x1)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cluster/init.go:19 +0xfa
github.com/kris-nova/kubicorn/cmd.RunApply(0x1f96600, 0x17e8400, 0x0)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cmd/apply.go:88 +0x31c
github.com/kris-nova/kubicorn/cmd.glob..func2(0x1f91bc0, 0xc420139940, 0x0, 0x4)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cmd/apply.go:38 +0x31
github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra.(*Command).execute(0x1f91bc0, 0xc4201398c0, 0x4, 0x4, 0x1f91bc0, 0xc4201398c0)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra/command.go:651 +0x23a
github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x1f92440, 0xc420010178, 0x0, 0x4)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra/command.go:726 +0x339
github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra.(*Command).Execute(0x1f92440, 0xc42025c000, 0x9ea)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra/command.go:685 +0x2b
github.com/kris-nova/kubicorn/cmd.Execute()
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cmd/root.go:45 +0x31
main.main()
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/main.go:20 +0x20

Implement CI/CD Testing

I have a credit card, if you have skills and opinions!

Goal

run make test for every PR and only allow merging on exit 0

Unable to fully delete cluster

erichole   $ kubicorn delete -n eric -v 4
2017-07-15T11:14:25-06:00 [✔]  Selected [fs] state store
2017-07-15T11:14:25-06:00 [▶]  asg.Actual
2017-07-15T11:14:26-06:00 [▶]  asg.Delete
2017-07-15T11:14:26-06:00 [✔]  Deleted ASG [eric.amazon-node]
2017-07-15T11:14:26-06:00 [▶]  lc.Actual
2017-07-15T11:14:27-06:00 [✖]  Unable to destroy resources for cluster [eric]: Found [0] Launch Configurations for ID [eric.amazon-node]

SCP Package

Okay so we use SSH to copy files in the kubeconfig package https://github.com/kris-nova/kubicorn/blob/master/cutil/kubeconfig/kubeconfig.go

...and we just added support for using an SSH agent #102

.... and we will need to scp files in the digital ocean pull request #35

.......... which is making me think we just need to crack down and get an scp package in the code base

I know that the teleport project has something similiar https://github.com/gravitational/teleport/blob/master/lib/sshutils/scp/scp.go

So we either need to write something ourselves, or we need to vendor in something, but we need a good reliable way of executing ssh and scp commands easily for ad-hoc reasons in the code base.

So part of this ticket involves defining the new way of doing things, and porting over the kubeconfig package to using the new world order.

Once this is done, we can wrap up the digital ocean PR

Apache 2 License Headers

In order for us to be truly Apache 2 compliant we need headers on top of all source code files

So can we please build out support for the following:

make headers that will run an idempotent "fix" for all files in the repository (sans vendor).
make check-headers that will run a check to validate all files have correct license headers. We will eventually want this to be called from make test and fail if a license has the wrong or missing header.

Every header should reference The Kubicorn Authors which is the /AUTHORS file that is automatically generated every release

Autocomplete state names

Should be able to tab complete the state names from the list of states in _state using bash/zsh completion

Cluster state set to null

erichole   $ kubicorn create -n eric -v 4 -p aws
2017-07-15T13:20:34-06:00 [✔]  Selected [fs] state store
  [~/dev/go/src/github.com/kris-nova/kubicorn]
erichole   $ kubicorn apply -n eric -v 4
2017-07-15T13:20:42-06:00 [✔]  Selected [fs] state store
2017-07-15T13:20:42-06:00 [✔]  Loaded cluster: eric
2017-07-15T13:20:42-06:00 [✔]  Init Cluster
2017-07-15T13:20:42-06:00 [▶]  Running preprocessors: 0x143e350
2017-07-15T13:20:42-06:00 [✔]  Query existing resources
2017-07-15T13:20:42-06:00 [▶]  keypair.Actual
2017-07-15T13:20:42-06:00 [▶]  keypair.Render
2017-07-15T13:20:42-06:00 [▶]  vpc.Actual
2017-07-15T13:20:42-06:00 [▶]  vpc.Render
2017-07-15T13:20:42-06:00 [▶]  internetgateway.Actual
2017-07-15T13:20:42-06:00 [▶]  internetgateway.Render
2017-07-15T13:20:42-06:00 [▶]  securitygroup.Actual
2017-07-15T13:20:42-06:00 [▶]  securitygroup.Render
2017-07-15T13:20:42-06:00 [▶]  subnet.Actual
2017-07-15T13:20:42-06:00 [▶]  subnet.Render
2017-07-15T13:20:42-06:00 [▶]  routetable.Actual
2017-07-15T13:20:42-06:00 [▶]  routetable.Render
2017-07-15T13:20:42-06:00 [▶]  lc.Actual
2017-07-15T13:20:42-06:00 [▶]  lc.Render
2017-07-15T13:20:42-06:00 [▶]  asg.Actual
2017-07-15T13:20:42-06:00 [▶]  asg.Render
2017-07-15T13:20:42-06:00 [▶]  securitygroup.Actual
2017-07-15T13:20:42-06:00 [▶]  securitygroup.Render
2017-07-15T13:20:42-06:00 [▶]  subnet.Actual
2017-07-15T13:20:42-06:00 [▶]  subnet.Render
2017-07-15T13:20:42-06:00 [▶]  routetable.Actual
2017-07-15T13:20:42-06:00 [▶]  routetable.Render
2017-07-15T13:20:42-06:00 [▶]  lc.Actual
2017-07-15T13:20:42-06:00 [▶]  lc.Render
2017-07-15T13:20:42-06:00 [▶]  asg.Actual
2017-07-15T13:20:42-06:00 [▶]  asg.Render
2017-07-15T13:20:42-06:00 [✔]  Resolving expected resources
2017-07-15T13:20:42-06:00 [▶]  keypair.Expected
2017-07-15T13:20:42-06:00 [▶]  keypair.Render
2017-07-15T13:20:42-06:00 [▶]  vpc.Expected
2017-07-15T13:20:42-06:00 [▶]  vpc.Render
2017-07-15T13:20:42-06:00 [▶]  internetgateway.Expected
2017-07-15T13:20:42-06:00 [▶]  internetgateway.Render
2017-07-15T13:20:42-06:00 [▶]  securitygroup.Expected
2017-07-15T13:20:42-06:00 [▶]  securitygroup.Render
2017-07-15T13:20:42-06:00 [▶]  subnet.Expected
2017-07-15T13:20:42-06:00 [▶]  subnet.Render
2017-07-15T13:20:42-06:00 [▶]  routetable.Expected
2017-07-15T13:20:42-06:00 [▶]  routetable.Render
2017-07-15T13:20:42-06:00 [▶]  asg.Expected
2017-07-15T13:20:42-06:00 [▶]  lc.Render
2017-07-15T13:20:42-06:00 [▶]  asg.Expected
2017-07-15T13:20:42-06:00 [▶]  asg.Render
2017-07-15T13:20:42-06:00 [▶]  securitygroup.Expected
2017-07-15T13:20:42-06:00 [▶]  securitygroup.Render
2017-07-15T13:20:42-06:00 [▶]  subnet.Expected
2017-07-15T13:20:42-06:00 [▶]  subnet.Render
2017-07-15T13:20:42-06:00 [▶]  routetable.Expected
2017-07-15T13:20:42-06:00 [▶]  routetable.Render
2017-07-15T13:20:42-06:00 [▶]  asg.Expected
2017-07-15T13:20:42-06:00 [▶]  lc.Render
2017-07-15T13:20:42-06:00 [▶]  asg.Expected
2017-07-15T13:20:42-06:00 [▶]  asg.Render
2017-07-15T13:20:42-06:00 [✔]  Reconciling
2017-07-15T13:20:42-06:00 [▶]  keypair.Expected
2017-07-15T13:20:42-06:00 [▶]  Using keypair subnet [expected]
2017-07-15T13:20:42-06:00 [▶]  keypair.Actual
2017-07-15T13:20:42-06:00 [▶]  Using cached keypair [actual]
2017-07-15T13:20:42-06:00 [▶]  keypair.Apply
2017-07-15T13:20:42-06:00 [▶]  Actual   : 27557f4c4a94a9963a563ef61d2533b0
2017-07-15T13:20:42-06:00 [▶]  Expected : b5242c8ebb4d38869819b9c3c05111ff
2017-07-15T13:20:43-06:00 [✖]  Error during apply! Attempting cleaning: InvalidKeyPair.Duplicate: The keypair 'eric' already exists.
	status code: 400, request id: 6c8fc108-71b6-42cf-afd6-32bb3e2a804e
2017-07-15T13:20:43-06:00 [!]  --------------------------------------
2017-07-15T13:20:43-06:00 [!]  Attempting to delete created resources!
2017-07-15T13:20:43-06:00 [!]  --------------------------------------
2017-07-15T13:20:43-06:00 [✔]  Updating state store for cluster [eric]
  [~/dev/go/src/github.com/kris-nova/kubicorn]
erichole   $ kubicorn apply -n eric -v 4
2017-07-15T13:21:00-06:00 [✔]  Selected [fs] state store
2017-07-15T13:21:00-06:00 [✔]  Loaded cluster:
2017-07-15T13:21:00-06:00 [✔]  Init Cluster
2017-07-15T13:21:00-06:00 [▶]  Running preprocessors: 0x143e350
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x130 pc=0x143e37d]

goroutine 1 [running]:
github.com/kris-nova/kubicorn/cluster.ssh(0xc420094dc0, 0x19, 0xc42050fb30, 0x1)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cluster/ssh.go:10 +0x2d
github.com/kris-nova/kubicorn/cluster.InitCluster(0xc420094dc0, 0x12, 0xc42050fc68, 0x1)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cluster/init.go:19 +0xfa
github.com/kris-nova/kubicorn/cmd.RunApply(0x1f9dbc0, 0x17ec080, 0x0)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cmd/apply.go:88 +0x31c
github.com/kris-nova/kubicorn/cmd.glob..func2(0x1f99160, 0xc420141700, 0x0, 0x4)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cmd/apply.go:38 +0x31
github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra.(*Command).execute(0x1f99160, 0xc420141680, 0x4, 0x4, 0x1f99160, 0xc420141680)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra/command.go:651 +0x23a
github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x1f999e0, 0xc420010178, 0x0, 0x4)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra/command.go:726 +0x339
github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra.(*Command).Execute(0x1f999e0, 0xc420244000, 0x9ea)
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/vendor/github.com/spf13/cobra/command.go:685 +0x2b
github.com/kris-nova/kubicorn/cmd.Execute()
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/cmd/root.go:45 +0x31
main.main()
	/Users/erichole/dev/go/src/github.com/kris-nova/kubicorn/main.go:20 +0x20

We need a version bump make target

Can we add 3 targets to the makefile?

  1. Major version bump
  2. Minor version bump
  3. Patch version bump

They should all edit the /VERSION file

Hook up travis to our slack channel

Can we please hook up travis to our slack channel? I would like somebody else owning the ci/cd stuff other me, so happy to give collab to another user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.