GithubHelp home page GithubHelp logo

kieranjeffreysmart / buildpacks-ci Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cloudfoundry/buildpacks-ci

0.0 0.0 0.0 13.94 MB

Concourse CI pipelines for the buildpacks team

Home Page: https://buildpacks.ci.cf-app.com

License: Apache License 2.0

Shell 2.99% JavaScript 1.14% Ruby 19.32% Go 7.32% PowerShell 0.03% CSS 0.40% Crystal 4.01% Makefile 0.01% HTML 64.48% Dockerfile 0.30%

buildpacks-ci's Introduction

Introduction

This contains the configuration for the Cloud Foundry Buildpacks team Concourse deployment.

Pipelines

Concourse State

Jobs and tasks in the buildpacks-ci repository store state in public-buildpacks-ci-robots. See repository README for details.

Commands and recipes

Updating all the Pipelines

./bin/update-pipelines

Debugging the build

fly intercept -j $JOB_NAME -t task -n $TASK_NAME

Clearing the git resources

fly intercept -c $RESOURCE_NAME rm -rf /tmp/git-resource-repo-cache

To build a new version of a binary

  1. Check out the binary-builds branch

  2. Edit the YAML file appropriate for the build (e.g. ruby-builds.yml)

  3. Find the version number and package SHA256 of the new binary. For many binaries, the project website provides the SHA256 along with the release (for example, jruby.org/download provides the SHA256 along with each JRuby release). For others (such as Godep), you download the .tar.gz file and run shasum -a 256 <tar_file> to obtain the SHA256.

  4. Add any number of versions and their checksums to the array, e.g.

    ruby:
    - version: 2.2.2
      sha256: 5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44
  5. git commit -am 'Build ruby 2.2.2' && git push

Build should automatically kick off at https://buildpacks.ci.cf-app.com/pipelines/binary-builder and silently upload a binary to the pivotal-buildpacks bucket under dependencies/, e.g. https://pivotal-buildpacks.s3.amazonaws.com/dependencies/ruby/ruby-2.2.2-linux-x64.tgz

Note that the array is a stack, which will be emptied as the build succeeds in packaging successive versions.

Running the Test Suite

If you are running the full test suite, some of the integration tests are dependent on the Lastpass CLI and correctly targeting the fly CLI.

To login to the Lastpass CLI:

lpass login $USERNAME

You will then be prompted for your Lastpass password and Google Authenticator Code.

To login to the Fly CLI and target the buildpacks CI:

fly -t buildpacks login

You will be prompted to select either the Github or Basic Auth authentication methods.

After these are set up, you will be able to run the test suite via:

rspec

Making Changes to Build Scripts

When you want to change how a binary gets built, there are two places you may need to make changes. All binaries are built by the dependency-builds pipeline, and you may need to change the task that builds them. For many binaries, the dependency-builds pipeline runs recipes from the binary-builder repo; for those binaries, you will usually need to change the recipe rather than the concourse task.

For the list of currently supported binaries, check out our dependency-builds pipeline.

The concourse task that orchestrates the building is buildpacks-ci/tasks/build-binary-new/builder.rb; many of the recipes are in binary-builder.

To test these changes locally, you can execute the concourse task for it, but point to local changes. For instance:

$ cd buildpacks-ci
$ STACK=cflinuxfs2 fly -t buildpacks e -c tasks/build-binary-new/build.yml -j dependency-builds/build-r-3.4.X -i buildpacks-ci=.

For binaries that use recipes in binary-builder, you can also test in Docker. For instance:

$ docker run -w /binary-builder -v `pwd`:/binary-builder -it cloudfoundry/cflinuxfs2:ruby-2.2.4 ./bin/binary-builder --name=ruby --version=2.2.3 --md5=150a5efc5f5d8a8011f30aa2594a7654
$ ls
ruby-2.2.3-linux-x64.tgz

Buildpack Repositories Guide

buildpacks-ci pipelines and tasks refer to many other repositories. These repos are where the buildpack team and others develop buildpacks and related artifacts.

Officially-supported Buildpacks

Each officially-supported buildpack has a develop and a master branch.

Active development happens on develop. Despite our best efforts, develop will sometimes be unstable and is not production-ready.

Our release branch is master. This is stable and only updated with new buildpack releases.

Tooling for Development and Runtime

  • buildpack-packager Builds cached and uncached buildpacks
  • machete Buildpack integration testing framework.
  • compile-extensions Suite of utility scripts used in buildpacks at runtime
  • libbuildpack Library used for writing buildpacks in Golang
  • binary-builder Builds binaries against specified rootfs
  • cflinuxfs2 Tooling to build cflinuxfs2 root file system ("rootfs") for CF
  • brats Buildpack Runtime Acceptance Test Suite, a collection of smoke tests

BOSH Releases

BOSH releases are used in the assembly of cf-release.

Experimental or unsupported

Buildpacks

These buildpacks are possible candidates for promotion, or experimental architecture explorations.

Tools

Private Repos

Some repositories are private for historical or security reasons. We list them for completeness.

buildpacks-ci's People

Contributors

rochesterinnyc avatar dgodd avatar jtarchie avatar sesmith177 avatar dwillist avatar dfreilich avatar mdelillo avatar mhoran avatar foresteckhardt avatar astrieanna avatar brayanhenao avatar idoru avatar ndon55555 avatar jfeeny avatar jchesterpivotal avatar o-orand avatar chhhavi avatar ameyer-pivotal avatar kardolus avatar davidjahn avatar jvshahid avatar arjun024 avatar menehune23 avatar geramirez avatar ben16 avatar cf-buildpacks-eng avatar anyu avatar sophiewigmore avatar tisvictress avatar thitch97 avatar

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.