-
Notifications
You must be signed in to change notification settings - Fork 42
/
Makefile.oss.prow
138 lines (117 loc) · 6.08 KB
/
Makefile.oss.prow
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# special prow related things
# Images are tagged with an arbitrary semver and git SHA. The git SHA ensures
# unique tags and makes the images traceable back to a commit. The semver should
# be revved upon any major changes to the image.
# This is the image that our prow kind/e2e presubmit job runs so that it can
# use KIND instead of setting up a GKE cluster per test run. Based on kubekins-e2e
# for docker-in-docker support to build docker images and run kind.
# Note: nothing builds this, if you update the version, you will need to rebuild manually.
# TODO: setup postsubmit job to build this image
KUBEKINS_E2E_TAG := v1.0.0-$(shell git rev-parse --short HEAD)
KUBEKINS_E2E_IMAGE := $(TEST_INFRA_REGISTRY)/kubekins-e2e:$(KUBEKINS_E2E_TAG)
.PHONY: build-kubekins-e2e
build-kubekins-e2e: build/prow/kubekins-e2e/Dockerfile
@echo "+++ Building $(KUBEKINS_E2E_IMAGE)"
docker buildx build \
-t $(KUBEKINS_E2E_IMAGE) \
-f $< \
$(dir $<).
.PHONY: push-kubekins-e2e
push-kubekins-e2e:
@docker push $(KUBEKINS_E2E_IMAGE)
# This is the image used by the new GKE e2e jobs. This job type runs against GKE
# clusters rather than kind, so we don't need docker in docker.
# Note: nothing builds this, if you update the version, you will need to rebuild manually.
# TODO: setup postsubmit job to build this image
GKE_E2E_TAG := v1.0.0-$(shell git rev-parse --short HEAD)
GKE_E2E_IMAGE := $(TEST_INFRA_REGISTRY)/gke-e2e:$(GKE_E2E_TAG)
.PHONY: build-gke-e2e
build-gke-e2e:
@echo "+++ Building $(GKE_E2E_IMAGE)"
docker buildx build \
-t $(GKE_E2E_IMAGE) \
-f build/prow/gke-e2e/Dockerfile \
.
.PHONY: push-gke-e2e
push-gke-e2e:
@docker push $(GKE_E2E_IMAGE)
###################################
# Helpers
###################################
.PHONY: install-crane
# install crane binary to publish the image
install-crane:
go install github.com/google/go-containerregistry/cmd/crane@latest
.PHONY: clean-helm
# remove any existing helm directory/binary. The install-helm target was previously
# creating a directory at this path rather than the binary/file.
clean-helm:
rm -rf $(HELM)
.PHONY: install-helm
# install helm binary to publish the image
install-helm: clean-helm buildenv-dirs
wget https://get.helm.sh/helm-$(HELM_VERSION)-linux-amd64.tar.gz -O /tmp/helm-$(HELM_VERSION)-linux-amd64.tar.gz
tar -zxvf /tmp/helm-$(HELM_VERSION)-linux-amd64.tar.gz -C /tmp
mv /tmp/linux-amd64/helm $(HELM)
rm /tmp/helm-$(HELM_VERSION)-linux-amd64.tar.gz
###################################
# Prow environment provisioning
###################################
KUSTOMIZE_COMPONENTS_PACKAGE_NAME := kustomize-components
KUSTOMIZE_COMPONENTS_DIR := e2e/testdata/hydration/$(KUSTOMIZE_COMPONENTS_PACKAGE_NAME)
# kustomize-components public images (singleton test-infra registry)
KUSTOMIZE_COMPONENTS_PUBLIC_AR_IMAGE := $(LOCATION)-docker.pkg.dev/$(TEST_INFRA_PROJECT)/config-sync-test-public/$(KUSTOMIZE_COMPONENTS_PACKAGE_NAME)
KUSTOMIZE_COMPONENTS_PUBLIC_GCR_IMAGE := gcr.io/$(TEST_INFRA_PROJECT)/$(KUSTOMIZE_COMPONENTS_PACKAGE_NAME)
BOOKINFO_REPO_PACKAGE_NAME := namespace-repo-bookinfo
BOOKINFO_REPO_DIR := e2e/testdata/$(BOOKINFO_REPO_PACKAGE_NAME)
# namespace-repo-bookinfo images (singleton test-infra registry)
BOOKINFO_REPO_PUBLIC_AR_IMAGE := $(LOCATION)-docker.pkg.dev/$(TEST_INFRA_PROJECT)/config-sync-test-public/$(BOOKINFO_REPO_PACKAGE_NAME)
# This target is run as a singleton against the ci-artifacts project, since
# these require for the registries to be public.
.PHONY: push-test-oci-images-public
push-test-oci-images-public: install-crane
@gcloud $(GCLOUD_QUIET) auth configure-docker $(LOCATION)-docker.pkg.dev,gcr.io
cd $(KUSTOMIZE_COMPONENTS_DIR) && crane append -f <(tar -f - -c .) -t $(KUSTOMIZE_COMPONENTS_PUBLIC_GCR_IMAGE)
cd $(KUSTOMIZE_COMPONENTS_DIR) && crane append -f <(tar -f - -c .) -t $(KUSTOMIZE_COMPONENTS_PUBLIC_AR_IMAGE)
cd $(BOOKINFO_REPO_DIR) && crane append -f <(tar -f - -c .) -t $(BOOKINFO_REPO_PUBLIC_AR_IMAGE)
# The following targets are used to provision test resources in a prow environment
# kustomize-components private images (per dev/prow env registry)
KUSTOMIZE_COMPONENTS_PRIVATE_AR_IMAGE := $(LOCATION)-docker.pkg.dev/$(GCP_PROJECT)/config-sync-test-private/${KUSTOMIZE_COMPONENTS_PACKAGE_NAME}:v1
KUSTOMIZE_COMPONENTS_PRIVATE_GCR_IMAGE := gcr.io/$(GCP_PROJECT)/config-sync-test/$(KUSTOMIZE_COMPONENTS_PACKAGE_NAME):v1
.PHONY: push-test-oci-images-private
# push-test-oci-images-private pushes the test images to the Artifact Registry and Container Registry repositories.
push-test-oci-images-private: install-crane
@gcloud $(GCLOUD_QUIET) auth configure-docker $(LOCATION)-docker.pkg.dev,gcr.io
cd $(KUSTOMIZE_COMPONENTS_DIR) && crane append -f <(tar -f - -c .) -t $(KUSTOMIZE_COMPONENTS_PRIVATE_GCR_IMAGE)
cd $(KUSTOMIZE_COMPONENTS_DIR) && crane append -f <(tar -f - -c .) -t $(KUSTOMIZE_COMPONENTS_PRIVATE_AR_IMAGE)
.PHONY: push-to-test-csr-repos
push-to-test-csr-repos:
GCP_PROJECT=$(GCP_PROJECT) ./scripts/push-to-test-csr-repos.sh
.PHONY: set-up-kcc-configs
KCC_MANAGED_PROJECT ?= cs-dev-hub
set-up-kcc-configs:
GCP_PROJECT=$(GCP_PROJECT) KCC_MANAGED_PROJECT=$(KCC_MANAGED_PROJECT) \
./scripts/set-up-kcc-configs.sh
.PHONY: set-up-workload-identity-test
FLEET_HOST_PROJECT ?= cs-dev-hub
PROW_PROJECT ?= oss-prow-build-kpt-config-sync
set-up-workload-identity-test:
GCP_PROJECT=$(GCP_PROJECT) FLEET_HOST_PROJECT=$(FLEET_HOST_PROJECT) \
PROW_PROJECT=$(PROW_PROJECT) \
./scripts/set-up-workload-identity-configs.sh
.PHONY: push-test-helm-charts-to-ar
push-test-helm-charts-to-ar: install-helm
GCP_PROJECT=$(GCP_PROJECT) ./scripts/push-test-helm-charts-to-ar.sh