Skip to content
This repository has been archived by the owner on Apr 4, 2018. It is now read-only.

🗿 Collection of Makefiles

License

Notifications You must be signed in to change notification settings

Seize/infra-build-harness

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud Posse Build Harness Build Status

This build-harness is a collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more.

It's designed to work with CI/CD systems such as Travis CI, CircleCI and Jenkins.

It's 100% Open Source and licensed under APACHE2.

Usage

At the top of your Makefile add, the following...

-include $(shell curl -sSL -o .build-harness "https://git.io/vNeTK"; echo .build-harness)

This will download a Makefile called .build-harness and include it at run-time. We recommend adding the .build-harness file to your .gitignore.

This automatically exposes many new targets that you can leverage throughout your build & CI/CD process.

Run make help for a list of available targets.

Makefile Targets

$ make help

  Available targets:

bash:lint                           Lint all bash scripts
docker:build                        Build docker image
docker:login                        Login into docker hub
docs:build                          Create $OUT file by building it from $IN template file
docs:copyright-add                  Add copyright headers to source code
docs:deps                           Install dependencies
geodesic:deploy                     Run a Jenkins Job to Deploy $(APP) with $(CANONICAL_TAG)
git:aliases-update                  Update git aliases
github:download-private-release     Download release from github
github:download-public-release      Download release from github
git:submodules-update               Update submodules
go:build                            Build binary
go:build-all                        Build binary for all platforms
go:clean                            Clean compiled binary
go:clean-all                        Clean compiled binary and dependency
go:deps                             Install dependencies
go:deps-build                       Install dependencies for build
go:deps-dev                         Install development dependencies
go:fmt                              Format code according to Golang convention
go:install                          Install cli
go:lint                             Lint code
go:test                             Run tests
go:vet                              Vet code
helm:install                        Install helm
helm:repo:add-current               Add helm remote dev repos
helm:repo:add-remote                Add helm remote repos
helm:repo:build                     Build repo
helm:repo:clean                     Clean helm repo
helm:repo:fix-perms                 Fix repo filesystem permissions
helm:repo:info                      Show repo info
helm:repo:lint                      Lint charts
helm:serve:index                    Build index for serve helm charts
help                                This help screen
jenkins:run-job-with-tag            Run a Jenkins Job with $(TAG)
make:lint                           Lint all makefiles
readme:build                        Create README.md by building it from .README.md file
readme:init                         Create basic minimalistic .README.md template file
readme:toc-update                   Update table of contents in README.md
terraform:get-modules               Ensure all modules can be fetched
terraform:get-plugins               Ensure all plugins can be fetched
terraform:install                   Install terraform
terraform:lint                      Lint check Terraform
terraform:validate                  Basic terraform sanity check
travis:docker-login                 Login into docker hub
travis:docker-tag-and-push          Tag & Push according Travis environment variables

Real World Examples

  • github-authorized-keys - A Golang project that leverages docker:%, go:%, travis:% targets
  • charts - A collection of Helm Charts that leverages docker:% and helm:% targets
  • bastion - A docker image that leverages docker:% and bash:lint targets
  • terraform-null-label - A terraform module that leverages terraform:% targets

Help

Got a question?

File a GitHub issue, send us an email or reach out to us on Gitter.

Contributing

Bug Reports & Feature Requests

Please use the issue tracker to report any bugs or file feature requests.

Developing

If you are interested in being a contributor and want to get involved in developing build-harness, we would love to hear from you! Shoot us an email.

In general, PRs are welcome. We follow the typical "fork-and-pull" Git workflow.

  1. Fork the repo on GitHub
  2. Clone the project to your own machine
  3. Commit changes to your own branch
  4. Push your work back up to your fork
  5. Submit a Pull request so that we can review your changes

NOTE: Be sure to merge the latest from "upstream" before making a pull request!

Here's how to get started...

  1. git clone https://github.com/cloudposse/build-harness.git to pull down the repository
  2. make init to initialize the build-harness
  3. Review the documentation on compiling

License

APACHE 2.0 © 2017 Cloud Posse, LLC

See LICENSE for full details.

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.

About

This project is maintained and funded by Cloud Posse, LLC. Like it? Please let us know at hello@cloudposse.com

We love Open Source Software!

See our other projects or hire us to help build your next cloud-platform.

Contributors

Erik Osterman
Erik Osterman
Igor Rodionov
Igor Rodionov

About

🗿 Collection of Makefiles

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 65.5%
  • Makefile 34.5%