Skip to content

Latest commit

 

History

History
118 lines (89 loc) · 4.67 KB

DEVELOPMENT.md

File metadata and controls

118 lines (89 loc) · 4.67 KB

Development

Prerequisites

  • Git
    • macOS: (built-in)
    • Windows:
      • choco install git -y
      • git config --global core.autocrlf false
  • Go
    • macOS: brew install go
    • Windows: choco install golang -y
  • Docker
  • Make (and build tools)
    • macOS: xcode-select --install
    • Windows:
      • choco install cygwin make -y
      • [Environment]::SetEnvironmentVariable("PATH", "C:\tools\cygwin\bin;$ENV:PATH", "MACHINE")

Alternatively, you can use Gitpod to run pre-configured dev environment in the cloud right from your browser

Open in Gitpod

Windows Caveats

Tasks

Building

To build pack:

make build

This will output the binary to the directory out/.

Options:

ENV_VAR Description Default
GOCMD Change the go executable. For example, richgo for testing. go
PACK_BIN Change the name or location of the binary relative to out/. pack
PACK_VERSION Tell pack what version to consider itself dev

NOTE: This project uses go modules for dependency management.

Testing

To run unit and integration tests:

make unit

Test output will be streamed to your terminal and also saved to the file out/unit

To run acceptance tests:

make acceptance

Test output will be streamed to your terminal and also saved to the file out/acceptance

Alternately, to run all tests:

make test

To run our full acceptance suite (including cross-compatibility for n-1 pack and lifecycle):

make acceptance-all

Tidy

To format the code:

make format

To tidy up the codebase and dependencies:

make tidy

Verification

To verify formatting and code quality:

make verify

Prepare for PR

Runs various checks to ensure compliance:

make prepare-for-pr

Acceptance Tests

Some options users can provide to our acceptance tests are:

ENV_VAR Description Default
ACCEPTANCE_SUITE_CONFIG A set of configurations for how to run the acceptance tests, describing the version of pack used for testing, the version of pack used to create the builders used in the test, and the version of lifecycle binaries used to test with Github [{"pack": "current", "pack_create_builder": "current", "lifecycle": "default"}]'
COMPILE_PACK_WITH_VERSION Tell pack what version to consider itself dev
GITHUB_TOKEN A Github Token, used when downloading pack and lifecycle releases from Github during the test setup ""
LIFECYCLE_IMAGE Image reference to be used in untrusted builder workflows buildpacksio/lifecycle:
LIFECYCLE_PATH Path to a .tgz file filled with a set of lifecycle binaries The Github release for the default version of lifecycle in pack
PACK_PATH Path to a pack executable. A compiled version of the current branch
PREVIOUS_LIFECYCLE_IMAGE Image reference to be used in untrusted builder workflows, used to test compatibility of pack with the n-1 version of the lifecycle buildpacksio/lifecycle:<PREVIOUS_LIFECYCLE_PATH lifecycle version>, buildpacksio/lifecycle:
PREVIOUS_LIFECYCLE_PATH Path to a .tgz file filled with a set of lifecycle binaries, used to test compatibility of pack with the n-1 version of the lifecycle The Github release for n-1 release of lifecycle
PREVIOUS_PACK_FIXTURES_PATH Path to a set of fixtures, used to override the most up-to-date fixtures, in case of changed functionality acceptance/testdata/pack_previous_fixtures_overrides
PREVIOUS_PACK_PATH Path to a pack executable, used to test compatibility with n-1 version of pack The most recent release from pack's Github release