ci/packagespec (#9653)
* add packagespec build system
- The majority of changes in this commit are files generated
by packagespec (everything in the packages-oss.lock directory).
* add .yamllint
* update to packagespec@fd54aea4
* ci: bust packagespec cache
- Change to packagespec results in package IDs that can use
git tag refs, not just commit refs.
* update to packagepsec@5fc121d0
- This busts all caches, because of a change to the way we
no longer traverse from tag refs to commit refs, due to
the potential confusion this can cause.
- See fd54aea482
for the original change to packagespec necessitating this.
* update to packagespec@5e6c87b6
- This completes the change to allowing git tag refs
to be used for source IDs, begun in f130b940a8fbe3e9398225b08ea1d63420bef7b6
* update to packagespec@4d3c9e8b
- This busts cache, needed to apply previous change.
* remove RELEASE_BUILD_WORKFLOW_NAME
* update packagespec, add watch-ci target
* fix package names (do not refer to EDITION)
* remove EDITION input from packages-oss.yml
* bump package cache, update packagespec
* update packagespec, add 'aliases' target
* update packagespec; less output noise
* ci: give release bundle file a better name
- When performing a release build, this will include the build ID
as part of the name, making it easier to distinguish from other
builds.
* ci: create aliases tarball artifact
* ci: cache package metadata files
* ci: add metadata artifact
* ci: bust circleci package cache
* Revert "ci: bust circleci package cache"
This reverts commit 1320d182613466f0999d63f5742db12ac17f8e92.
* ci: remove aliases artifact
* ci: use buildID not workflowName to id artifacts
* packages: add BUNDLE_NAME metadata
* do not cache package metadata with binaries
* ci: bump package cache
* ci: debugging
* ci: fix package cache; update packagespec
* ci: update packagespec to 10e7beb2
* ci: write package metadata and aliases
* ci: switch to .zip artifacts
* switch package bundle back to tar.gz (from zip)
- Because of the way zip works, the zip archive was over 2GB rather than under 750MB as with tar.gz.
* bump packagespec, adds list-staged-builds
* update packagespec
* add publish stub + general tidy up
* bump packagespec
* bump packagespec; add make publish-config
* Makefile: tidy up packagespec targets
* pass PRODUCT_REPO_ROOT to packagespec
* bump go to 1.14.6
* packages-oss.yml: use more explicit base image
* bump packagespec to b899b7c1
* bump packagespec to f040ce8f
* packages-oss.yml: pin base image to digest
- This digest is pointed to by debian:buster-20200720
- Using a specific digest ensures that builds use the same
base image in all contexts
* add release-repo; bump packagespec
* remove BUILD_TAGS and -tags flag
* bump packagespec to e444f742
* bump to go1.14.7
* ci: bump to go1.14.7
This commit is contained in:
parent
683db6821c
commit
25137a1702
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,229 @@
|
||||||
|
{{- $data := (datasource "package-list") -}}
|
||||||
|
{{- /*
|
||||||
|
BUILD_ID is set by the staging workflow to produce an identifiable build.
|
||||||
|
*/ -}}
|
||||||
|
{{- $buildID := (env.Getenv "BUILD_ID" "standalone") -}}
|
||||||
|
{{- $workflowName := (env.Getenv "RELEASE_BUILD_WORKFLOW_NAME" "build-standalone") -}}
|
||||||
|
{{- $packages := $data.packages -}}
|
||||||
|
{{- $layers := $data.layers -}}
|
||||||
|
{{- $revision := (env.Getenv "PRODUCT_REVISION") -}}
|
||||||
|
{{- define "cache-key"}}{{template "cache-version"}}-{{.}}{{end -}}
|
||||||
|
{{- define "cache-version"}}cache002{{end -}}
|
||||||
|
{{- /*
|
||||||
|
Any change to cache-version invalidates all build layer and package caches.
|
||||||
|
*/ -}}
|
||||||
|
# Current cache version: {{template "cache-version"}}
|
||||||
|
|
||||||
|
executors:
|
||||||
|
releaser:
|
||||||
|
docker:
|
||||||
|
- image: circleci/buildpack-deps
|
||||||
|
environment:
|
||||||
|
PRODUCT_REVISION: "{{if $revision}}{{$revision}}{{end}}"
|
||||||
|
AUTO_INSTALL_TOOLS: 'YES'
|
||||||
|
shell: /usr/bin/env bash -euo pipefail -c
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
{{$workflowName}}:
|
||||||
|
jobs:
|
||||||
|
- cache-builder-images:
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- /build-.*/
|
||||||
|
- /ci.*/
|
||||||
|
{{- range $packages}}
|
||||||
|
- {{.meta.BUILD_JOB_NAME}}: { requires: [ cache-builder-images ] }
|
||||||
|
{{- end }}
|
||||||
|
- bundle-releases:
|
||||||
|
requires:
|
||||||
|
{{- range $packages}}
|
||||||
|
- {{.meta.BUILD_JOB_NAME}}{{end}}
|
||||||
|
jobs:
|
||||||
|
cache-builder-images:
|
||||||
|
executor: releaser
|
||||||
|
steps:
|
||||||
|
- setup_remote_docker
|
||||||
|
- checkout
|
||||||
|
- write-build-layer-cache-keys
|
||||||
|
|
||||||
|
# Load best available cached image.
|
||||||
|
|
||||||
|
{{- $targetLayerType := "build-static-assets" }}
|
||||||
|
{{- $targetLayer := .}}
|
||||||
|
{{- range $layers}}
|
||||||
|
{{- if eq .type $targetLayerType }}
|
||||||
|
{{- $targetLayer = .}}
|
||||||
|
- restore_cache:
|
||||||
|
keys:
|
||||||
|
{{- range .meta.circleci.CACHE_KEY_PREFIX_LIST}}
|
||||||
|
- {{template "cache-key" .}}
|
||||||
|
{{- end}}
|
||||||
|
- run:
|
||||||
|
name: Finish early if loaded exact match from cache.
|
||||||
|
command: |
|
||||||
|
if [ -f {{.archivefile}} ]; then
|
||||||
|
echo "Exact match found in cache, skipping build."
|
||||||
|
circleci-agent step halt
|
||||||
|
else
|
||||||
|
echo "No exact match found, proceeding with build."
|
||||||
|
fi
|
||||||
|
- run: LAYER_SPEC_ID={{.name}} make -C packages*.lock load-builder-cache
|
||||||
|
{{- end}}{{end}}
|
||||||
|
|
||||||
|
# No exact match was found, so build each layer up to target type.
|
||||||
|
|
||||||
|
{{- $finished := false }}
|
||||||
|
{{- range $layers}}
|
||||||
|
{{- if not $finished }}
|
||||||
|
{{- $finished = eq .type $targetLayerType}}
|
||||||
|
- run: make -f packages*.lock/layer.mk {{.name}}-image
|
||||||
|
{{- end}}
|
||||||
|
{{- end}}
|
||||||
|
|
||||||
|
# Save the target layer archive.
|
||||||
|
|
||||||
|
- run: make -f packages*.lock/layer.mk {{$targetLayer.name}}-save
|
||||||
|
|
||||||
|
# Store the target layer archive as all the relevant cache names.
|
||||||
|
|
||||||
|
{{- $lastArchive := $targetLayer.archivefile}}
|
||||||
|
{{- range $i, $l := $targetLayer.meta.builtin.LAYER_LIST}}
|
||||||
|
{{- $currentArchive := $l.archive}}
|
||||||
|
{{- if ne $currentArchive $lastArchive }}
|
||||||
|
- run: mv {{$lastArchive}} {{$currentArchive}}
|
||||||
|
{{- end}}
|
||||||
|
- save_cache:
|
||||||
|
key: {{template "cache-key" (index $targetLayer.meta.circleci.CACHE_KEY_PREFIX_LIST $i)}}
|
||||||
|
paths:
|
||||||
|
- {{$currentArchive}}
|
||||||
|
{{- $lastArchive = $currentArchive }}
|
||||||
|
{{- end}}
|
||||||
|
|
||||||
|
{{- range $packages}}
|
||||||
|
{{.meta.BUILD_JOB_NAME}}:
|
||||||
|
executor: releaser
|
||||||
|
environment:
|
||||||
|
- PACKAGE_SPEC_ID: {{.packagespecid}}
|
||||||
|
steps:
|
||||||
|
- setup_remote_docker
|
||||||
|
- checkout
|
||||||
|
|
||||||
|
# Restore the package cache first, we might not need to rebuild.
|
||||||
|
- write-package-cache-key
|
||||||
|
- restore_cache:
|
||||||
|
key: '{{template "cache-key" .meta.circleci.PACKAGE_CACHE_KEY}}'
|
||||||
|
- run:
|
||||||
|
name: Check the cache status.
|
||||||
|
command: |
|
||||||
|
if ! { PKG=$(find .buildcache/packages/store -maxdepth 1 -mindepth 1 -name '*.zip' 2> /dev/null) && [ -n "$PKG" ]; }; then
|
||||||
|
echo "No package found, continuing with build."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "Package already cached, skipping build."
|
||||||
|
circleci-agent step halt
|
||||||
|
|
||||||
|
# We need to rebuild, so load the builder cache.
|
||||||
|
- write-build-layer-cache-keys
|
||||||
|
- restore_cache:
|
||||||
|
keys:
|
||||||
|
{{- range .meta.circleci.BUILDER_CACHE_KEY_PREFIX_LIST}}
|
||||||
|
- {{template "cache-key" .}}
|
||||||
|
{{- end}}
|
||||||
|
- run: make -C packages*.lock load-builder-cache
|
||||||
|
- run: make -C packages*.lock package
|
||||||
|
- run: ls -lahR .buildcache/packages
|
||||||
|
# Save package cache.
|
||||||
|
- save_cache:
|
||||||
|
key: '{{template "cache-key" .meta.circleci.PACKAGE_CACHE_KEY}}'
|
||||||
|
paths:
|
||||||
|
- .buildcache/packages/store
|
||||||
|
# Save builder image cache if necessary.
|
||||||
|
# The range should only iterate over a single layer.
|
||||||
|
{{- $pkg := . -}}
|
||||||
|
{{- range $idx, $layerInfo := .meta.builtin.BUILD_LAYERS }}
|
||||||
|
{{- if eq $layerInfo.type "warm-go-build-vendor-cache" }}
|
||||||
|
{{- with $layerInfo }}
|
||||||
|
{{- $circleCICacheKey := (index $pkg.meta.circleci.BUILDER_CACHE_KEY_PREFIX_LIST $idx) }}
|
||||||
|
- run:
|
||||||
|
name: Check builder cache status
|
||||||
|
command: |
|
||||||
|
if [ -f {{.archive}} ]; then
|
||||||
|
echo "Builder image already cached, skipping cache step."
|
||||||
|
circleci-agent step halt
|
||||||
|
fi
|
||||||
|
- run: make -f packages*.lock/layer.mk {{.name}}-save
|
||||||
|
- save_cache:
|
||||||
|
key: '{{template "cache-key" $circleCICacheKey}}'
|
||||||
|
paths:
|
||||||
|
- {{.archive}}
|
||||||
|
{{- end}}
|
||||||
|
{{- end}}
|
||||||
|
{{- end}}
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
bundle-releases:
|
||||||
|
executor: releaser
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- write-all-package-cache-keys
|
||||||
|
{{- range $packages}}
|
||||||
|
- load-{{.meta.BUILD_JOB_NAME}}
|
||||||
|
- run:
|
||||||
|
environment:
|
||||||
|
PACKAGE_SPEC_ID: {{.packagespecid}}
|
||||||
|
name: Write package metadata for {{.meta.BUILD_JOB_NAME}}
|
||||||
|
command: |
|
||||||
|
make package-meta
|
||||||
|
{{- end}}
|
||||||
|
- run:
|
||||||
|
name: Write package aliases
|
||||||
|
command:
|
||||||
|
make aliases
|
||||||
|
- run:
|
||||||
|
name: List Build Cache
|
||||||
|
command: ls -lahR .buildcache
|
||||||
|
|
||||||
|
# Surface the package store directory as an artifact.
|
||||||
|
# This makes each zipped package separately downloadable.
|
||||||
|
- store_artifacts:
|
||||||
|
path: .buildcache/packages
|
||||||
|
destination: packages-{{$buildID}}
|
||||||
|
|
||||||
|
# Surface a tarball of the whole package store as an artifact.
|
||||||
|
- run: tar -czf packages-{{$buildID}}.tar.gz .buildcache/packages
|
||||||
|
- store_artifacts:
|
||||||
|
path: packages-{{$buildID}}.tar.gz
|
||||||
|
destination: packages-{{$buildID}}.tar.gz
|
||||||
|
|
||||||
|
# Surface a tarball of just the metadata files.
|
||||||
|
- run: tar -czf meta-{{$buildID}}.tar.gz .buildcache/packages/store/*.json
|
||||||
|
- store_artifacts:
|
||||||
|
path: meta-{{$buildID}}.tar.gz
|
||||||
|
destination: meta-{{$buildID}}.tar.gz
|
||||||
|
|
||||||
|
commands:
|
||||||
|
{{- range $packages }}
|
||||||
|
load-{{.meta.BUILD_JOB_NAME}}:
|
||||||
|
steps:
|
||||||
|
- restore_cache:
|
||||||
|
key: '{{template "cache-key" .meta.circleci.PACKAGE_CACHE_KEY}}'
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
write-build-layer-cache-keys:
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: Write builder layer cache keys
|
||||||
|
command: make -C packages*.lock write-builder-cache-keys
|
||||||
|
|
||||||
|
write-package-cache-key:
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: Write package cache key
|
||||||
|
command: make -C packages*.lock write-package-cache-key
|
||||||
|
|
||||||
|
write-all-package-cache-keys:
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: Write package cache key
|
||||||
|
command: make -C packages*.lock write-all-package-cache-keys
|
|
@ -1,52 +1,6 @@
|
||||||
---
|
---
|
||||||
version: 2.1
|
version: 2.1
|
||||||
|
|
||||||
references:
|
orbs:
|
||||||
images:
|
slack: circleci/slack@3.2.0
|
||||||
node: &NODE_IMAGE node:10-buster # Pin Node.js to major version (ex: 10)
|
|
||||||
|
|
||||||
cache:
|
|
||||||
go-sum: &GO_SUM_CACHE_KEY go-sum-v1-{{ checksum "go.sum" }}
|
|
||||||
yarn-lock: &YARN_LOCK_CACHE_KEY yarn-lock-v6-{{ checksum "ui/yarn.lock" }}
|
|
||||||
|
|
||||||
# more commands defined in commands/
|
|
||||||
commands:
|
|
||||||
restore_yarn_cache:
|
|
||||||
steps:
|
|
||||||
- restore_cache:
|
|
||||||
key: *YARN_LOCK_CACHE_KEY
|
|
||||||
save_yarn_cache:
|
|
||||||
steps:
|
|
||||||
- save_cache:
|
|
||||||
key: *YARN_LOCK_CACHE_KEY
|
|
||||||
paths:
|
|
||||||
- ui/node_modules
|
|
||||||
|
|
||||||
executors:
|
|
||||||
go-machine:
|
|
||||||
machine: true
|
|
||||||
shell: /usr/bin/env bash -euo pipefail -c
|
|
||||||
environment:
|
|
||||||
GO111MODULE: "off"
|
|
||||||
CIRCLECI_CLI_VERSION: 0.1.5546 # Pin CircleCI CLI to patch version (ex: 1.2.3)
|
|
||||||
GO_VERSION: 1.14.7 # Pin Go to patch version (ex: 1.2.3)
|
|
||||||
GOTESTSUM_VERSION: 0.5.2 # Pin gotestsum to patch version (ex: 1.2.3)
|
|
||||||
GO_TAGS: ""
|
|
||||||
working_directory: /go/src/github.com/hashicorp/vault
|
|
||||||
node:
|
|
||||||
docker:
|
|
||||||
- image: *NODE_IMAGE
|
|
||||||
environment:
|
|
||||||
JOBS: 2
|
|
||||||
shell: /usr/bin/env bash -euo pipefail -c
|
|
||||||
working_directory: /go/src/github.com/hashicorp/vault
|
|
||||||
python:
|
|
||||||
docker:
|
|
||||||
- image: python:3-alpine
|
|
||||||
shell: /usr/bin/env bash -euo pipefail -c
|
|
||||||
working_directory: /go/src/github.com/hashicorp/vault
|
|
||||||
alpine:
|
|
||||||
docker:
|
|
||||||
- image: alpine:3.10.2
|
|
||||||
shell: /bin/sh
|
|
||||||
working_directory: /go/src/github.com/hashicorp/vault
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
restore_yarn_cache:
|
||||||
|
steps:
|
||||||
|
- restore_cache:
|
||||||
|
key: &YARN_LOCK_CACHE_KEY yarn-lock-v6-{{ checksum "ui/yarn.lock" }}
|
||||||
|
save_yarn_cache:
|
||||||
|
steps:
|
||||||
|
- save_cache:
|
||||||
|
key: *YARN_LOCK_CACHE_KEY
|
||||||
|
paths:
|
||||||
|
- ui/node_modules
|
|
@ -0,0 +1,25 @@
|
||||||
|
go-machine:
|
||||||
|
machine: true
|
||||||
|
shell: /usr/bin/env bash -euo pipefail -c
|
||||||
|
environment:
|
||||||
|
GO111MODULE: "off"
|
||||||
|
CIRCLECI_CLI_VERSION: 0.1.5546 # Pin CircleCI CLI to patch version (ex: 1.2.3)
|
||||||
|
GO_VERSION: 1.14.7 # Pin Go to patch version (ex: 1.2.3)
|
||||||
|
GOTESTSUM_VERSION: 0.5.2 # Pin gotestsum to patch version (ex: 1.2.3)
|
||||||
|
GO_TAGS: ""
|
||||||
|
working_directory: /go/src/github.com/hashicorp/vault
|
||||||
|
node:
|
||||||
|
docker:
|
||||||
|
- image: node:10-buster
|
||||||
|
shell: /usr/bin/env bash -euo pipefail -c
|
||||||
|
working_directory: /go/src/github.com/hashicorp/vault
|
||||||
|
python:
|
||||||
|
docker:
|
||||||
|
- image: python:3-alpine
|
||||||
|
shell: /usr/bin/env bash -euo pipefail -c
|
||||||
|
working_directory: /go/src/github.com/hashicorp/vault
|
||||||
|
alpine:
|
||||||
|
docker:
|
||||||
|
- image: alpine:3.10.2
|
||||||
|
shell: /bin/sh
|
||||||
|
working_directory: /go/src/github.com/hashicorp/vault
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
extends: relaxed
|
||||||
|
|
||||||
|
rules:
|
||||||
|
comments: disable
|
||||||
|
comments-indentation: disable
|
||||||
|
line-length: disable
|
||||||
|
commas:
|
||||||
|
max-spaces-after: -1
|
86
Makefile
86
Makefile
|
@ -126,12 +126,8 @@ prep: fmtcheck
|
||||||
@[ ! -d .git/hooks ] || grep -l '^# husky$$' .git/hooks/* | xargs rm -f
|
@[ ! -d .git/hooks ] || grep -l '^# husky$$' .git/hooks/* | xargs rm -f
|
||||||
@if [ -d .git/hooks ]; then cp .hooks/* .git/hooks/; fi
|
@if [ -d .git/hooks ]; then cp .hooks/* .git/hooks/; fi
|
||||||
|
|
||||||
.PHONY: ci-config
|
PACKAGES_LOCK_DIR := $(shell find . -mindepth 1 -maxdepth 1 \
|
||||||
ci-config:
|
-type d -name 'packages*.lock')
|
||||||
@$(MAKE) -C .circleci ci-config
|
|
||||||
.PHONY: ci-verify
|
|
||||||
ci-verify:
|
|
||||||
@$(MAKE) -C .circleci ci-verify
|
|
||||||
|
|
||||||
# bootstrap the build by downloading additional tools needed to build
|
# bootstrap the build by downloading additional tools needed to build
|
||||||
ci-bootstrap:
|
ci-bootstrap:
|
||||||
|
@ -285,6 +281,82 @@ publish-commit:
|
||||||
@[ -n "$(PUBLISH_VERSION)" ] || { echo "You must set PUBLISH_VERSION to the version in semver-like format."; exit 1; }
|
@[ -n "$(PUBLISH_VERSION)" ] || { echo "You must set PUBLISH_VERSION to the version in semver-like format."; exit 1; }
|
||||||
set -x; $(GPG_KEY_VARS) && git commit --allow-empty --gpg-sign=$$GIT_GPG_KEY_ID -m 'release: publish v$(PUBLISH_VERSION)'
|
set -x; $(GPG_KEY_VARS) && git commit --allow-empty --gpg-sign=$$GIT_GPG_KEY_ID -m 'release: publish v$(PUBLISH_VERSION)'
|
||||||
|
|
||||||
.PHONY: bin default prep test vet ci-bootstrap bootstrap fmt fmtcheck mysql-database-plugin mysql-legacy-database-plugin cassandra-database-plugin influxdb-database-plugin postgresql-database-plugin mssql-database-plugin hana-database-plugin mongodb-database-plugin static-assets ember-dist ember-dist-dev static-dist static-dist-dev assetcheck check-vault-in-path check-browserstack-creds test-ui-browserstack stage-commit publish-commit
|
# WRITE_GENERATED_FILE_HEADER overwrites the file specified, replacing its contents with
|
||||||
|
# the header warning people not to attempt to edit or merge the file. You should call this
|
||||||
|
# before writing the generated contents to the file.
|
||||||
|
# Args: 1: File to write; 2: Command to generate it; 3: Source files to edit/merge instead.
|
||||||
|
define WRITE_GENERATED_FILE_HEADER
|
||||||
|
echo "### ***" > $(1); \
|
||||||
|
echo "### WARNING: DO NOT manually EDIT or MERGE this file, it is generated by '$(2)'." >> $(1); \
|
||||||
|
echo "### INSTEAD: Edit or merge the source in $(3) then run '$(2)'." >> $(1); \
|
||||||
|
echo "### ***" >> $(1)
|
||||||
|
endef
|
||||||
|
|
||||||
|
## begin packagespec integration ##
|
||||||
|
|
||||||
|
# The plan is to generate this packagespec integration section automatically.
|
||||||
|
# By keeping it in a contiguous block for now, it will be easier to
|
||||||
|
# auto-generate when we get to it.
|
||||||
|
|
||||||
|
SPEC_FILE_PATTERN := packages*.yml
|
||||||
|
# SPEC is the human-managed description of which packages we are able to build.
|
||||||
|
SPEC := $(shell find . -mindepth 1 -maxdepth 1 -name '$(SPEC_FILE_PATTERN)')
|
||||||
|
ifneq ($(words $(SPEC)),1)
|
||||||
|
$(error Found $(words $(SPEC)) $(SPEC_FILE_PATTERN) files, need exactly 1: $(SPEC))
|
||||||
|
endif
|
||||||
|
SPEC_FILENAME := $(notdir $(SPEC))
|
||||||
|
SPEC_MODIFIER := $(SPEC_FILENAME:packages%.yml=%)
|
||||||
|
# LOCKDIR contains the lockfile and layer files.
|
||||||
|
LOCKDIR := packages$(SPEC_MODIFIER).lock
|
||||||
|
LOCKFILE := $(LOCKDIR)/pkgs.yml
|
||||||
|
|
||||||
|
export PACKAGE_SPEC_ID LAYER_SPEC_ID PRODUCT_REVISION PRODUCT_VERSION
|
||||||
|
|
||||||
|
# PACKAGESPEC_TARGETS are convenience aliases for targets defined in $(LOCKDIR)/Makefile
|
||||||
|
PACKAGESPEC_TARGETS := \
|
||||||
|
build build-all build-ci \
|
||||||
|
aliases meta package \
|
||||||
|
package-meta stage-config stage \
|
||||||
|
watch-ci publish-config publish list-staged-builds
|
||||||
|
|
||||||
|
$(PACKAGESPEC_TARGETS):
|
||||||
|
$(PACKAGESPEC_TARGETS):
|
||||||
|
@PRODUCT_REPO_ROOT="$(shell git rev-parse --show-toplevel)" $(MAKE) -C $(LOCKDIR) $@
|
||||||
|
|
||||||
|
# packages regenerates $(LOCKDIR) from $(SPEC) using packagespec. This is only for
|
||||||
|
# internal HashiCorp use, as it has dependencies not available to OSS contributors.
|
||||||
|
packages:
|
||||||
|
@command -v packagespec > /dev/null 2>&1 || { \
|
||||||
|
echo "Please install packagespec."; \
|
||||||
|
echo "Note: packagespec is only available to HashiCorp employees at present."; \
|
||||||
|
exit 1; \
|
||||||
|
}
|
||||||
|
@packagespec lock -specfile $(SPEC) -lockdir $(LOCKDIR)
|
||||||
|
@$(MAKE) ci-config
|
||||||
|
|
||||||
|
.PHONY: $(PACKAGESPEC_TARGETS) packages
|
||||||
|
## end packagespec integration ##
|
||||||
|
|
||||||
|
CI_WORKFLOW_TPL := .circleci/config/@build-release.yml.tpl
|
||||||
|
CI_WORKFLOW := .circleci/config/@build-release.yml
|
||||||
|
|
||||||
|
.PHONY: ci-update-release-packages $(CI_WORKFLOW)
|
||||||
|
ci-update-release-packages: $(CI_WORKFLOW)
|
||||||
|
@echo $^
|
||||||
|
|
||||||
|
$(CI_WORKFLOW): $(LOCKFILE) $(CI_WORKFLOW_TPL)
|
||||||
|
@\
|
||||||
|
echo "==> Updating $@ to match $<"; \
|
||||||
|
$(call WRITE_GENERATED_FILE_HEADER,$@,make $@,$^); \
|
||||||
|
cat $< | gomplate -f $(CI_WORKFLOW_TPL) -d 'package-list=stdin://?type=application/yaml' >> $@
|
||||||
|
|
||||||
|
.PHONY: ci-config
|
||||||
|
ci-config: ci-update-release-packages
|
||||||
|
@$(MAKE) -C .circleci ci-config
|
||||||
|
.PHONY: ci-verify
|
||||||
|
ci-verify:
|
||||||
|
@$(MAKE) -C .circleci ci-verify
|
||||||
|
|
||||||
|
.PHONY: bin default prep test vet bootstrap ci-bootstrap fmt fmtcheck mysql-database-plugin mysql-legacy-database-plugin cassandra-database-plugin influxdb-database-plugin postgresql-database-plugin mssql-database-plugin hana-database-plugin mongodb-database-plugin static-assets ember-dist ember-dist-dev static-dist static-dist-dev assetcheck check-vault-in-path check-browserstack-creds test-ui-browserstack stage-commit publish-commit
|
||||||
|
|
||||||
.NOTPARALLEL: ember-dist ember-dist-dev static-assets
|
.NOTPARALLEL: ember-dist ember-dist-dev static-assets
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
* linguist-generated
|
|
@ -0,0 +1,293 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
include $(shell git rev-parse --show-toplevel)/packages*.lock/config.mk
|
||||||
|
|
||||||
|
.PHONY: packages commands build package write-builder-cache-keys \
|
||||||
|
write-all-package-cache-keys build-all
|
||||||
|
|
||||||
|
GOOS ?= $(shell go env GOOS 2>/dev/null || echo linux)
|
||||||
|
GOARCH ?= $(shell go env GOARCH 2>/dev/null || echo amd64)
|
||||||
|
|
||||||
|
DEFAULT_PACKAGE_YQ := [ .packages[] | select(.inputs.GOOS=="$(GOOS)" and .inputs.GOARCH=="$(GOARCH)") ][0]
|
||||||
|
QUERY_DEFAULT_PACKAGESPEC = $(call QUERY_LOCK,$(DEFAULT_PACKAGE_YQ) | $(1))
|
||||||
|
|
||||||
|
# MK is shorthand for changing to repo root and selecting a make target
|
||||||
|
# from a file in this directory. All *.mk files in this directory assume
|
||||||
|
# the current working directory is the repo root. This Makefile exists
|
||||||
|
# to invoke those mk files correctly.
|
||||||
|
MK := $(MAKE) -C $(REPO_ROOT) -f $(LOCKDIR)/
|
||||||
|
|
||||||
|
# configure load-builder-cache target to load the most specific builder layer cache
|
||||||
|
# available as an archive in the build cache.
|
||||||
|
|
||||||
|
ifneq ($(PACKAGE_SPEC_ID),)
|
||||||
|
|
||||||
|
PACKAGE_CACHE_KEY_FILE := $(shell $(call QUERY_PACKAGESPEC,.meta.builtin.PACKAGE_CACHE_KEY_FILE))
|
||||||
|
|
||||||
|
# Loading the best available archive for a specific package build.
|
||||||
|
|
||||||
|
BUILD_LAYER_ARCHIVES := $(shell $(call QUERY_PACKAGESPEC,.meta.builtin.BUILD_LAYERS[].archive))
|
||||||
|
BEST_BUILD_LAYER_ARCHIVE := $(shell cd $(REPO_ROOT) && for F in $(BUILD_LAYER_ARCHIVES); do \
|
||||||
|
if [ -f $$F ]; then echo $$F; exit 0; fi; done)
|
||||||
|
ifeq ($(BEST_BUILD_LAYER_ARCHIVE),)
|
||||||
|
load-builder-cache:
|
||||||
|
@echo "No build layer archives found in build cache. Looked for: $(BUILD_LAYER_ARCHIVES)"
|
||||||
|
else
|
||||||
|
BEST_BUILD_LAYER_NAME := $(shell $(call QUERY_PACKAGESPEC,.meta.builtin.BUILD_LAYERS[] \
|
||||||
|
| select(.archive=="$(BEST_BUILD_LAYER_ARCHIVE)") | .name))
|
||||||
|
BEST_BUILD_LAYER_LOAD_TARGET := $(BEST_BUILD_LAYER_NAME)-load
|
||||||
|
|
||||||
|
load-builder-cache:
|
||||||
|
@$(MK)layer.mk $(BEST_BUILD_LAYER_LOAD_TARGET)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
else ifneq ($(LAYER_SPEC_ID),)
|
||||||
|
|
||||||
|
# Loading the best avilable archive for a specific layer build.
|
||||||
|
|
||||||
|
BUILD_LAYER_ARCHIVES := $(shell $(call QUERY_LOCK,.layers[] | select(.name=="$(LAYER_SPEC_ID)") \
|
||||||
|
| .meta.builtin.LAYER_LIST[].archive))
|
||||||
|
BEST_BUILD_LAYER_ARCHIVE := $(shell cd $(REPO_ROOT) && for F in $(BUILD_LAYER_ARCHIVES); do \
|
||||||
|
if [ -f $$F ]; then echo $$F; exit 0; fi; done)
|
||||||
|
ifeq ($(BEST_BUILD_LAYER_ARCHIVE),)
|
||||||
|
|
||||||
|
load-builder-cache:
|
||||||
|
@echo "No build layer archives found in build cache. Looked for: $(BUILD_LAYER_ARCHIVES)"
|
||||||
|
|
||||||
|
else
|
||||||
|
BEST_BUILD_LAYER_NAME := $(shell $(call QUERY_LOCK,.layers[] | select(.name=="$(LAYER_SPEC_ID)") \
|
||||||
|
| .meta.builtin.LAYER_LIST[] | select(.archive=="$(BEST_BUILD_LAYER_ARCHIVE)") | .name))
|
||||||
|
BEST_BUILD_LAYER_LOAD_TARGET := $(BEST_BUILD_LAYER_NAME)-load
|
||||||
|
|
||||||
|
load-builder-cache:
|
||||||
|
@$(MK)layer.mk $(BEST_BUILD_LAYER_LOAD_TARGET)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
load-builder-cache:
|
||||||
|
@echo "You must set PACKAGE_SPEC_ID or LAYER_SPEC_ID so we know which caches to look for."
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
commands:
|
||||||
|
@$(MAKE) -f packages.mk commands
|
||||||
|
|
||||||
|
# build is a convenience target for local builds, do not use in CI.
|
||||||
|
# Instead, use `make package` specifying PACKAGE_SPEC_ID.
|
||||||
|
build:
|
||||||
|
@echo "==> Building default package for GOOS=$(GOOS) GOARCH=$(GOARCH)"
|
||||||
|
@ALIASES=$$($(call QUERY_DEFAULT_PACKAGESPEC,.aliases[] | "alias type:\(.type) path:\(.path)") | column -t); \
|
||||||
|
echo "$$ALIASES"
|
||||||
|
@PACKAGE_SPEC_ID="$$($(call QUERY_DEFAULT_PACKAGESPEC,.packagespecid) | head -n1)"; \
|
||||||
|
COMMAND="PACKAGE_SOURCE_ID=$$PACKAGE_SOURCE_ID PACKAGE_SPEC_ID=$$PACKAGE_SPEC_ID $(MK)build.mk package"; \
|
||||||
|
echo "$$COMMAND"; \
|
||||||
|
$(SHELL) "$$COMMAND"
|
||||||
|
|
||||||
|
# meta is a convenience target for local builds, do not use in CI.
|
||||||
|
# Instead, use `make package-meta` specifying PACKAGE_SPEC_ID.
|
||||||
|
meta:
|
||||||
|
@echo "==> Writing metacdata for default package (GOOS=$(GOOS) GOARCH=$(GOARCH))"
|
||||||
|
@ALIASES=$$($(call QUERY_DEFAULT_PACKAGESPEC,.aliases[] | "alias type:\(.type) path:\(.path)") | column -t); \
|
||||||
|
echo "$$ALIASES"
|
||||||
|
@PACKAGE_SPEC_ID="$$($(call QUERY_DEFAULT_PACKAGESPEC,.packagespecid) | head -n1)"; \
|
||||||
|
COMMAND="PACKAGE_SOURCE_ID=$$PACKAGE_SOURCE_ID PACKAGE_SPEC_ID=$$PACKAGE_SPEC_ID $(MK)build.mk package-meta"; \
|
||||||
|
echo "$$COMMAND"; \
|
||||||
|
$(SHELL) "$$COMMAND"
|
||||||
|
|
||||||
|
# build-all is a convenience target to sequentially build each package.
|
||||||
|
# It is mostly useful in the tutorial, do not use this in CI as it is much slower
|
||||||
|
# than building packages in parallel.
|
||||||
|
build-all:
|
||||||
|
@PACKAGE_SPEC_IDS="$$($(call QUERY_LOCK,.packages[] | .packagespecid))"; \
|
||||||
|
COUNT=$$(echo $$PACKAGE_SPEC_IDS | wc -w | xargs); \
|
||||||
|
echo "==> Building all $$COUNT packages sequentially."; \
|
||||||
|
for PACKAGE_SPEC_ID in $$PACKAGE_SPEC_IDS; do \
|
||||||
|
COMMAND="PACKAGE_SOURCE_ID=$$PACKAGE_SOURCE_ID PACKAGE_SPEC_ID=$$PACKAGE_SPEC_ID $(MK)build.mk package"; \
|
||||||
|
echo "$$COMMAND"; \
|
||||||
|
$(SHELL) "$$COMMAND"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# package expects PACKAGE_SPEC_ID to already be set, use this in CI.
|
||||||
|
package:
|
||||||
|
@echo "==> Building package spec $(PACKAGE_SPEC_ID)"
|
||||||
|
@ALIASES=$$($(call QUERY_PACKAGESPEC,.aliases[] | "alias type:\(.type) path:\(.path)") | column -t); \
|
||||||
|
echo "$$ALIASES"
|
||||||
|
@COMMAND="PACKAGE_SOURCE_ID=$$PACKAGE_SOURCE_ID PACKAGE_SPEC_ID=$$PACKAGE_SPEC_ID $(MK)build.mk package"; \
|
||||||
|
echo "$$COMMAND"; \
|
||||||
|
$(SHELL) "$$COMMAND"
|
||||||
|
|
||||||
|
# package-meta expects PACKAGE_SPEC_ID to already be set, use this in CI.
|
||||||
|
package-meta:
|
||||||
|
@echo "==> Writing metadata for package $(PACKAGE_SPEC_ID)"
|
||||||
|
@ALIASES=$$($(call QUERY_PACKAGESPEC,.aliases[] | "alias type:\(.type) path:\(.path)") | column -t); \
|
||||||
|
echo "$$ALIASES"
|
||||||
|
@COMMAND="PACKAGE_SOURCE_ID=$$PACKAGE_SOURCE_ID PACKAGE_SPEC_ID=$$PACKAGE_SPEC_ID $(MK)build.mk package-meta"; \
|
||||||
|
echo "$$COMMAND"; \
|
||||||
|
$(SHELL) "$$COMMAND"
|
||||||
|
|
||||||
|
# aliases writes all alias symlinks for packages in the package store that
|
||||||
|
# match the current LOCKFILE and PRODUCT_REVISION. It does not cause a new build.
|
||||||
|
# If the package store contains no matchin binaries, then this does nothing.
|
||||||
|
aliases:
|
||||||
|
@echo "==> Writing alias symlinks for existing packages in the store."; \
|
||||||
|
cd $(REPO_ROOT); \
|
||||||
|
PACKAGE_SPEC_IDS="$$($(call QUERY_LOCK,.packages[] | .packagespecid))"; \
|
||||||
|
for PACKAGE_SPEC_ID in $$PACKAGE_SPEC_IDS; do \
|
||||||
|
PACKAGE_FILE="$$PACKAGE_SOURCE_ID-$$PACKAGE_SPEC_ID.zip"; \
|
||||||
|
PACKAGE="$(CACHE_ROOT)/packages/store/$$PACKAGE_FILE"; \
|
||||||
|
[ -f $$PACKAGE ] || continue; \
|
||||||
|
ALIASES=$$($(call QUERY_PACKAGESPEC_BY_ID,'$$PACKAGE_SPEC_ID',.aliases[] | "$(CACHE_ROOT)/packages/by-alias/\(.type)/\(.path)")); \
|
||||||
|
for A in $$ALIASES; do \
|
||||||
|
mkdir -p $$(dirname $$A); \
|
||||||
|
$(LN) -rfs $$PACKAGE $$A; \
|
||||||
|
echo "==> Alias written: $$A -> $$PACKAGE"; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
write-builder-cache-keys:
|
||||||
|
@echo "==> Writing build layer cache keys"
|
||||||
|
@$(MK)layer.mk write-cache-keys
|
||||||
|
|
||||||
|
write-package-cache-key:
|
||||||
|
@if [ -z "$(PACKAGE_CACHE_KEY_FILE)" ]; then echo "Must set PACKAGE_SPEC_ID"; exit 1; fi
|
||||||
|
@$(WRITE_PACKAGE_CACHE_KEY)
|
||||||
|
@echo "==> Package cache key written: $(PACKAGE_CACHE_KEY_FILE)"
|
||||||
|
|
||||||
|
# WRITE_PACKAGE_CACHE_KEY writes the package cache key for PACKAGE_SPEC_ID.
|
||||||
|
# We reference this as an environment variable, so you can override it in a
|
||||||
|
# recipe rather than relying on the global setting.
|
||||||
|
define WRITE_PACKAGE_CACHE_KEY
|
||||||
|
( \
|
||||||
|
cd $(REPO_ROOT); \
|
||||||
|
KEY="PACKAGE_SPEC_ID=$$PACKAGE_SPEC_ID"$$'\n'"PACKAGE_SOURCE_ID=$(PACKAGE_SOURCE_ID)"; \
|
||||||
|
FILE=$$(yq -r ".packages[] | select(.packagespecid==\"$$PACKAGE_SPEC_ID\") \
|
||||||
|
| .meta.builtin.PACKAGE_CACHE_KEY_FILE" < $(LOCK)); \
|
||||||
|
echo "$$FILE"; \
|
||||||
|
echo "$$KEY"; \
|
||||||
|
mkdir -p $$(dirname $$FILE); \
|
||||||
|
echo "$$KEY" > "$$FILE";\
|
||||||
|
)
|
||||||
|
endef
|
||||||
|
|
||||||
|
write-all-package-cache-keys:
|
||||||
|
@IDS="$$($(call QUERY_LOCK,.packages[].packagespecid))"; \
|
||||||
|
for PACKAGE_SPEC_ID in $$IDS; do \
|
||||||
|
$(WRITE_PACKAGE_CACHE_KEY); \
|
||||||
|
done; \
|
||||||
|
echo "==> All package cache keys written"
|
||||||
|
|
||||||
|
clean-builder-images:
|
||||||
|
@IMAGES=$$(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^$(BUILDER_IMAGE_PREFIX)' || true); \
|
||||||
|
if [ -z "$$IMAGES" ]; then exit 0; fi; \
|
||||||
|
docker rmi -f $$IMAGES
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@cd $(REPO_ROOT); rm -rf $(CACHE_ROOT)
|
||||||
|
|
||||||
|
clean-all: clean clean-builder-images
|
||||||
|
|
||||||
|
clean-all-prune: clean-all
|
||||||
|
docker container prune
|
||||||
|
docker image prune
|
||||||
|
|
||||||
|
# Configure the releaser repo. If you are developing that repo, you may want
|
||||||
|
# to clone it adjacent to this one in ../packagespec-release, otherwise it will
|
||||||
|
# be cloned into .releaser, if you have access to it.
|
||||||
|
# If using it in an adjacent directory, you won't need to push changes in order
|
||||||
|
# to test them locally.
|
||||||
|
RELEASER_REPO ?= git@github.com:hashicorp/packagespec-release.git
|
||||||
|
RELEASER_DIR := $(REPO_ROOT)/../packagespec-release
|
||||||
|
RELEASER_CLONE := NO
|
||||||
|
RELEASER_PULL := NO
|
||||||
|
ifeq ($(shell if [ -d $(RELEASER_DIR) ]; then echo OK; else echo NO; fi),NO)
|
||||||
|
RELEASER_GITIGNORE := $(REPO_ROOT)/.tmp/.gitignore
|
||||||
|
RELEASER_DIR := $(REPO_ROOT)/.tmp/releaser
|
||||||
|
RELEASER_CLONE := YES
|
||||||
|
RELEASER_PULL := YES
|
||||||
|
endif
|
||||||
|
|
||||||
|
# REQUIRE_EXPORT requires a set of make variables to be nonempty,
|
||||||
|
# exits 1 if any are not, and exports each one otherwise.
|
||||||
|
# To be used in recipe bodies.
|
||||||
|
define REQUIRE_EXPORT
|
||||||
|
$(foreach VAR,$(1),[ -n "$($(VAR))" ] || { echo "Must set $(VAR)"; exit 1; }; export $(VAR)='$($(VAR))';)
|
||||||
|
endef
|
||||||
|
|
||||||
|
# EXPORT exports each named variable, if it exists.
|
||||||
|
define EXPORT
|
||||||
|
$(foreach VAR,$(1),export $(VAR)='$($(VAR))';)
|
||||||
|
endef
|
||||||
|
|
||||||
|
# INVOKE_RELEASER_TARGET invokes the named target (first arg) in the releaser
|
||||||
|
# repository, first calling REQUIRE_EXPORT on all the named variables (second arg).
|
||||||
|
define INVOKE_RELEASER_TARGET
|
||||||
|
$(call REQUIRE_EXPORT,\
|
||||||
|
PRODUCT_REPO_LOCAL PRODUCT_REPO PRODUCT_PATH \
|
||||||
|
PRODUCT_CIRCLECI_SLUG PRODUCT_CIRCLECI_HOST RELEASE_SYSTEM_BRANCH \
|
||||||
|
PRODUCT_RELEASE_REPO SPEC LOCKDIR \
|
||||||
|
) \
|
||||||
|
[ -d "$(RELEASER_DIR)" ] || { \
|
||||||
|
[ $(RELEASER_CLONE) = YES ] || { \
|
||||||
|
echo "You must clone $(RELEASER_REPO) into $(RELEASER_DIR)"; exit 1; \
|
||||||
|
}; \
|
||||||
|
mkdir -p $(RELEASER_DIR); \
|
||||||
|
echo "*" > "$(RELEASER_GITIGNORE)"; \
|
||||||
|
echo "==> First time setup for staging/publishing work."; \
|
||||||
|
echo "==> Attempting to clone $(RELEASER_REPO) into $(RELEASER_DIR)"; \
|
||||||
|
echo "==> NOTE: The above repo is only available to HashiCorp employees at this time."; \
|
||||||
|
mkdir -p $(RELEASER_DIR); \
|
||||||
|
if ! git clone -q "$(RELEASER_REPO)" "$(RELEASER_DIR)"; then \
|
||||||
|
echo "==> ERROR: Failed to clone $(RELEASER_REPO)"; \
|
||||||
|
fi; \
|
||||||
|
}; \
|
||||||
|
( \
|
||||||
|
cd $(RELEASER_DIR); \
|
||||||
|
if [ $(RELEASER_PULL) = YES ]; then \
|
||||||
|
git checkout -q master; \
|
||||||
|
git pull -q origin master; \
|
||||||
|
git clean -qf; \
|
||||||
|
git reset -q --hard HEAD; \
|
||||||
|
else \
|
||||||
|
echo "==> Using releaser code from $(RELEASER_DIR)"; \
|
||||||
|
fi; \
|
||||||
|
$(MAKE) $(1); \
|
||||||
|
)
|
||||||
|
endef
|
||||||
|
|
||||||
|
# RELEASE_TARGETS are targets in the release repo we pass control to
|
||||||
|
# to perform release actions.
|
||||||
|
# Note: The release repo is only available to HashiCorp employees.
|
||||||
|
RELEASE_TARGETS := build-ci stage-config stage
|
||||||
|
|
||||||
|
# We always rev-parse the PRODUCT_REVISION to obtain the full SHA. This is required
|
||||||
|
# for downstream processes which use it to determine part of the package name.
|
||||||
|
$(RELEASE_TARGETS): PRODUCT_REVISION := $(shell git rev-parse $${PRODUCT_REVISION:-HEAD})
|
||||||
|
$(RELEASE_TARGETS): PRODUCT_VERSION ?= 0.0.0-$(USER)-snapshot
|
||||||
|
$(RELEASE_TARGETS): RELEASE_SYSTEM_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
|
||||||
|
$(RELEASE_TARGETS):
|
||||||
|
@\
|
||||||
|
$(call REQUIRE_EXPORT,PRODUCT_REVISION PRODUCT_VERSION) \
|
||||||
|
$(call INVOKE_RELEASER_TARGET,$@)
|
||||||
|
|
||||||
|
# QUERY_TARGETS are targets in the release repo that perform queries, and are therefore
|
||||||
|
# not necessarily bound to a specific PRODUCT_VERSION or PRODUCT_REVISION.
|
||||||
|
QUERY_TARGETS := list-staged-builds watch-ci
|
||||||
|
|
||||||
|
$(QUERY_TARGETS): RELEASE_SYSTEM_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
|
||||||
|
$(QUERY_TARGETS):
|
||||||
|
@\
|
||||||
|
$(call EXPORT,PRODUCT_REVISION PRODUCT_VERSION) \
|
||||||
|
$(call INVOKE_RELEASER_TARGET,$@)
|
||||||
|
|
||||||
|
# BUNDLE_TARGETS are targets acting on specific staged bundles, identified by
|
||||||
|
# their BUNDLE_ID.
|
||||||
|
BUNDLE_TARGETS := publish-config publish inspect-staged-build
|
||||||
|
|
||||||
|
$(BUNDLE_TARGETS): RELEASE_SYSTEM_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
|
||||||
|
$(BUNDLE_TARGETS):
|
||||||
|
@\
|
||||||
|
$(call REQUIRE_EXPORT,BUNDLE_ID) \
|
||||||
|
$(call INVOKE_RELEASER_TARGET,$@)
|
|
@ -0,0 +1,126 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
This directory contains a build system for producing multiple different packages
|
||||||
|
from the same source code (i.e. a single git commit).
|
||||||
|
|
||||||
|
The build system allows the definition of *packages* which are near complete
|
||||||
|
descriptions of the build environment and build command used to produce each package.
|
||||||
|
This set of packages is used to generate CI configuration, and drives the building
|
||||||
|
of builder images (via layer.mk) and final packages (build.mk).
|
||||||
|
|
||||||
|
Packages include a set of *layers* which are individually cacheable stages of the
|
||||||
|
build, expressed as Dockerfile templates and source definitions, and cached as Docker
|
||||||
|
images.
|
||||||
|
|
||||||
|
## Why?
|
||||||
|
|
||||||
|
HashiCorp ship software written in Go, which must be compiled for multiple
|
||||||
|
different platforms, and with different build tags and compiler flags etc.
|
||||||
|
For some of our software there are many tens of variations that must be
|
||||||
|
built for a single commit. Managing these by hand is too onerous a task
|
||||||
|
and one that may easily result in error. The usual solution is to write
|
||||||
|
iterative programs that directly output the various binaries, however this
|
||||||
|
itself can be difficult to understand, and difficult to observe clearly.
|
||||||
|
|
||||||
|
By separating the workflows of _defining_ packages and then _building_ them
|
||||||
|
we end up with an easy to understand intermediate representation of
|
||||||
|
each package (packages.lock). Not only is it easy to understand, but also to
|
||||||
|
consume for other purposes, such as generating CI pipelines, or
|
||||||
|
programattically editing to further automation efforts.
|
||||||
|
|
||||||
|
packages.lock essentially contains all the non-source inputs to each package
|
||||||
|
along with pointers to the source itself. We cache all build layers/packages
|
||||||
|
and intermediate files according to their spec + source (all the inputs).
|
||||||
|
That is, each item in the cache, and the eventual packages we build are
|
||||||
|
input-addressable, meaning we can fairly aggressively cache everything,
|
||||||
|
with a simple invalidation rule: if any input changes, then invalidate the
|
||||||
|
cache.
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
The workflow is to edit `packages.yml` which is the human-editable description
|
||||||
|
of all the packages and build layers, and then to run `make packages` which
|
||||||
|
translates that definition into the `packages.lock` file tree.
|
||||||
|
|
||||||
|
Note: at present, only HashiCorp employees have access to the `packagespec` tool
|
||||||
|
used by the Makefile to generate packages.lock, this may or may not change in future.
|
||||||
|
|
||||||
|
The convenience command `make build` selects the first of these packages that
|
||||||
|
matches your local GOOS and GOARCH and builds that one.
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
There are two separate workflows: defining packages (in packages.yml)
|
||||||
|
and building packages (build.mk). For conveninience the main Makefile exposes targets
|
||||||
|
that invoke those files on your behalf, which you should always use unless debugging
|
||||||
|
the system. In CI there is another useful workflow: building the builder images
|
||||||
|
themselves and saving them to an archive file for caching. This is implemented
|
||||||
|
in layer.mk.
|
||||||
|
|
||||||
|
### config.mk
|
||||||
|
|
||||||
|
config.mk is included by all the other make files, and contains global configuration
|
||||||
|
as well as some utility macros and lists of required tools to install.
|
||||||
|
|
||||||
|
### build.mk
|
||||||
|
|
||||||
|
build.mk produces package files for distribution by running the build command
|
||||||
|
inside the relevant build container for that package.
|
||||||
|
|
||||||
|
### layer.mk
|
||||||
|
|
||||||
|
layer.mk contains all the code for building and caching the build layers,
|
||||||
|
it is included by build.mk so that you don't need to separately build layers
|
||||||
|
locally, but in CI you can invoke it directly to pre-cache layers.
|
||||||
|
|
||||||
|
### packages.yml
|
||||||
|
|
||||||
|
packages.yml is the human-editable defition of package specs.
|
||||||
|
|
||||||
|
### packages.lock
|
||||||
|
|
||||||
|
packages.lock contains the fully expanded version of packages.yml, including
|
||||||
|
the rendered dockerfiles in packages.lock/layers. When packages.lock changes
|
||||||
|
after running 'make packages' you should also re-generate CI config by running
|
||||||
|
`make ci-config` in the root of the repo, and commit them both.
|
||||||
|
|
||||||
|
## Build internals
|
||||||
|
|
||||||
|
### 1. Build each builder image layer
|
||||||
|
|
||||||
|
#### a. Build source archives, assign SOURCE_ID
|
||||||
|
|
||||||
|
The build process uses the definitions in packages.lock to generate source
|
||||||
|
archives (using the layers' source-include and source-exclude fields)
|
||||||
|
from either the local filesystem, or direct from git if PRODUCT_REVISION is
|
||||||
|
set. It assigns each set of source code a SOURCE_ID which is either the
|
||||||
|
SHA of the latest git commit to affect any of that code, or else if the code
|
||||||
|
is dirty (contains uncommitted changes), a SHA1 sum of the latest commit plus
|
||||||
|
the output of 'git diff' in order to make it unique
|
||||||
|
|
||||||
|
#### b. Build the docker image
|
||||||
|
|
||||||
|
Using the Dockerfile from packages.lock, the source code from the source
|
||||||
|
archive, and a reference to the base image (the one from the layer below)
|
||||||
|
build a Docker image. Each layer in packagespec.lock is addressed (has an
|
||||||
|
ID) which is a hash of its content, its source definition, and the ID of
|
||||||
|
its parent layer. This layer ID is combined with the SOURCE_ID to produce
|
||||||
|
the name of the Docker image (LAYER_ID:SOURCE_ID-PARENTHASH). We also append
|
||||||
|
'PARENTHASH' Which is a cumulative hash of each build layer's ID up to that
|
||||||
|
point. This ensures that if any base layer changes input-wise in any way,
|
||||||
|
then all subsequent layers are invalidated.
|
||||||
|
|
||||||
|
### 2. Build the package
|
||||||
|
|
||||||
|
Using the top-most buider image, which must by now contain all the source code,
|
||||||
|
execute the build command (passing in some externally calculated paths) to
|
||||||
|
compile and package the software.
|
||||||
|
|
||||||
|
Use `docker cp` to copy out the built artefact. We do this instead of using
|
||||||
|
mounts, because that's more compatible with various remote Docker scenarios.
|
||||||
|
|
||||||
|
### 3. Address the package.
|
||||||
|
|
||||||
|
Each package is addressed by all its inputs (including source code), but this
|
||||||
|
is not a human-readable name. We also add package aliases, in the form of
|
||||||
|
symlinks in .buildcache/packages/by-alias which are human-readable names
|
||||||
|
and names required by other systems involved in distribution.
|
|
@ -0,0 +1,117 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
# build.mk builds the packages defined in packages.lock, first building all necessary
|
||||||
|
# builder images.
|
||||||
|
#
|
||||||
|
# NOTE: This file should always run as though it were in the repo root, so all paths
|
||||||
|
# are relative to the repo root.
|
||||||
|
|
||||||
|
# Include config.mk relative to repo root.
|
||||||
|
include $(shell git rev-parse --show-toplevel)/packages*.lock/config.mk
|
||||||
|
|
||||||
|
ifeq ($(PACKAGE_SPEC_ID),)
|
||||||
|
$(error You must set PACKAGE_SPEC_ID; 'make build' does this for you.)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(PRODUCT_VERSION),)
|
||||||
|
$(error You cannot set PRODUCT_VERSION for local builds, did you mean PRODUCT_REVISION?)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# PACKAGES_ROOT holds the package store, as well as other package aliases.
|
||||||
|
PACKAGES_ROOT := $(CACHE_ROOT)/packages
|
||||||
|
# PACKAGE_STORE is where we store all the package files themselves
|
||||||
|
# addressed by their input hashes.
|
||||||
|
PACKAGE_STORE := $(PACKAGES_ROOT)/store
|
||||||
|
# BY_ALIAS is where we store alias symlinks to the store.
|
||||||
|
BY_ALIAS := $(PACKAGES_ROOT)/by-alias
|
||||||
|
|
||||||
|
# Include the layers driver.
|
||||||
|
include $(LOCKDIR)/layer.mk
|
||||||
|
|
||||||
|
# GET_IMAGE_MARKER_FILE gets the name of the Docker image marker file
|
||||||
|
# for the named build layer.
|
||||||
|
GET_IMAGE_MARKER_FILE = $($(1)_IMAGE)
|
||||||
|
# GET_IMAGE_NAME gets the Docker image name of the build layer.
|
||||||
|
GET_IMAGE_NAME = $($(1)_IMAGE_NAME)
|
||||||
|
|
||||||
|
# Determine the top-level build layer.
|
||||||
|
BUILD_LAYER_NAME := $(shell $(call QUERY_PACKAGESPEC,.meta.builtin.BUILD_LAYERS[0].name))
|
||||||
|
BUILD_LAYER_IMAGE = $(call GET_IMAGE_MARKER_FILE,$(BUILD_LAYER_NAME))
|
||||||
|
BUILD_LAYER_IMAGE_NAME = $(call GET_IMAGE_NAME,$(BUILD_LAYER_NAME))
|
||||||
|
|
||||||
|
BUILD_COMMAND := $(shell $(call QUERY_PACKAGESPEC,.["build-command"]))
|
||||||
|
BUILD_ENV := $(shell $(call QUERY_PACKAGESPEC,.inputs | to_entries[] | "\(.key)=\(.value)"))
|
||||||
|
ALIASES := $(shell $(call QUERY_PACKAGESPEC,.aliases[] | "\(.type)/\(.path)"))
|
||||||
|
ALIASES := $(addprefix $(BY_ALIAS)/,$(ALIASES))
|
||||||
|
|
||||||
|
ifeq ($(BUILD_COMMAND),)
|
||||||
|
$(error Unable to find build command for package spec ID $(PACKAGE_SPEC_ID))
|
||||||
|
endif
|
||||||
|
ifeq ($(BUILD_ENV),)
|
||||||
|
$(error Unable to find build inputs for package spec ID $(PACKAGE_SPEC_ID))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Configure paths and filenames.
|
||||||
|
OUTPUT_DIR := $(PACKAGE_STORE)
|
||||||
|
_ := $(shell mkdir -p $(OUTPUT_DIR))
|
||||||
|
# PACKAGE_NAME is the input-addressed name of the package.
|
||||||
|
PACKAGE_NAME := $(PACKAGE_SOURCE_ID)-$(PACKAGE_SPEC_ID)
|
||||||
|
PACKAGE_ZIP_NAME := $(PACKAGE_NAME).zip
|
||||||
|
PACKAGE := $(OUTPUT_DIR)/$(PACKAGE_ZIP_NAME)
|
||||||
|
META_JSON_NAME := $(PACKAGE_ZIP_NAME).meta.json
|
||||||
|
META := $(OUTPUT_DIR)/$(META_JSON_NAME)
|
||||||
|
|
||||||
|
# In the container, place the output dir at root. This makes 'docker cp' easier.
|
||||||
|
CONTAINER_OUTPUT_DIR := /$(OUTPUT_DIR)
|
||||||
|
|
||||||
|
FULL_BUILD_COMMAND := export $(BUILD_ENV) && mkdir -p $(CONTAINER_OUTPUT_DIR) && $(BUILD_COMMAND)
|
||||||
|
|
||||||
|
### Docker run command configuration.
|
||||||
|
|
||||||
|
DOCKER_SHELL := /bin/bash -euo pipefail -c
|
||||||
|
|
||||||
|
DOCKER_RUN_ENV_FLAGS := \
|
||||||
|
-e PACKAGE_SOURCE_ID=$(PACKAGE_SOURCE_ID) \
|
||||||
|
-e OUTPUT_DIR=$(CONTAINER_OUTPUT_DIR) \
|
||||||
|
-e PACKAGE_ZIP_NAME=$(PACKAGE_ZIP_NAME)
|
||||||
|
|
||||||
|
BUILD_CONTAINER_NAME := build-$(PACKAGE_SPEC_ID)-$(PACKAGE_SOURCE_ID)
|
||||||
|
DOCKER_RUN_FLAGS := $(DOCKER_RUN_ENV_FLAGS) --name $(BUILD_CONTAINER_NAME)
|
||||||
|
# DOCKER_RUN_COMMAND ties everything together to build the final package as a
|
||||||
|
# single docker run invocation.
|
||||||
|
DOCKER_RUN_COMMAND = docker run $(DOCKER_RUN_FLAGS) $(BUILD_LAYER_IMAGE_NAME) $(DOCKER_SHELL) '$(FULL_BUILD_COMMAND)'
|
||||||
|
# DOCKER_CP_COMMAND copies the built artefact from the build container.
|
||||||
|
DOCKER_CP_COMMAND = docker cp $(BUILD_CONTAINER_NAME):$(CONTAINER_OUTPUT_DIR)/$(PACKAGE_ZIP_NAME) $(PACKAGE)
|
||||||
|
|
||||||
|
# package builds the package according to the set PACKAGE_SPEC_ID and PRODUCT_REVISION.
|
||||||
|
.PHONY: package
|
||||||
|
package: $(ALIASES)
|
||||||
|
@echo $(PACKAGE)
|
||||||
|
|
||||||
|
.PHONY: package-meta
|
||||||
|
package-meta: $(META)
|
||||||
|
@echo $(META)
|
||||||
|
|
||||||
|
$(META): $(LOCK)
|
||||||
|
@$(call QUERY_PACKAGESPEC,.) > $@
|
||||||
|
|
||||||
|
# PACKAGE builds the package.
|
||||||
|
$(PACKAGE): $(BUILD_LAYER_IMAGE)
|
||||||
|
@mkdir -p $$(dirname $@)
|
||||||
|
@echo "==> Building package: $@"
|
||||||
|
@echo "PACKAGE_SOURCE_ID: $(PACKAGE_SOURCE_ID)"
|
||||||
|
@echo "PACKAGE_SPEC_ID: $(PACKAGE_SPEC_ID)"
|
||||||
|
@# Print alias info.
|
||||||
|
@$(call QUERY_PACKAGESPEC,.aliases[] | "alias type:\(.type) path:\(.path)") | column -t
|
||||||
|
@docker rm -f $(BUILD_CONTAINER_NAME) > /dev/null 2>&1 || true # Speculative cleanup.
|
||||||
|
$(DOCKER_RUN_COMMAND)
|
||||||
|
$(DOCKER_CP_COMMAND)
|
||||||
|
@docker rm -f $(BUILD_CONTAINER_NAME)
|
||||||
|
|
||||||
|
# ALIASES writes the package alias links.
|
||||||
|
# ALIASES must be phony to ensure they are updated to point to the
|
||||||
|
# latest builds.
|
||||||
|
.PHONY: $(ALIASES)
|
||||||
|
$(ALIASES): $(PACKAGE)
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@$(LN) -rfs $(PACKAGE) $@
|
||||||
|
@echo "==> Package alias written: $@"
|
|
@ -0,0 +1,231 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
# config.mk contains constants and derived configuration that applies to
|
||||||
|
# building both layers and final packages.
|
||||||
|
|
||||||
|
# Only include the config once. This means we can include it in the header
|
||||||
|
# of each makefile, to allow calling them individually and when they call
|
||||||
|
# each other.
|
||||||
|
ifneq ($(CONFIG_INCLUDED),YES)
|
||||||
|
CONFIG_INCLUDED := YES
|
||||||
|
|
||||||
|
# Set SHELL to strict mode, in a way compatible with both old and new GNU make.
|
||||||
|
SHELL := /usr/bin/env bash -euo pipefail -c
|
||||||
|
|
||||||
|
REPO_ROOT := $(shell git rev-parse --show-toplevel)
|
||||||
|
|
||||||
|
# Set AUTO_INSTALL_TOOLS to YES in CI to have any missing required tools installed
|
||||||
|
# automatically.
|
||||||
|
AUTO_INSTALL_TOOLS ?= NO
|
||||||
|
|
||||||
|
# CACHE_ROOT is the build cache directory.
|
||||||
|
CACHE_ROOT ?= .buildcache
|
||||||
|
|
||||||
|
CACHE_GITIGNORE := $(CACHE_ROOT)/.gitignore
|
||||||
|
$(shell [ -f $(CACHE_GITIGNORE) ] || { mkdir -p $(CACHE_ROOT); echo '*' > $(CACHE_GITIGNORE); })
|
||||||
|
|
||||||
|
# SPEC is the human-managed description of which packages we are able to build.
|
||||||
|
SPEC_FILE_PATTERN := packages*.yml
|
||||||
|
SPEC := $(shell cd $(REPO_ROOT); find . -mindepth 1 -maxdepth 1 -name '$(SPEC_FILE_PATTERN)')
|
||||||
|
ifneq ($(words $(SPEC)),1)
|
||||||
|
$(error Found $(words $(SPEC)) $(SPEC_FILE_PATTERN) files, need exactly 1: $(SPEC))
|
||||||
|
endif
|
||||||
|
|
||||||
|
SPEC_FILENAME := $(notdir $(SPEC))
|
||||||
|
SPEC_MODIFIER := $(SPEC_FILENAME:packages%.yml=%)
|
||||||
|
|
||||||
|
# LOCKDIR contains the lockfile and layer files.
|
||||||
|
LOCKDIR := packages$(SPEC_MODIFIER).lock
|
||||||
|
|
||||||
|
# BUILDER_IMAGE_PREFIX is used in generating layers' docker image names.
|
||||||
|
BUILDER_IMAGE_PREFIX := vault-builder
|
||||||
|
|
||||||
|
# LOCK is the generated fully-expanded rendition of SPEC, for use in generating CI
|
||||||
|
# pipelines and other things.
|
||||||
|
LOCK := $(LOCKDIR)/pkgs.yml
|
||||||
|
|
||||||
|
### Utilities and constants
|
||||||
|
GIT_EXCLUDE_PREFIX := :(exclude)
|
||||||
|
# SUM generates the sha1sum of its input.
|
||||||
|
SUM := sha1sum | cut -d' ' -f1
|
||||||
|
# QUOTE_LIST wraps a list of space-separated strings in quotes.
|
||||||
|
QUOTE := $(shell echo "'")
|
||||||
|
QUOTE_LIST = $(addprefix $(QUOTE),$(addsuffix $(QUOTE),$(1)))
|
||||||
|
GIT_EXCLUDE_LIST = $(call QUOTE_LIST,$(addprefix $(GIT_EXCLUDE_PREFIX),$(1)))
|
||||||
|
### End utilities and constants.
|
||||||
|
|
||||||
|
# ALWAYS_EXCLUDE_SOURCE prevents source from these directories from taking
|
||||||
|
# part in the SOURCE_ID, or from being sent to the builder image layers.
|
||||||
|
# This is important for allowing the head of master to build other commits
|
||||||
|
# where this build system has not been vendored.
|
||||||
|
#
|
||||||
|
# Source in LOCKDIR is encoded as PACKAGE_SPEC_ID and included in paths
|
||||||
|
# and cache keys. Source in .circleci/ should not do much more than call
|
||||||
|
# code in the release/ directory, SPEC is the source of LOCKDIR.
|
||||||
|
ALWAYS_EXCLUDE_SOURCE := $(SPEC) $(LOCKDIR)/ .circleci/
|
||||||
|
# ALWAYS_EXCLUD_SOURCE_GIT is git path filter parlance for the above.
|
||||||
|
ALWAYS_EXCLUDE_SOURCE_GIT := $(call GIT_EXCLUDE_LIST,$(ALWAYS_EXCLUDE_SOURCE))
|
||||||
|
|
||||||
|
YQ_PACKAGE_BY_ID = .packages[] | select(.packagespecid == "$(1)")
|
||||||
|
|
||||||
|
# YQ_PACKAGE_PATH is a yq query fragment to select the package PACKAGE_SPEC_ID.
|
||||||
|
# This may be invalid, check that PACKAGE_SPEC_ID is not empty before use.
|
||||||
|
YQ_PACKAGE_PATH := $(call YQ_PACKAGE_BY_ID,$(PACKAGE_SPEC_ID))
|
||||||
|
|
||||||
|
YQ_PACKAGE_PATH_BY_ID = $(call YQ_PACKAGE_BY_ID,$(1))
|
||||||
|
|
||||||
|
# QUERY_LOCK is a macro to query the lock file.
|
||||||
|
QUERY_LOCK = cd $(REPO_ROOT); yq -r '$(1)' < $(LOCK)
|
||||||
|
|
||||||
|
QUERY_SPEC = cd $(REPO_ROOT); yq -r '$(1)' < $(SPEC)
|
||||||
|
|
||||||
|
# QUERY_PACKAGESPEC queries the package according to the current PACKAGE_SPEC_ID.
|
||||||
|
QUERY_PACKAGESPEC = $(call QUERY_LOCK,$(YQ_PACKAGE_PATH) | $(1))
|
||||||
|
QUERY_PACKAGESPEC_BY_ID = $(call QUERY_LOCK,$(call YQ_PACKAGE_PATH_BY_ID,$(1)) | $(2))
|
||||||
|
|
||||||
|
# GIT_COMMIT_OR_TAG_REF returns the git commit or tag ref SHA that the passed
|
||||||
|
# commit-ish points to (that can be a commit, tag or branch ref).
|
||||||
|
#
|
||||||
|
# Note we used to suffix the passed commit-ish with '^{}' in order to traverse tags down
|
||||||
|
# to individual commits, in case the commit-ish is an annotated tag. However this
|
||||||
|
# makes build output confusing in case a tag ref is used rather than a commit ref.
|
||||||
|
# Therefore we now allow building tag refs, even though this means sometimes we might
|
||||||
|
# be building the same source with two different source IDs, and potentially wasting
|
||||||
|
# some potential cache hits. The tradeoff in terms of ease of use seems worth it for
|
||||||
|
# now, but this could be revisited later.
|
||||||
|
# The original of the line below was:
|
||||||
|
define GIT_COMMIT_OR_TAG_REF
|
||||||
|
git rev-parse --verify '$(1)'
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(PACKAGE_SOURCE_ID),)
|
||||||
|
# Even though layers may have different Git revisions, based on the latest
|
||||||
|
# revision of their source, we always want to
|
||||||
|
# honour either HEAD or the specified PRODUCT_REVISION for compiling the
|
||||||
|
# final binaries, as this revision is the one picked by a human to form
|
||||||
|
# the release, and may be baked into the binaries produced.
|
||||||
|
ifeq ($(PRODUCT_REVISION),)
|
||||||
|
# If PRODUCT_REVISION is empty (the default) we are concerned with building the
|
||||||
|
# current work tree, regardless of whether it is dirty or not. For local builds
|
||||||
|
# this is more convenient and more likely expected behaviour than having to commit
|
||||||
|
# just to perform a new build.
|
||||||
|
#
|
||||||
|
# Determine the PACKAGE_SOURCE_ID.
|
||||||
|
#
|
||||||
|
# Dirty package builds should never be cached because their PACKAGE_SOURCE_ID
|
||||||
|
# is not unique to the code, it just reflects the last commit ID in the git log
|
||||||
|
# prefixed with dirty_.
|
||||||
|
GIT_REF := HEAD
|
||||||
|
ALLOW_DIRTY ?= YES
|
||||||
|
PRODUCT_REVISION_NICE_NAME := <current-workdir>
|
||||||
|
DIRTY := $(shell cd $(REPO_ROOT); git diff --exit-code $(GIT_REF) -- $(ALWAYS_EXCLUDE_SOURCE_GIT) > /dev/null 2>&1 || echo "dirty_")
|
||||||
|
PACKAGE_SOURCE_ID := $(DIRTY)$(shell $(call GIT_COMMIT_OR_TAG_REF,$(GIT_REF)))
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# PRODUCT_REVISION is non-empty so treat it as a git commit ref and pull files
|
||||||
|
# directly from git rather than the work tree.
|
||||||
|
GIT_REF := $(PRODUCT_REVISION)
|
||||||
|
ALLOW_DIRTY := NO
|
||||||
|
PRODUCT_REVISION_NICE_NAME := $(PRODUCT_REVISION)
|
||||||
|
PACKAGE_SOURCE_ID := $(shell if COMMIT=$$($(call GIT_COMMIT_OR_TAG_REF,$(PRODUCT_REVISION))); then echo $$COMMIT; else echo FAILED; fi)
|
||||||
|
|
||||||
|
ifeq ($(PACKAGE_SOURCE_ID),FAILED)
|
||||||
|
$(error Unable to find git ref "$(PRODUCT_REVISION)", do you need to 'git fetch' it?)
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
export PRODUCT_REVISION GIT_REF ALLOW_DIRTY PACKAGE_SOURCE_ID
|
||||||
|
|
||||||
|
# REQ_TOOLS detects availability of a set of tools, and optionally auto-installs them.
|
||||||
|
define REQ_TOOLS
|
||||||
|
GROUP_NAME := $(1)
|
||||||
|
INSTALL_TOOL := $(2)
|
||||||
|
INSTALL_COMMAND := $(3)
|
||||||
|
TOOLS := $(4)
|
||||||
|
TOOL_INSTALL_LOG := $(REPO_ROOT)/$(CACHE_ROOT)/tool-install-$$(GROUP_NAME).log
|
||||||
|
_ := $$(shell mkdir -p $$(dir $$(TOOL_INSTALL_LOG)))
|
||||||
|
INSTALL_TOOL_AVAILABLE := $$(shell command -v $$(INSTALL_TOOL) > /dev/null 2>&1 && echo YES)
|
||||||
|
ATTEMPT_AUTO_INSTALL := NO
|
||||||
|
ifeq ($$(INSTALL_TOOL_AVAILABLE),YES)
|
||||||
|
ifeq ($$(AUTO_INSTALL_TOOLS),YES)
|
||||||
|
ATTEMPT_AUTO_INSTALL := YES
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
MISSING_PACKAGES := $$(shell \
|
||||||
|
for T in $$(TOOLS); do \
|
||||||
|
BIN=$$$$(echo $$$$T | cut -d':' -f1); \
|
||||||
|
if ! command -v $$$$BIN > /dev/null 2>&1; then \
|
||||||
|
echo $$$$T | cut -d':' -f2; \
|
||||||
|
fi; \
|
||||||
|
done | sort | uniq)
|
||||||
|
ifneq ($$(MISSING_PACKAGES),)
|
||||||
|
ifneq ($$(ATTEMPT_AUTO_INSTALL),YES)
|
||||||
|
$$(error You are missing required tools, please run '$$(INSTALL_COMMAND) $$(MISSING_PACKAGES)'.)
|
||||||
|
else
|
||||||
|
RESULT := $$(shell $$(INSTALL_COMMAND) $$(MISSING_PACKAGES) && echo OK > $$(TOOL_INSTALL_LOG))
|
||||||
|
ifneq ($$(shell cat $$(TOOL_INSTALL_LOG)),OK)
|
||||||
|
$$(info Failed to auto-install packages with command $$(INSTALL_COMMAND) $$(MISSING_PACKAGES))
|
||||||
|
$$(error $$(shell cat $$(TOOL_INSTALL_LOG)))
|
||||||
|
else
|
||||||
|
$$(info $$(TOOL_INSTALL_LOG))
|
||||||
|
$$(info Installed $$(GROUP_NAME) tools successfully.)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(shell uname),Darwin)
|
||||||
|
# On Mac, try to install things with homebrew.
|
||||||
|
BREW_TOOLS := gln:coreutils gtouch:coreutils gstat:coreutils \
|
||||||
|
gtar:gnu-tar gfind:findutils jq:jq yq:python-yq
|
||||||
|
$(eval $(call REQ_TOOLS,brew,brew,brew install,$(BREW_TOOLS)))
|
||||||
|
else
|
||||||
|
# If not mac, try to install using apt.
|
||||||
|
APT_TOOLS := pip3:python3-pip jq:jq column:bsdmainutils
|
||||||
|
$(eval $(call REQ_TOOLS,apt,apt-get,sudo apt-get update && sudo apt-get install -y,$(APT_TOOLS)))
|
||||||
|
PIP_TOOLS := yq:yq
|
||||||
|
$(eval $(call REQ_TOOLS,pip,pip3,pip3 install,$(PIP_TOOLS)))
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
# We rely on GNU touch, tar and ln.
|
||||||
|
# On macOS, we assume they are installed as gtouch, gtar, gln by homebrew.
|
||||||
|
ifeq ($(shell uname),Darwin)
|
||||||
|
TOUCH := gtouch
|
||||||
|
TAR := gtar
|
||||||
|
LN := gln
|
||||||
|
STAT := gstat
|
||||||
|
FIND := gfind
|
||||||
|
else
|
||||||
|
TOUCH := touch
|
||||||
|
TAR := tar
|
||||||
|
LN := ln
|
||||||
|
STAT := stat
|
||||||
|
FIND := find
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Read config from the spec.
|
||||||
|
|
||||||
|
# PRODUCT_REPO is the official Git repo for this project.
|
||||||
|
PRODUCT_REPO := $(shell $(call QUERY_SPEC,.config["product-repo"]))
|
||||||
|
|
||||||
|
# PRODUCT_REPO_LOCAL is the local clone of this git repo.
|
||||||
|
PRODUCT_REPO_LOCAL := $(REPO_ROOT)
|
||||||
|
|
||||||
|
# RELEASE_REPO is the release repository for this project.
|
||||||
|
PRODUCT_RELEASE_REPO := $(shell $(call QUERY_SPEC,.config["release-repo"]))
|
||||||
|
|
||||||
|
# PRODUCT_PATH must be unique for every repo.
|
||||||
|
# A golang-style package path is ideal.
|
||||||
|
PRODUCT_PATH := $(shell $(call QUERY_SPEC,.config["product-id"]))
|
||||||
|
|
||||||
|
# PRODUCT_CIRCLECI_SLUG is the slug of this repo's CircleCI project.
|
||||||
|
PRODUCT_CIRCLECI_SLUG := $(shell $(call QUERY_SPEC,.config["circleci-project-slug"]))
|
||||||
|
|
||||||
|
# PRODUCT_CIRCLECI_HOST is the host configured to build this repo.
|
||||||
|
PRODUCT_CIRCLECI_HOST := $(shell $(call QUERY_SPEC,.config["circleci-host"]))
|
||||||
|
|
||||||
|
# End including config once only.
|
||||||
|
endif
|
|
@ -0,0 +1,340 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
# layer.mk contains the machinery to incrementally build the builder image
|
||||||
|
# as separate layers, so each can be cached both locally and in CI. This serves
|
||||||
|
# both to speed up builds by avoiding unnecessary repetition of work already done,
|
||||||
|
# as well as to ehnance the reliability of builds by downloading external
|
||||||
|
# dependencies only once per build when necessary.
|
||||||
|
#
|
||||||
|
# The build layers themselves can be individually exported as tarballs (by calling
|
||||||
|
# make <layer-name>-save) for later inspection, for sharing, or for implementing
|
||||||
|
# on-host caching without recourse to external docker registries.
|
||||||
|
#
|
||||||
|
# To use this file, include it in another makefile, and from there you must eval
|
||||||
|
# calls to the LAYER macro with this syntax:
|
||||||
|
#
|
||||||
|
# $(eval $(call LAYER,<name>,<type>,<parent-name>,<source-include>,<source-exclude>))
|
||||||
|
#
|
||||||
|
# Each layer assumes the existence of a Dockerfile named <name>.Dockerfile in
|
||||||
|
# packages.lock/layers.
|
||||||
|
# It uses the <parent-name> to set a Docker build arg called BASE_IMAGE to the
|
||||||
|
# resultant docker image ref of the named parent layer. You should use this BASE_IMAGE
|
||||||
|
# in the FROM line in your image.
|
||||||
|
#
|
||||||
|
# There must also be a base image which has no parent, and that Dockerfile should
|
||||||
|
# use a FROM line from an explicit docker image, e.g. debian:buster.
|
||||||
|
#
|
||||||
|
# Each image is provided only the source code identified by <source-include>, minus
|
||||||
|
# any source code matched by <source-exclude>. Source code is any files which are
|
||||||
|
# present and not ignored by Git. This includes cached files, modified files and new,
|
||||||
|
# untracked files. The Dockerfile belonging to this layer is ALWAYS included in the
|
||||||
|
# source, so you don't need to manually specify that.
|
||||||
|
#
|
||||||
|
# The set of source code identified by a single image layer is used to produce its
|
||||||
|
# SOURCE_ID. The SOURCE_ID, when all the files are tracked by Git and are not modified
|
||||||
|
# equals the latest Git commit SHA that affected any of those files or directories.
|
||||||
|
# When there are any new or modified files, we take a SHA 256 sum of the latest Git
|
||||||
|
# commit affecting those files concatenated with the output of git diff and the contents
|
||||||
|
# of any untracked files, and prefix this with "dirty_". The SOURCE_ID is used as part of
|
||||||
|
# the cache key for that layer.
|
||||||
|
#
|
||||||
|
# Because different combinations of source-include and source-exclude may have been
|
||||||
|
# modified by the same commit, they may share the same source ID. Therefore, we also
|
||||||
|
# calculate the LAYER_ID which takes into account not only the current layer's source
|
||||||
|
# ID, but also its source include/exclude and the ID of its base layer. Thus any change
|
||||||
|
# in any of the inputs of any base layer invalidates the cache of all subsequent layers.
|
||||||
|
|
||||||
|
include $(shell git rev-parse --show-toplevel)/packages*.lock/config.mk
|
||||||
|
|
||||||
|
.SECONDARY:
|
||||||
|
|
||||||
|
DOCKERFILES_DIR := $(LOCKDIR)/layers
|
||||||
|
|
||||||
|
_ := $(shell mkdir -p $(CACHE_ROOT)/source-archives)
|
||||||
|
|
||||||
|
### END BUILDER IMAGE LAYERS
|
||||||
|
|
||||||
|
## LAYER
|
||||||
|
|
||||||
|
# The LAYER macro defines all the targets for each image defined above.
|
||||||
|
#
|
||||||
|
# The phony targets are the ones we typically run ourselves or in CI, they are:
|
||||||
|
#
|
||||||
|
# <name>-debug : dump debug info for this image layer
|
||||||
|
# <name>-image : build the image for this image layer
|
||||||
|
# <name>-save : save the docker image for this layer as a tar.gz
|
||||||
|
# <name>-load : load this image from the saved tar.gz
|
||||||
|
|
||||||
|
define LAYER
|
||||||
|
LAYERS += $(1)
|
||||||
|
$(1)_NAME := $(1)
|
||||||
|
$(1)_TYPE := $(2)
|
||||||
|
$(1)_BASE := $(3)
|
||||||
|
$(1)_SOURCE_INCLUDE := $(4)
|
||||||
|
$(1)_SOURCE_EXCLUDE := $(sort $(5) $(ALWAYS_EXCLUDE_SOURCE))
|
||||||
|
$(1)_CACHE_KEY_FILE := $(REPO_ROOT)/$(6)
|
||||||
|
$(1)_IMAGE_ARCHIVE := $(REPO_ROOT)/$(7)
|
||||||
|
|
||||||
|
$(1)_CACHE_ROOT := $(CACHE_ROOT)/layers/$$($(1)_NAME)
|
||||||
|
|
||||||
|
ifneq ($$($(1)_BASE),)
|
||||||
|
$(1)_BASE_CACHE_ROOT := $(CACHE_ROOT)/layers/$$($(1)_BASE)
|
||||||
|
$(1)_BASE_ID_FILE := $$($(1)_BASE_CACHE_ROOT)/current-layer-id
|
||||||
|
$(1)_BASE_LAYER_ID := $$(shell cat $$($(1)_BASE_ID_FILE))
|
||||||
|
$(1)_BASE_CACHE := $$($(1)_BASE_CACHE_ROOT)/$$($(1)_BASE_LAYER_ID)
|
||||||
|
$(1)_BASE_IMAGE := $$($(1)_BASE_CACHE)/image.marker
|
||||||
|
$(1)_BASE_IMAGE_NAME = $$(shell cat $$($(1)_BASE_IMAGE))
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(1)_DOCKERFILE := $(DOCKERFILES_DIR)/$$($(1)_NAME).Dockerfile
|
||||||
|
|
||||||
|
# If no source is included, set source ID to none.
|
||||||
|
# Note that we include the checksum of the generated Dockerfile as part of cache IDs
|
||||||
|
# so we still invalidate the cache appropriately.
|
||||||
|
ifeq ($$($(1)_SOURCE_INCLUDE),)
|
||||||
|
|
||||||
|
$(1)_SOURCE_CMD := echo ""
|
||||||
|
$(1)_SOURCE_ID := packagespec-only-$$($(1)_NAME)
|
||||||
|
$(1)_SOURCE_ID_NICE_NAME := <packagespec-only>
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
$(1)_SOURCE_GIT = $$($(1)_SOURCE_INCLUDE) $$(call GIT_EXCLUDE_LIST,$$($(1)_SOURCE_EXCLUDE))
|
||||||
|
$(1)_SOURCE_COMMIT := $$(shell git rev-list -n1 $(GIT_REF) -- $$($(1)_SOURCE_GIT))
|
||||||
|
|
||||||
|
# If we allow dirty builds, generate the source ID as a function of the
|
||||||
|
# source in in the current work tree. Where the source all happens to match a Git commit,
|
||||||
|
# that commit's SHA will be the source ID.
|
||||||
|
ifeq ($(ALLOW_DIRTY),YES)
|
||||||
|
|
||||||
|
$(1)_SOURCE_CMD := { { \
|
||||||
|
git ls-files -- $$($(1)_SOURCE_GIT); \
|
||||||
|
git ls-files -m --exclude-standard -- $$($(1)_SOURCE_GIT); \
|
||||||
|
} | sort | uniq; }
|
||||||
|
$(1)_SOURCE_MODIFIED := $$(trim $$(shell git ls-files -m -- $$($(1)_SOURCE_GIT)))
|
||||||
|
$(1)_SOURCE_MODIFIED_SUM := $$(trim $$(shell git diff -- $$($(1)_SOURCE_GIT) | $(SUM)))
|
||||||
|
$(1)_SOURCE_NEW := $$(trim $$(shell git ls-files -o --exclude-standard -- $$($(1)_SOURCE_GIT)))
|
||||||
|
$(1)_SOURCE_NEW_SUM := $$(trim $$(shell git ls-files -o --exclude-standard -- $$($(1)_SOURCE_GIT) | $(SUM)))
|
||||||
|
$(1)_SOURCE_DIRTY := $$(trim $$(shell if [ -z "$$($(1)_SOURCE_MODIFIED)" ] && [ -z "$$($(1)_SOURCE_NEW)" ]; then echo NO; else echo YES; fi))
|
||||||
|
|
||||||
|
$(1)_SOURCE_ID := $$(shell if [ -z "$$($(1)_SOURCE_MODIFIED)" ] && [ -z "$$($(1)_SOURCE_NEW)" ]; then \
|
||||||
|
echo $$($(1)_SOURCE_COMMIT); \
|
||||||
|
else \
|
||||||
|
echo -n dirty_; echo $$($(1)_SOURCE_MODIFIED_SUM) $$($(1)_SOURCE_NEW_SUM) | $(SUM); \
|
||||||
|
fi)
|
||||||
|
$(1)_SOURCE_DIRTY_LIST := $$($(1)_SOURCE_MODIFIED) $$($(1)_SOOURCE_NEW)
|
||||||
|
|
||||||
|
$(1)_SOURCE_ID_NICE_NAME := $$($(1)_SOURCE_ID)
|
||||||
|
|
||||||
|
# No dirty builds allowed, so the SOURCE_ID is the git commit SHA,
|
||||||
|
# and we list files using git ls-tree.
|
||||||
|
else
|
||||||
|
|
||||||
|
$(1)_SOURCE_ID := $$($(1)_SOURCE_COMMIT)
|
||||||
|
$(1)_SOURCE_ID_NICE_NAME := $$($(1)_SOURCE_ID)
|
||||||
|
$(1)_SOURCE_CMD := git ls-tree -r --name-only $(GIT_REF) -- $$($(1)_SOURCE_GIT)
|
||||||
|
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# LAYER_ID_CONTENTS dictates all the fields that can cause cache invalidation
|
||||||
|
# to propagate from the current layer to all dependent layers.
|
||||||
|
define $(1)_LAYER_ID_CONTENTS
|
||||||
|
BASE_LAYER_ID=$$($(1)_BASE_LAYER_ID);
|
||||||
|
LAYER_NAME=$$($(1)_NAME);
|
||||||
|
SOURCE_ID=$$($(1)_SOURCE_ID);
|
||||||
|
SOURCE_INCLUDE=$$($(1)_SOURCE_INCLUDE);
|
||||||
|
SOURCE_EXCLUDE=$$($(1)_SOURCE_EXCLUDE);
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(1)_LAYER_ID_CONTENTS_FILE := $$($(1)_CACHE_ROOT)/current-layer-id-contents
|
||||||
|
$(1)_LAYER_ID_FILE := $$($(1)_CACHE_ROOT)/current-layer-id
|
||||||
|
|
||||||
|
# Create cache root dir and write LAYER_ID_FILE_CONTENTS file.
|
||||||
|
_ := $$(shell \
|
||||||
|
mkdir -p $$($(1)_CACHE_ROOT); \
|
||||||
|
echo "$$($(1)_LAYER_ID_CONTENTS)" > $$($(1)_LAYER_ID_CONTENTS_FILE); \
|
||||||
|
)
|
||||||
|
|
||||||
|
$(1)_LAYER_ID := $$(shell cat $$($(1)_LAYER_ID_CONTENTS_FILE) | $(SUM))
|
||||||
|
$(1)_SOURCE_ARCHIVE := $(CACHE_ROOT)/source-archives/$$($(1)_TYPE)-$$($(1)_LAYER_ID).tar
|
||||||
|
$(1)_IMAGE_NAME := $(BUILDER_IMAGE_PREFIX)-$$($(1)_NAME):$$($(1)_LAYER_ID)
|
||||||
|
$(1)_CACHE := $(CACHE_ROOT)/layers/$$($(1)_NAME)/$$($(1)_LAYER_ID)
|
||||||
|
|
||||||
|
# Create cache dir and write Layer ID file.
|
||||||
|
_ := $$(shell \
|
||||||
|
mkdir -p $$($(1)_CACHE); \
|
||||||
|
echo $$($(1)_LAYER_ID) > $$($(1)_LAYER_ID_FILE); \
|
||||||
|
)
|
||||||
|
|
||||||
|
$(1)_PHONY_TARGET_NAMES := debug id image save load
|
||||||
|
|
||||||
|
$(1)_PHONY_TARGETS := $$(addprefix $$($(1)_NAME)-,$$($(1)_PHONY_TARGET_NAMES))
|
||||||
|
|
||||||
|
.PHONY: $$($(1)_PHONY_TARGETS)
|
||||||
|
|
||||||
|
# File targets.
|
||||||
|
$(1)_IMAGE := $$($(1)_CACHE)/image.marker
|
||||||
|
$(1)_LAYER_REFS := $$($(1)_CACHE)/image.layer_refs
|
||||||
|
$(1)_IMAGE_TIMESTAMP := $$($(1)_CACHE)/image.created_time
|
||||||
|
|
||||||
|
$(1)_TARGETS = $$($(1)_PHONY_TARGETS)
|
||||||
|
|
||||||
|
# UPDATE_MARKER_FILE ensures the image marker file has the same timestamp as the
|
||||||
|
# docker image creation date it represents. This enables make to only rebuild it when
|
||||||
|
# it has really changed, especially after loading the image from an archive.
|
||||||
|
# It also writes a list of all the layers in this docker image's history, for use
|
||||||
|
# when saving layers out to archives for use in pre-populating Docker build caches.
|
||||||
|
define $(1)_UPDATE_MARKER_FILE
|
||||||
|
export MARKER=$$($(1)_IMAGE); \
|
||||||
|
export LAYER_REFS=$$($(1)_LAYER_REFS); \
|
||||||
|
export IMAGE=$$($(1)_IMAGE_NAME); \
|
||||||
|
export IMAGE_CREATED; \
|
||||||
|
if ! { IMAGE_CREATED="$$$$(docker inspect -f '{{.Created}}' $$$$IMAGE 2>/dev/null)"; }; then \
|
||||||
|
if [ -f "$$$$MARKER" ]; then \
|
||||||
|
echo "==> Removing stale marker file for $$$$IMAGE" 1>&2; \
|
||||||
|
rm -f $$$$MARKER; \
|
||||||
|
fi; \
|
||||||
|
exit 0; \
|
||||||
|
fi; \
|
||||||
|
if [ ! -f "$$$$MARKER" ]; then \
|
||||||
|
echo "==> Writing marker file for $$$$IMAGE (created $$$$IMAGE_CREATED)" 1>&2; \
|
||||||
|
fi; \
|
||||||
|
echo $$$$IMAGE > $$$$MARKER; \
|
||||||
|
$(TOUCH) -m -d $$$$IMAGE_CREATED $$$$MARKER; \
|
||||||
|
echo "$$$$IMAGE" > $$$$LAYER_REFS; \
|
||||||
|
docker history --no-trunc -q $$$$IMAGE | grep -Fv '<missing>' >> $$$$LAYER_REFS;
|
||||||
|
endef
|
||||||
|
|
||||||
|
## PHONY targets
|
||||||
|
$(1)-debug:
|
||||||
|
@echo "==> Debug info: $$($(1)_NAME) depends on $$($(1)_BASE)"
|
||||||
|
@echo "$(1)_TARGETS = $$($(1)_TARGETS)"
|
||||||
|
@echo "$(1)_SOURCE_CMD = $$($(1)_SOURCE_CMD)"
|
||||||
|
@echo "$(1)_CACHE = $$($(1)_CACHE)"
|
||||||
|
@echo "$(1)_DOCKERFILE = $$($(1)_DOCKERFILE)"
|
||||||
|
@echo "$(1)_SOURCE_COMMIT = $$($(1)_SOURCE_COMMIT)"
|
||||||
|
@echo "$(1)_SOURCE_ID = $$($(1)_SOURCE_ID)"
|
||||||
|
@echo "$(1)_SOURCE_MODIFIED = $$($(1)_SOURCE_MODIFIED)"
|
||||||
|
@echo "$(1)_SOURCE_DIRTY = $$($(1)_SOURCE_DIRTY)"
|
||||||
|
@echo "$(1)_SOURCE_NEW = $$($(1)_SOURCE_NEW)"
|
||||||
|
@echo "$(1)_IMAGE = $$($(1)_IMAGE)"
|
||||||
|
@echo "$(1)_IMAGE_TIMESTAMP = $$($(1)_IMAGE_TIMESTAMP)"
|
||||||
|
@echo "$(1)_IMAGE_ARCHIVE = $$($(1)_IMAGE_ARCHIVE)"
|
||||||
|
@echo "$(1)_BASE_IMAGE = $$($(1)_BASE_IMAGE)"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
$(1)-id:
|
||||||
|
@echo $(1)-$$($(1)_SOURCE_ID)
|
||||||
|
|
||||||
|
$(1)-write-cache-key:
|
||||||
|
@mkdir -p $$(dir $$($(1)_CACHE_KEY_FILE)); \
|
||||||
|
cp $$($(1)_LAYER_ID_CONTENTS_FILE) $$($(1)_CACHE_KEY_FILE); \
|
||||||
|
echo "==> Cache key for $(1) written to $$($(1)_CACHE_KEY_FILE)"; \
|
||||||
|
cat $$($(1)_CACHE_KEY_FILE)
|
||||||
|
|
||||||
|
$(1)-image: $$($(1)_IMAGE)
|
||||||
|
@cat $$<
|
||||||
|
|
||||||
|
$(1)-layer-refs: $$($(1)_LAYER_REFS)
|
||||||
|
@echo $$<
|
||||||
|
|
||||||
|
$(1)-save: $$($(1)_IMAGE_ARCHIVE)
|
||||||
|
@echo $$<
|
||||||
|
|
||||||
|
$(1)-load:
|
||||||
|
@\
|
||||||
|
ARCHIVE=$$($(1)_IMAGE_ARCHIVE); \
|
||||||
|
IMAGE=$$($(1)_IMAGE_NAME); \
|
||||||
|
MARKER=$$($(1)_IMAGE); \
|
||||||
|
rm -f $$$$MARKER; \
|
||||||
|
echo "==> Loading $$$$IMAGE image from $$$$ARCHIVE"; \
|
||||||
|
docker load < $$$$ARCHIVE
|
||||||
|
@$$(call $(1)_UPDATE_MARKER_FILE)
|
||||||
|
|
||||||
|
## END PHONY targets
|
||||||
|
|
||||||
|
# Set the BASE_IMAGE build arg to reference the appropriate base image,
|
||||||
|
# unless there is no referenced base image.
|
||||||
|
$(1)_DOCKER_BUILD_ARGS = $$(shell [ -z "$$($(1)_BASE)" ] || echo --build-arg BASE_IMAGE=$$$$(cat $$($(1)_BASE_IMAGE)))
|
||||||
|
|
||||||
|
$(1)_SOURCE_ARCHIVE_WITH_DOCKERFILE := $$($(1)_CACHE)/source-archive.tar
|
||||||
|
|
||||||
|
# Build the docker image.
|
||||||
|
#
|
||||||
|
# For dirty builds, tar up a source archive from the local filesystem.
|
||||||
|
# We --ignore-failed-read so that deleted files that are not
|
||||||
|
# committed do not cause problems. This should be OK for dirty builds.
|
||||||
|
#
|
||||||
|
# For non-dirty builds, ask Git directly for a source archive.
|
||||||
|
#
|
||||||
|
# We explicitly set the TAR format to ustar because this seems more compatible
|
||||||
|
# with Docker than any other format. In future we should change this to POSIX
|
||||||
|
# once Docker supports that properly, because ustar only supports filenames
|
||||||
|
# < 256 chars which could eventually be an issue.
|
||||||
|
TAR_FORMAT := --format=ustar
|
||||||
|
$(1)_FULL_DOCKER_BUILD_COMMAND = docker build -t $$($(1)_IMAGE_NAME) $$($(1)_DOCKER_BUILD_ARGS) \
|
||||||
|
-f $$($(1)_DOCKERFILE) - < $$($(1)_SOURCE_ARCHIVE_WITH_DOCKERFILE)
|
||||||
|
$$($(1)_IMAGE): $$($(1)_BASE_IMAGE)
|
||||||
|
@$$(call $(1)_UPDATE_MARKER_FILE)
|
||||||
|
@if [ -f "$$@" ]; then exit 0; fi; \
|
||||||
|
echo "==> Building Docker image $$($(1)_IMAGE_NAME)"; \
|
||||||
|
echo " Layer name : $$($(1)_NAME)"; \
|
||||||
|
echo " Layer source ID : $$($(1)_SOURCE_ID_NICE_NAME)"; \
|
||||||
|
echo " For product revision : $(PRODUCT_REVISION_NICE_NAME)"; \
|
||||||
|
echo " For package source ID : $(PACKAGE_SOURCE_ID)"; \
|
||||||
|
if [ ! -f "$$($(1)_SOURCE_ARCHIVE)" ]; then \
|
||||||
|
if [ "$(ALLOW_DIRTY)" = "YES" ]; then \
|
||||||
|
echo "==> Building source archive from working directory: $$($(1)_SOURCE_ARCHIVE)" 1>&2; \
|
||||||
|
$$($(1)_SOURCE_CMD) | $(TAR) --create $(TAR_FORMAT) --file $$($(1)_SOURCE_ARCHIVE) --ignore-failed-read -T -; \
|
||||||
|
else \
|
||||||
|
echo "==> Building source archive from git: $$($(1)_SOURCE_ARCHIVE)" 1>&2; \
|
||||||
|
git archive --format=tar $(GIT_REF) $$($(1)_SOURCE_GIT) > $$($(1)_SOURCE_ARCHIVE); \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
if [ ! -f "$$($(1)_SOURCE_ARCHIVE_WITH_DOCKERFILE)" ]; then \
|
||||||
|
echo "==> Appending Dockerfile to source archive: $$($(1)_SOURCE_ARCHIVE_WITH_DOCKERFILE)" 1>&2; \
|
||||||
|
cp $$($(1)_SOURCE_ARCHIVE) $$($(1)_SOURCE_ARCHIVE_WITH_DOCKERFILE); \
|
||||||
|
$(TAR) --append $(TAR_FORMAT) $$($(1)_DOCKERFILE) --file $$($(1)_SOURCE_ARCHIVE_WITH_DOCKERFILE); \
|
||||||
|
fi; \
|
||||||
|
echo $$($(1)_FULL_DOCKER_BUILD_COMMAND); \
|
||||||
|
$$($(1)_FULL_DOCKER_BUILD_COMMAND); \
|
||||||
|
$$(call $(1)_UPDATE_MARKER_FILE)
|
||||||
|
|
||||||
|
# Save the docker image as a tar.gz.
|
||||||
|
$$($(1)_IMAGE_ARCHIVE): | $$($(1)_IMAGE)
|
||||||
|
@mkdir -p $$(dir $$@); \
|
||||||
|
IMAGE=$$$$(cat $$($(1)_IMAGE)); \
|
||||||
|
echo "==> Saving $(1) image to $$@"; \
|
||||||
|
docker save $$$$IMAGE \
|
||||||
|
$$$$(docker history -q --no-trunc $$$$IMAGE | grep -v missing) \
|
||||||
|
| gzip > $$@
|
||||||
|
|
||||||
|
$$($(1)_LAYER_REFS):
|
||||||
|
@echo "$$($(1)_IMAGE_NAME)" > $$@
|
||||||
|
@docker history --no-trunc -q $$($(1)_IMAGE_NAME) | grep -Fv '<missing>' >> $$@
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
### END LAYER
|
||||||
|
|
||||||
|
# Include the generated instructions to build each layer.
|
||||||
|
include $(sort $(shell find $(DOCKERFILES_DIR) -name '*.mk'))
|
||||||
|
|
||||||
|
# Eagerly update the docker image marker files.
|
||||||
|
_ := $(foreach L,$(LAYERS),$(shell $(call $(L)_UPDATE_MARKER_FILE)))
|
||||||
|
|
||||||
|
# DOCKER_LAYER_LIST is used to dump the name of every docker ref in use
|
||||||
|
# by all of the current builder images. By running 'docker save' against
|
||||||
|
# this list, we end up with a tarball that can pre-populate the docker
|
||||||
|
# cache to avoid unnecessary rebuilds.
|
||||||
|
DOCKER_LAYER_LIST := $(CACHE_ROOT)/docker-layer-list
|
||||||
|
|
||||||
|
write-cache-keys: $(addsuffix -write-cache-key,$(LAYERS))
|
||||||
|
@echo "==> All cache keys written."
|
||||||
|
|
||||||
|
build-all-layers: $(addsuffix -image,$(LAYERS))
|
||||||
|
@echo "==> All builder layers built."
|
||||||
|
|
||||||
|
.PHONY: debug
|
||||||
|
debug: $(addsuffix -debug,$(LAYERS))
|
||||||
|
|
16
packages-oss.lock/layers/00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9.Dockerfile
generated
Executable file
16
packages-oss.lock/layers/00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9.Dockerfile
generated
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
FROM debian@sha256:68f4e2259032a4e6f5035804e64438b52af8dd5889528b305b9059183ea4cd2a
|
||||||
|
COPY . ./
|
||||||
|
RUN apt-get update -y && apt-get install --no-install-recommends -y -q \
|
||||||
|
curl \
|
||||||
|
zip \
|
||||||
|
build-essential \
|
||||||
|
gcc-multilib \
|
||||||
|
g++-multilib \
|
||||||
|
ca-certificates \
|
||||||
|
git mercurial bzr \
|
||||||
|
gnupg \
|
||||||
|
libltdl-dev \
|
||||||
|
libltdl7 \
|
||||||
|
bash \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
10
packages-oss.lock/layers/01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590.Dockerfile
generated
Executable file
10
packages-oss.lock/layers/01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590.Dockerfile
generated
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOPATH /gopath
|
||||||
|
ENV GOROOT /goroot
|
||||||
|
RUN mkdir $GOROOT && mkdir $GOPATH
|
||||||
|
RUN curl https://storage.googleapis.com/golang/go1.14.7.linux-amd64.tar.gz \
|
||||||
|
| tar xzf - -C $GOROOT --strip-components=1
|
||||||
|
ENV PATH $GOROOT/bin:$GOPATH/bin:$PATH
|
10
packages-oss.lock/layers/02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e.Dockerfile
generated
Executable file
10
packages-oss.lock/layers/02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e.Dockerfile
generated
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GO111MODULE=off
|
||||||
|
RUN go get golang.org/x/tools/cmd/goimports
|
||||||
|
RUN go get github.com/hashicorp/go-bindata
|
||||||
|
RUN go get github.com/hashicorp/go-bindata/go-bindata
|
||||||
|
RUN go get github.com/elazarl/go-bindata-assetfs
|
||||||
|
RUN go get github.com/elazarl/go-bindata-assetfs/go-bindata-assetfs
|
8
packages-oss.lock/layers/03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049.Dockerfile
generated
Executable file
8
packages-oss.lock/layers/03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049.Dockerfile
generated
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV REPO=github.com/hashicorp/vault
|
||||||
|
ENV DIR=$GOPATH/src/$REPO
|
||||||
|
RUN mkdir -p $DIR
|
||||||
|
WORKDIR $DIR
|
9
packages-oss.lock/layers/04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319.Dockerfile
generated
Executable file
9
packages-oss.lock/layers/04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319.Dockerfile
generated
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
||||||
|
RUN curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
||||||
|
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
||||||
|
RUN apt-get update -y && apt-get install -y -q nodejs yarn=1.19.1-1 \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
6
packages-oss.lock/layers/05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81.Dockerfile
generated
Executable file
6
packages-oss.lock/layers/05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81.Dockerfile
generated
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
RUN cd ui && yarn install
|
||||||
|
RUN cd ui && npm rebuild node-sass
|
5
packages-oss.lock/layers/06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b.Dockerfile
generated
Executable file
5
packages-oss.lock/layers/06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b.Dockerfile
generated
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
RUN cd ui && yarn run build
|
7
packages-oss.lock/layers/07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e.Dockerfile
generated
Executable file
7
packages-oss.lock/layers/07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e.Dockerfile
generated
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
RUN go-bindata-assetfs -o bindata_assetfs.go -pkg http -prefix pkg -modtime 1480000000 -tags ui ./pkg/web_ui/...
|
||||||
|
RUN mkdir -p http && mv bindata_assetfs.go http/
|
||||||
|
RUN goimports -w http/bindata_assetfs.go
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=freebsd
|
||||||
|
ENV GOARCH=386
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=linux
|
||||||
|
ENV GOARCH=arm
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=freebsd
|
||||||
|
ENV GOARCH=arm
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=darwin
|
||||||
|
ENV GOARCH=amd64
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=linux
|
||||||
|
ENV GOARCH=arm64
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=windows
|
||||||
|
ENV GOARCH=amd64
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=netbsd
|
||||||
|
ENV GOARCH=386
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=freebsd
|
||||||
|
ENV GOARCH=amd64
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=linux
|
||||||
|
ENV GOARCH=386
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=linux
|
||||||
|
ENV GOARCH=amd64
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=openbsd
|
||||||
|
ENV GOARCH=amd64
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=windows
|
||||||
|
ENV GOARCH=386
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=netbsd
|
||||||
|
ENV GOARCH=amd64
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=solaris
|
||||||
|
ENV GOARCH=amd64
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=openbsd
|
||||||
|
ENV GOARCH=386
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607.Dockerfile
generated
Executable file
14
packages-oss.lock/layers/08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607.Dockerfile
generated
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
||||||
|
ENV GOOS=darwin
|
||||||
|
ENV GOARCH=386
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
4
packages-oss.lock/layers/09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-8490d401277a4001bbc44b278a91858049d76683.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-8490d401277a4001bbc44b278a91858049d76683.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-93206299230604edb276a2550a83dec3324eb86f.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-93206299230604edb276a2550a83dec3324eb86f.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
4
packages-oss.lock/layers/09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84.Dockerfile
generated
Executable file
4
packages-oss.lock/layers/09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84.Dockerfile
generated
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
ARG BASE_IMAGE
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
COPY . ./
|
|
@ -0,0 +1,361 @@
|
||||||
|
# WARNING: Do not EDIT or MERGE this file, it is generated by 'packagespec lock'.
|
||||||
|
|
||||||
|
LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_ID := 00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9
|
||||||
|
LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_TYPE := base
|
||||||
|
LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_BASE_LAYER :=
|
||||||
|
LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_SOURCE_INCLUDE :=
|
||||||
|
LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_CACHE_KEY_FILE := .buildcache/cache-keys/base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9
|
||||||
|
LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_ARCHIVE_FILE := .buildcache/archives/00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_ID),$(LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_TYPE),$(LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_BASE_LAYER),$(LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_SOURCE_INCLUDE),$(LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_SOURCE_EXCLUDE),$(LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_CACHE_KEY_FILE),$(LAYER_00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_ID := 01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590
|
||||||
|
LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_TYPE := install-go
|
||||||
|
LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_BASE_LAYER := 00-base-a1d961bcff31b1cdadaa9422452ba72d8b4a85a9
|
||||||
|
LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_SOURCE_INCLUDE :=
|
||||||
|
LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_CACHE_KEY_FILE := .buildcache/cache-keys/install-go-df55de749899e75ed655c4eab8cb2c22f1028590
|
||||||
|
LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_ARCHIVE_FILE := .buildcache/archives/01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_ID),$(LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_TYPE),$(LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_BASE_LAYER),$(LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_SOURCE_INCLUDE),$(LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_SOURCE_EXCLUDE),$(LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_CACHE_KEY_FILE),$(LAYER_01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_ID := 02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e
|
||||||
|
LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_TYPE := install-go-tools
|
||||||
|
LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_BASE_LAYER := 01-install-go-df55de749899e75ed655c4eab8cb2c22f1028590
|
||||||
|
LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_SOURCE_INCLUDE :=
|
||||||
|
LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_CACHE_KEY_FILE := .buildcache/cache-keys/install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e
|
||||||
|
LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_ARCHIVE_FILE := .buildcache/archives/02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_ID),$(LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_TYPE),$(LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_BASE_LAYER),$(LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_SOURCE_INCLUDE),$(LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_SOURCE_EXCLUDE),$(LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_CACHE_KEY_FILE),$(LAYER_02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_ID := 03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049
|
||||||
|
LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_TYPE := set-workdir
|
||||||
|
LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_BASE_LAYER := 02-install-go-tools-b7a0056ff8c7f40e047993ec4b1c0a6eab3ab44e
|
||||||
|
LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_SOURCE_INCLUDE :=
|
||||||
|
LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_CACHE_KEY_FILE := .buildcache/cache-keys/set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049
|
||||||
|
LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_ARCHIVE_FILE := .buildcache/archives/03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_ID),$(LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_TYPE),$(LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_BASE_LAYER),$(LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_SOURCE_INCLUDE),$(LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_SOURCE_EXCLUDE),$(LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_CACHE_KEY_FILE),$(LAYER_03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_ID := 04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319
|
||||||
|
LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_TYPE := install-yarn
|
||||||
|
LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_BASE_LAYER := 03-set-workdir-8253e91d0841cdc71fb0416f84f9eaa52bea9049
|
||||||
|
LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_SOURCE_INCLUDE :=
|
||||||
|
LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_CACHE_KEY_FILE := .buildcache/cache-keys/install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319
|
||||||
|
LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_ARCHIVE_FILE := .buildcache/archives/04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_ID),$(LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_TYPE),$(LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_BASE_LAYER),$(LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_SOURCE_INCLUDE),$(LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_SOURCE_EXCLUDE),$(LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_CACHE_KEY_FILE),$(LAYER_04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_ID := 05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81
|
||||||
|
LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_TYPE := ui-dependencies
|
||||||
|
LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_BASE_LAYER := 04-install-yarn-aab71c56a60048647c1c6c4a7fd5649aee7f2319
|
||||||
|
LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_SOURCE_INCLUDE := ui/package.json ui/yarn.lock
|
||||||
|
LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_CACHE_KEY_FILE := .buildcache/cache-keys/ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81
|
||||||
|
LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_ARCHIVE_FILE := .buildcache/archives/05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_ID),$(LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_TYPE),$(LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_BASE_LAYER),$(LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_SOURCE_INCLUDE),$(LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_SOURCE_EXCLUDE),$(LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_CACHE_KEY_FILE),$(LAYER_05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_ID := 06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b
|
||||||
|
LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_TYPE := build-ui
|
||||||
|
LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_BASE_LAYER := 05-ui-dependencies-58f2ea77b8fe39e82bb587e5246d1b62f9a7cb81
|
||||||
|
LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_SOURCE_INCLUDE := ui/
|
||||||
|
LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_CACHE_KEY_FILE := .buildcache/cache-keys/build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b
|
||||||
|
LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_ARCHIVE_FILE := .buildcache/archives/06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_ID),$(LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_TYPE),$(LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_BASE_LAYER),$(LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_SOURCE_INCLUDE),$(LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_SOURCE_EXCLUDE),$(LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_CACHE_KEY_FILE),$(LAYER_06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_ID := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_TYPE := build-static-assets
|
||||||
|
LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_BASE_LAYER := 06-build-ui-5659d3f1f758c2f3a4c5fca4c1fcbaac3720693b
|
||||||
|
LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_SOURCE_INCLUDE := Makefile
|
||||||
|
LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_CACHE_KEY_FILE := .buildcache/cache-keys/build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_ARCHIVE_FILE := .buildcache/archives/07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_ID),$(LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_TYPE),$(LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_BASE_LAYER),$(LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_SOURCE_INCLUDE),$(LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_SOURCE_EXCLUDE),$(LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_CACHE_KEY_FILE),$(LAYER_07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_ID := 08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_ID),$(LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_TYPE),$(LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_ID := 08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_ID),$(LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_TYPE),$(LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_ID := 08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_ID),$(LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_TYPE),$(LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_ID := 08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_ID),$(LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_TYPE),$(LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_ID := 08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_ID),$(LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_TYPE),$(LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_ID := 08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_ID),$(LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_TYPE),$(LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_ID := 08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_ID),$(LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_TYPE),$(LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_ID := 08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_ID),$(LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_TYPE),$(LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_ID := 08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_ID),$(LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_TYPE),$(LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_ID := 08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_ID),$(LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_TYPE),$(LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_ID := 08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_ID),$(LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_TYPE),$(LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_ID := 08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_ID),$(LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_TYPE),$(LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_ID := 08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_ID),$(LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_TYPE),$(LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_ID := 08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_ID),$(LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_TYPE),$(LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_ID := 08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_ID),$(LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_TYPE),$(LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_ID := 08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_TYPE := warm-go-build-vendor-cache
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_BASE_LAYER := 07-build-static-assets-33a6e8f0029b730ae0a37427888d22c992a0824e
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_SOURCE_INCLUDE := vendor/
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_SOURCE_EXCLUDE :=
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_CACHE_KEY_FILE := .buildcache/cache-keys/warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607
|
||||||
|
LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_ARCHIVE_FILE := .buildcache/archives/08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_ID),$(LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_TYPE),$(LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_BASE_LAYER),$(LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_SOURCE_INCLUDE),$(LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_SOURCE_EXCLUDE),$(LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_CACHE_KEY_FILE),$(LAYER_08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_ID := 09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1
|
||||||
|
LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_BASE_LAYER := 08-warm-go-build-vendor-cache-92c62793dfcc5b64255bfe2356532882a7d7b3aa
|
||||||
|
LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1
|
||||||
|
LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_ARCHIVE_FILE := .buildcache/archives/09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_ID),$(LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_TYPE),$(LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_BASE_LAYER),$(LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_SOURCE_INCLUDE),$(LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_SOURCE_EXCLUDE),$(LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_CACHE_KEY_FILE),$(LAYER_09-copy-source-18193d6bd814c6d4efbbc07eacb02c69434894e1_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_ID := 09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb
|
||||||
|
LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_BASE_LAYER := 08-warm-go-build-vendor-cache-487f59a5948b3519a6a17192f127e67b01b0fb6e
|
||||||
|
LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb
|
||||||
|
LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_ARCHIVE_FILE := .buildcache/archives/09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_ID),$(LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_TYPE),$(LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_BASE_LAYER),$(LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_SOURCE_INCLUDE),$(LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_SOURCE_EXCLUDE),$(LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_CACHE_KEY_FILE),$(LAYER_09-copy-source-226d84bde56c14526d6fce9bec6a47a9bef01ecb_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_ID := 09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592
|
||||||
|
LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_BASE_LAYER := 08-warm-go-build-vendor-cache-0ae71d132fc340d89dec170f4164e4eed2cab17e
|
||||||
|
LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-28b442b0f8382760addf43d2e9d4457f81e18592
|
||||||
|
LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_ARCHIVE_FILE := .buildcache/archives/09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_ID),$(LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_TYPE),$(LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_BASE_LAYER),$(LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_SOURCE_INCLUDE),$(LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_SOURCE_EXCLUDE),$(LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_CACHE_KEY_FILE),$(LAYER_09-copy-source-28b442b0f8382760addf43d2e9d4457f81e18592_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_ID := 09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716
|
||||||
|
LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_BASE_LAYER := 08-warm-go-build-vendor-cache-7d95ca17ed2ed063335c6fdfe31177f9d88dc293
|
||||||
|
LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716
|
||||||
|
LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_ARCHIVE_FILE := .buildcache/archives/09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_ID),$(LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_TYPE),$(LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_BASE_LAYER),$(LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_SOURCE_INCLUDE),$(LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_SOURCE_EXCLUDE),$(LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_CACHE_KEY_FILE),$(LAYER_09-copy-source-349c919c8e22d66bcd624b975da386c3fc5ab716_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_ID := 09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052
|
||||||
|
LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_BASE_LAYER := 08-warm-go-build-vendor-cache-4e5f0a9a53d17957205ff9c63cd50d3161af517a
|
||||||
|
LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052
|
||||||
|
LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_ARCHIVE_FILE := .buildcache/archives/09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_ID),$(LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_TYPE),$(LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_BASE_LAYER),$(LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_SOURCE_INCLUDE),$(LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_SOURCE_EXCLUDE),$(LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_CACHE_KEY_FILE),$(LAYER_09-copy-source-390a90074e7186bf31ffb8081efb4bdd47a1d052_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_ID := 09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57
|
||||||
|
LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_BASE_LAYER := 08-warm-go-build-vendor-cache-8a055286bfdd3c2b0f3ce25f54f88375384a2400
|
||||||
|
LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57
|
||||||
|
LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_ARCHIVE_FILE := .buildcache/archives/09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_ID),$(LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_TYPE),$(LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_BASE_LAYER),$(LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_SOURCE_INCLUDE),$(LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_SOURCE_EXCLUDE),$(LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_CACHE_KEY_FILE),$(LAYER_09-copy-source-3f890eaccfc0039dc98cdcaa578bb355cfa43a57_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_ID := 09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de
|
||||||
|
LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_BASE_LAYER := 08-warm-go-build-vendor-cache-a0884ebd3bcd667787991bce276f3a9be2061998
|
||||||
|
LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de
|
||||||
|
LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_ARCHIVE_FILE := .buildcache/archives/09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_ID),$(LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_TYPE),$(LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_BASE_LAYER),$(LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_SOURCE_INCLUDE),$(LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_SOURCE_EXCLUDE),$(LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_CACHE_KEY_FILE),$(LAYER_09-copy-source-60a56a8f1d39f238d784cb1129f22ccaafe580de_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_ID := 09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8
|
||||||
|
LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_BASE_LAYER := 08-warm-go-build-vendor-cache-6f6af7dce883f6e1b09b7c622ff1b527ea5f77f1
|
||||||
|
LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-679a76162b839df3b7ee21a5bac42c44533454c8
|
||||||
|
LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_ARCHIVE_FILE := .buildcache/archives/09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_ID),$(LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_TYPE),$(LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_BASE_LAYER),$(LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_SOURCE_INCLUDE),$(LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_SOURCE_EXCLUDE),$(LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_CACHE_KEY_FILE),$(LAYER_09-copy-source-679a76162b839df3b7ee21a5bac42c44533454c8_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_ID := 09-copy-source-8490d401277a4001bbc44b278a91858049d76683
|
||||||
|
LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_BASE_LAYER := 08-warm-go-build-vendor-cache-024e5c62d2ad59cb7a139748ec3571828bc950a8
|
||||||
|
LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-8490d401277a4001bbc44b278a91858049d76683
|
||||||
|
LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_ARCHIVE_FILE := .buildcache/archives/09-copy-source-8490d401277a4001bbc44b278a91858049d76683.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_ID),$(LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_TYPE),$(LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_BASE_LAYER),$(LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_SOURCE_INCLUDE),$(LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_SOURCE_EXCLUDE),$(LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_CACHE_KEY_FILE),$(LAYER_09-copy-source-8490d401277a4001bbc44b278a91858049d76683_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_ID := 09-copy-source-93206299230604edb276a2550a83dec3324eb86f
|
||||||
|
LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_BASE_LAYER := 08-warm-go-build-vendor-cache-0245576886d78da53ffbd161a95bd0ca099e5fc1
|
||||||
|
LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-93206299230604edb276a2550a83dec3324eb86f
|
||||||
|
LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_ARCHIVE_FILE := .buildcache/archives/09-copy-source-93206299230604edb276a2550a83dec3324eb86f.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_ID),$(LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_TYPE),$(LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_BASE_LAYER),$(LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_SOURCE_INCLUDE),$(LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_SOURCE_EXCLUDE),$(LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_CACHE_KEY_FILE),$(LAYER_09-copy-source-93206299230604edb276a2550a83dec3324eb86f_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_ID := 09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044
|
||||||
|
LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_BASE_LAYER := 08-warm-go-build-vendor-cache-b4bd76934c25a387356bd1fb0e28c95124eef902
|
||||||
|
LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044
|
||||||
|
LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_ARCHIVE_FILE := .buildcache/archives/09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_ID),$(LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_TYPE),$(LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_BASE_LAYER),$(LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_SOURCE_INCLUDE),$(LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_SOURCE_EXCLUDE),$(LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_CACHE_KEY_FILE),$(LAYER_09-copy-source-9e44025163546ef6ed36d41a77b027c8d02ae044_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_ID := 09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb
|
||||||
|
LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_BASE_LAYER := 08-warm-go-build-vendor-cache-6876aa566f90846d4627c4a1c86ca155ccde2f1c
|
||||||
|
LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-a750ca270a9586283d232f59f62b97733da7d3fb
|
||||||
|
LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_ARCHIVE_FILE := .buildcache/archives/09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_ID),$(LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_TYPE),$(LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_BASE_LAYER),$(LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_SOURCE_INCLUDE),$(LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_SOURCE_EXCLUDE),$(LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_CACHE_KEY_FILE),$(LAYER_09-copy-source-a750ca270a9586283d232f59f62b97733da7d3fb_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_ID := 09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f
|
||||||
|
LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_BASE_LAYER := 08-warm-go-build-vendor-cache-596df758f200592b1270d44ea6a1b934949913f4
|
||||||
|
LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f
|
||||||
|
LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_ARCHIVE_FILE := .buildcache/archives/09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_ID),$(LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_TYPE),$(LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_BASE_LAYER),$(LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_SOURCE_INCLUDE),$(LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_SOURCE_EXCLUDE),$(LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_CACHE_KEY_FILE),$(LAYER_09-copy-source-ac4d6f4024842c4a8e5893d22c0dfff9153ff69f_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_ID := 09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60
|
||||||
|
LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_BASE_LAYER := 08-warm-go-build-vendor-cache-e91703d9d7092bb5c13b3569d75ca4bb34511607
|
||||||
|
LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60
|
||||||
|
LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_ARCHIVE_FILE := .buildcache/archives/09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_ID),$(LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_TYPE),$(LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_BASE_LAYER),$(LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_SOURCE_INCLUDE),$(LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_SOURCE_EXCLUDE),$(LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_CACHE_KEY_FILE),$(LAYER_09-copy-source-bfc92f40ed9ac5e09826cc8473f9bf7b7403bd60_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_ID := 09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7
|
||||||
|
LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_BASE_LAYER := 08-warm-go-build-vendor-cache-1c18a76adf11382eaf4b84b8403c66cf104174d7
|
||||||
|
LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-f4f9d205876325505a719298391e7c233b5a1ac7
|
||||||
|
LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_ARCHIVE_FILE := .buildcache/archives/09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_ID),$(LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_TYPE),$(LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_BASE_LAYER),$(LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_SOURCE_INCLUDE),$(LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_SOURCE_EXCLUDE),$(LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_CACHE_KEY_FILE),$(LAYER_09-copy-source-f4f9d205876325505a719298391e7c233b5a1ac7_ARCHIVE_FILE)))
|
||||||
|
|
||||||
|
LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_ID := 09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84
|
||||||
|
LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_TYPE := copy-source
|
||||||
|
LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_BASE_LAYER := 08-warm-go-build-vendor-cache-28637de51e735a2eca5909e5685278b304ac5b15
|
||||||
|
LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_SOURCE_INCLUDE := .
|
||||||
|
LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_SOURCE_EXCLUDE := vendor/ ui/
|
||||||
|
LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84
|
||||||
|
LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_ARCHIVE_FILE := .buildcache/archives/09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84.tar.gz
|
||||||
|
$(eval $(call LAYER,$(LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_ID),$(LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_TYPE),$(LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_BASE_LAYER),$(LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_SOURCE_INCLUDE),$(LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_SOURCE_EXCLUDE),$(LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_CACHE_KEY_FILE),$(LAYER_09-copy-source-f976e4b1eb1e3dee4cbd089a1b97edc2f63f5d84_ARCHIVE_FILE)))
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,278 @@
|
||||||
|
# packages.yml
|
||||||
|
#
|
||||||
|
# packages.yml defines all the packages we are able to build for a single commit
|
||||||
|
# in this repo. A package means a single zip file containing the executable binary,
|
||||||
|
# and optionally other files if needed.
|
||||||
|
#
|
||||||
|
# packages.yml is a convenience file for the human management of large numbers of
|
||||||
|
# alternate packages, allowing default and templated values. We generate another
|
||||||
|
# artifact from this one, called packages.lock which contains the fully expanded set
|
||||||
|
# of package and layer specs. This fully expanded file is in turn used to drive the
|
||||||
|
# build process, and as data for templating CI config.
|
||||||
|
|
||||||
|
# config contains packagespec config for this repo.
|
||||||
|
config:
|
||||||
|
# product-repo is important to CI providers.
|
||||||
|
product-repo: git@github.com:hashicorp/vault.git
|
||||||
|
release-repo: git@github.com:hashicorp/vault-release.git
|
||||||
|
# product-id is used by external systems to identify this product.
|
||||||
|
# It can be any unique name, but a golang import path is ideal.
|
||||||
|
product-id: github.com/hashicorp/vault
|
||||||
|
circleci-project-slug: gh/hashicorp/vault
|
||||||
|
circleci-host: circleci.com
|
||||||
|
|
||||||
|
# inputs are a set of environment variables that may affect the set of bytes produced
|
||||||
|
# for a given package. Note that a package is a zip file containing the binary, so
|
||||||
|
# the name of the binary does affect the package's bytes.
|
||||||
|
inputs:
|
||||||
|
|
||||||
|
# defaults contains default input values for each package.
|
||||||
|
# These values may be overridden on a per-package basis in the packages section.
|
||||||
|
defaults:
|
||||||
|
|
||||||
|
# PRODUCT_VERSION is the version of this product. Usually, this should be left
|
||||||
|
# as 0.0.0-snapshot. When we build a release candidate, this is overridden in
|
||||||
|
# a one-off fashion to produce that build.
|
||||||
|
# This should be used in the PACKAGE_NAME template.
|
||||||
|
PRODUCT_VERSION: 0.0.0-snapshot
|
||||||
|
|
||||||
|
# GO_VERSION is the version of the Go toolchain to use to compile this package.
|
||||||
|
GO_VERSION: 1.14.7
|
||||||
|
|
||||||
|
# YARN_VERSION is the version of Yarn to install for the UI layer.
|
||||||
|
YARN_VERSION: 1.19.1-1
|
||||||
|
|
||||||
|
# Standard golang environment variables, passed to the 'go build' command.
|
||||||
|
# You can use any standard environment variables here, any that you omit
|
||||||
|
# will be ommitted from the go build command too, meaning to use the system
|
||||||
|
# default in the build container.
|
||||||
|
CGO_ENABLED: 0
|
||||||
|
GO111MODULE: "off"
|
||||||
|
|
||||||
|
# templates contain golang template strings. Each of these is rendered per package
|
||||||
|
# using that packages values (including any default values), and then added to that
|
||||||
|
# package.
|
||||||
|
# Note that templates MAY NOT refer to each other, but may refer to any default or
|
||||||
|
# package-specific inputs.
|
||||||
|
templates:
|
||||||
|
|
||||||
|
# BINARY_NAME is the name of the executable binary we compile and package.
|
||||||
|
# It is the name users will use on the CLI to invoke the product.
|
||||||
|
BINARY_NAME: 'vault{{if eq .GOOS "windows"}}.exe{{end}}'
|
||||||
|
|
||||||
|
# PRODUCT_VERSION_MMP is just the major.minor.prerelease fields of the PRODUCT_VERSION.
|
||||||
|
# Think semantic versioning (semver), although we do not version our binaries
|
||||||
|
# using semver.
|
||||||
|
PRODUCT_VERSION_MMP: >-
|
||||||
|
{{with .PRODUCT_VERSION | strings.SplitN "-" 2}}{{index . 0}}{{end}}
|
||||||
|
# PRODUCT_VERSION_PRE is just the prerelease field of the product version (i.e. the bit
|
||||||
|
# after any -, if there is one.
|
||||||
|
PRODUCT_VERSION_PRE: >-
|
||||||
|
{{with .PRODUCT_VERSION | strings.SplitN "-" 2}}{{if gt (len .) 1}}{{index . 1}}{{else}}"''"{{end}}{{end}}
|
||||||
|
|
||||||
|
# build-command is a templated bash script to be run in the final builder container
|
||||||
|
# to produce the package. It may refer to any of the inputs, including rendered templates,
|
||||||
|
# but not meta data.
|
||||||
|
#
|
||||||
|
# The build command is passed 3 environment variables, in addition to all those specified as inputs.
|
||||||
|
#
|
||||||
|
# - PACKAGE_SOURCE_ID The source ID (usually the git commit SHA, unless build is dirty)
|
||||||
|
# - OUTPUT_DIR Directory to write the executable and zip file to (will exist already)
|
||||||
|
# - PACKAGE_ZIP_NAME The name of the package zip file to create (relative to OUTPUT_DIR)
|
||||||
|
#
|
||||||
|
# NOTE: You MUST NOT use single quotes in the build command, because at present we do no escaping.
|
||||||
|
build-command: VERSION_PKG_PATH=github.com/hashicorp/vault/vendor/github.com/hashicorp/vault/sdk/version;
|
||||||
|
go build -v
|
||||||
|
-ldflags "
|
||||||
|
-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID
|
||||||
|
-X $VERSION_PKG_PATH.Version={{.PRODUCT_VERSION_MMP}}
|
||||||
|
-X $VERSION_PKG_PATH.VersionPrerelease={{.PRODUCT_VERSION_PRE}}"
|
||||||
|
-o $OUTPUT_DIR/{{.BINARY_NAME}}
|
||||||
|
&& cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME {{.BINARY_NAME}}
|
||||||
|
|
||||||
|
# packages is the full set of packages we are able to build based on a single commit
|
||||||
|
# in this repo. Each package is a map where the keys are the names of environment
|
||||||
|
# variables provided to each build (think 'go build' invocation). Each package is
|
||||||
|
# expanded by first filling in any unspecified variables with those from defaults,
|
||||||
|
# and then rendering each template and adding the result to the map.
|
||||||
|
# Each package must result in a unique PACKAGE_NAME.
|
||||||
|
#
|
||||||
|
# The fully expanded set of packages are written to packages.lock. That file
|
||||||
|
# is a useful data source for building CI/CD pipelines.
|
||||||
|
packages:
|
||||||
|
- inputs: { GOOS: darwin, GOARCH: 386 }
|
||||||
|
- inputs: { GOOS: darwin, GOARCH: amd64 }
|
||||||
|
- inputs: { GOOS: freebsd, GOARCH: 386 }
|
||||||
|
- inputs: { GOOS: freebsd, GOARCH: amd64 }
|
||||||
|
- inputs: { GOOS: freebsd, GOARCH: arm }
|
||||||
|
- inputs: { GOOS: linux, GOARCH: 386 }
|
||||||
|
- inputs: { GOOS: linux, GOARCH: amd64 }
|
||||||
|
- inputs: { GOOS: linux, GOARCH: arm }
|
||||||
|
- inputs: { GOOS: linux, GOARCH: arm64 }
|
||||||
|
- inputs: { GOOS: netbsd, GOARCH: 386 }
|
||||||
|
- inputs: { GOOS: netbsd, GOARCH: amd64 }
|
||||||
|
- inputs: { GOOS: openbsd, GOARCH: 386 }
|
||||||
|
- inputs: { GOOS: openbsd, GOARCH: amd64 }
|
||||||
|
- inputs: { GOOS: solaris, GOARCH: amd64 }
|
||||||
|
- inputs: { GOOS: windows, GOARCH: 386 }
|
||||||
|
- inputs: { GOOS: windows, GOARCH: amd64 }
|
||||||
|
|
||||||
|
# meta defines additional custom metadata about packages. This metadata does not
|
||||||
|
# participate in the PACKAGE_SPEC_ID and so changing it does not directly change cache
|
||||||
|
# keys for layers or packages. In addition, metadata may not be overridden per-package
|
||||||
|
# and is not available to input or layer dockerfile templates.
|
||||||
|
meta:
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
# No default metadata.
|
||||||
|
|
||||||
|
templates:
|
||||||
|
# BUILD_JOB_NAME is the name of a job to build this package in CI. Care must be
|
||||||
|
# taken that it is both unique within this set of packages, as well as compatible
|
||||||
|
# with the CI system's naming conventions.
|
||||||
|
BUILD_JOB_NAME: >-
|
||||||
|
{{.GOOS}}_{{.GOARCH}}_package
|
||||||
|
|
||||||
|
# POST_PROCESSORS names post processors we may apply to packages
|
||||||
|
# later. It is a space separated list of words, with each word
|
||||||
|
# naming a post-processor to run. These post-processors are not run
|
||||||
|
# during a build, and the code to run them is not contained in this repo.
|
||||||
|
# These post processors are run in the order they are specified in.
|
||||||
|
POST_PROCESSORS: '
|
||||||
|
{{- if and (eq .GOOS "darwin") (eq .GOARCH "amd64")}}apple-notarize {{end -}}
|
||||||
|
{{- if and (eq .GOOS "windows") (eq .GOARCH "amd64")}}microsoft-notarize {{end -}}
|
||||||
|
av-scan'
|
||||||
|
|
||||||
|
# BUNDLE_NAME is used in archive filenames, as well as by downstream processes.
|
||||||
|
BUNDLE_NAME: "vault_{{.PRODUCT_VERSION}}"
|
||||||
|
|
||||||
|
# package-aliases are a set of paths by which each package may be known, they are
|
||||||
|
# templates which may refer to any input or meta field defined in this file.
|
||||||
|
# Package aliases must be unique across all packages defined in this file.
|
||||||
|
# If any package-alias renders to empty, it is ignored. You can use this
|
||||||
|
# to produce aliases selectively depending on the package.
|
||||||
|
#
|
||||||
|
# Package aliases count as meta data because they do not affect the bytes produced
|
||||||
|
# per package.
|
||||||
|
#
|
||||||
|
# We use package aliases to give human-readable names to packages, and to arrange
|
||||||
|
# them in a directory hierarchy ready for further processing and distribution.
|
||||||
|
# Each alias is written as a relative symbolic link in .buildcache/packages/by-alias.
|
||||||
|
#
|
||||||
|
# At least one alias must render to a nonempty string.
|
||||||
|
package-aliases:
|
||||||
|
- type: local
|
||||||
|
template: >-
|
||||||
|
{{.BUNDLE_NAME}}_{{.GOOS}}_{{.GOARCH}}.zip
|
||||||
|
# public-hc-releases is the path to use for upload to releases.hashicorp.com
|
||||||
|
# it is empty if this package is not public (empty aliases are ignored).
|
||||||
|
- type: public-hc-releases
|
||||||
|
template: >-
|
||||||
|
vault/{{.BUNDLE_NAME}}/{{.BUNDLE_NAME}}_{{.GOOS}}_{{.GOARCH}}.zip
|
||||||
|
|
||||||
|
# Layers determines the build layers, which are individually cacheable layers
|
||||||
|
# in a linear build. Each layer contains a Dockerfile. All the layers
|
||||||
|
# together produce the final builder image used to compile binaries.
|
||||||
|
#
|
||||||
|
# The partial Dockerfiles may contain references to any of the inputs
|
||||||
|
# including rendered input templates, but may not reference meta data.
|
||||||
|
# These Dockerfiles, once rendered, count as inputs and affect the
|
||||||
|
# package spec ID of each package.
|
||||||
|
#
|
||||||
|
# The order of layers is significant. The first layer must have a FROM line, and
|
||||||
|
# forms the base image. Each subsequent layer begins from the previous one.
|
||||||
|
#
|
||||||
|
# You can control cacheability by careful use of variables and ordering.
|
||||||
|
# Try to group things which change infrequently towards the top, and
|
||||||
|
# things which change more frequently towards the bottom.
|
||||||
|
#
|
||||||
|
# If there are things you want to cache that vary between packages defined in
|
||||||
|
# this file, put them last so that the greater bulk of work can be shared.
|
||||||
|
#
|
||||||
|
# NOTE: At present, changing the names and/or adding/removing layers may
|
||||||
|
# require updating the CI template file at .circleci/config/@build-release.yml.tpl
|
||||||
|
# which references some of these layers by name.
|
||||||
|
base-image: "debian@sha256:68f4e2259032a4e6f5035804e64438b52af8dd5889528b305b9059183ea4cd2a"
|
||||||
|
layers:
|
||||||
|
- name: base
|
||||||
|
dockerfile: |-
|
||||||
|
RUN apt-get update -y && apt-get install --no-install-recommends -y -q \
|
||||||
|
curl \
|
||||||
|
zip \
|
||||||
|
build-essential \
|
||||||
|
gcc-multilib \
|
||||||
|
g++-multilib \
|
||||||
|
ca-certificates \
|
||||||
|
git mercurial bzr \
|
||||||
|
gnupg \
|
||||||
|
libltdl-dev \
|
||||||
|
libltdl7 \
|
||||||
|
bash \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
- name: install-go
|
||||||
|
dockerfile: |-
|
||||||
|
ENV GOPATH /gopath
|
||||||
|
ENV GOROOT /goroot
|
||||||
|
RUN mkdir $GOROOT && mkdir $GOPATH
|
||||||
|
RUN curl https://storage.googleapis.com/golang/go{{.GO_VERSION}}.linux-amd64.tar.gz \
|
||||||
|
| tar xzf - -C $GOROOT --strip-components=1
|
||||||
|
ENV PATH $GOROOT/bin:$GOPATH/bin:$PATH
|
||||||
|
- name: install-go-tools
|
||||||
|
dockerfile: |
|
||||||
|
ENV GO111MODULE=off
|
||||||
|
RUN go get golang.org/x/tools/cmd/goimports
|
||||||
|
RUN go get github.com/hashicorp/go-bindata
|
||||||
|
RUN go get github.com/hashicorp/go-bindata/go-bindata
|
||||||
|
RUN go get github.com/elazarl/go-bindata-assetfs
|
||||||
|
RUN go get github.com/elazarl/go-bindata-assetfs/go-bindata-assetfs
|
||||||
|
- name: set-workdir
|
||||||
|
dockerfile: |
|
||||||
|
ENV REPO=github.com/hashicorp/vault
|
||||||
|
ENV DIR=$GOPATH/src/$REPO
|
||||||
|
RUN mkdir -p $DIR
|
||||||
|
WORKDIR $DIR
|
||||||
|
- name: install-yarn
|
||||||
|
dockerfile: |-
|
||||||
|
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
||||||
|
RUN curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
||||||
|
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
||||||
|
RUN apt-get update -y && apt-get install -y -q nodejs yarn={{.YARN_VERSION}} \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
- name: ui-dependencies
|
||||||
|
source-include: ui/package.json ui/yarn.lock
|
||||||
|
dockerfile: |-
|
||||||
|
RUN cd ui && yarn install
|
||||||
|
RUN cd ui && npm rebuild node-sass
|
||||||
|
- name: build-ui
|
||||||
|
source-include: ui/
|
||||||
|
dockerfile: |-
|
||||||
|
RUN cd ui && yarn run build
|
||||||
|
- name: build-static-assets
|
||||||
|
source-include: Makefile
|
||||||
|
dockerfile: |-
|
||||||
|
RUN go-bindata-assetfs -o bindata_assetfs.go -pkg http -prefix pkg -modtime 1480000000 -tags ui ./pkg/web_ui/...
|
||||||
|
RUN mkdir -p http && mv bindata_assetfs.go http/
|
||||||
|
RUN goimports -w http/bindata_assetfs.go
|
||||||
|
# Up to now, the layers do not vary between packages. This means the layers above
|
||||||
|
# can be built prior to package builds in order to warm the cache and speed up
|
||||||
|
# builds.
|
||||||
|
#
|
||||||
|
# warm-go-build-vendor-cache does vary based on GOOS, GOARCH and CGO_ENABLED though.
|
||||||
|
# This means we should cache this in CI per package build.
|
||||||
|
- name: warm-go-build-vendor-cache
|
||||||
|
source-include: vendor/
|
||||||
|
dockerfile: |-
|
||||||
|
ENV GOOS={{.GOOS}}
|
||||||
|
ENV GOARCH={{.GOARCH}}
|
||||||
|
ENV CGO_ENABLED={{.CGO_ENABLED}}
|
||||||
|
# Try to build vendored packages. We first filter out packages which report
|
||||||
|
# errors in 'go list', because trying to run go build ./vendor/... fails early
|
||||||
|
# if we include them. We also don't care about the exit code here, because
|
||||||
|
# some of the vendored packages may fail to build, but this won't necessarily
|
||||||
|
# mean that the final package will fail to build, and we will still get a
|
||||||
|
# usefully warmed cache.
|
||||||
|
RUN go list -f '{{"{{.ImportPath}}{{if or .Error .DepsErrors}} ERROR{{end}}"}}' ./vendor/... | grep -v ERROR | xargs go build -v || true
|
||||||
|
# The final layer must contain all the source code we've not yet included.
|
||||||
|
- name: copy-source
|
||||||
|
source-include: .
|
||||||
|
source-exclude: vendor/ ui/
|
Loading…
Reference in New Issue