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
|
||||
|
||||
references:
|
||||
images:
|
||||
node: &NODE_IMAGE node:10-buster # Pin Node.js to major version (ex: 10)
|
||||
orbs:
|
||||
slack: circleci/slack@3.2.0
|
||||
|
||||
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
|
||||
@if [ -d .git/hooks ]; then cp .hooks/* .git/hooks/; fi
|
||||
|
||||
.PHONY: ci-config
|
||||
ci-config:
|
||||
@$(MAKE) -C .circleci ci-config
|
||||
.PHONY: ci-verify
|
||||
ci-verify:
|
||||
@$(MAKE) -C .circleci ci-verify
|
||||
PACKAGES_LOCK_DIR := $(shell find . -mindepth 1 -maxdepth 1 \
|
||||
-type d -name 'packages*.lock')
|
||||
|
||||
# bootstrap the build by downloading additional tools needed to build
|
||||
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; }
|
||||
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
|
||||
|
|
|
@ -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