Skip to content

Commit

Permalink
chore(codegen): run all codegen in a container
Browse files Browse the repository at this point in the history
This is a better ux in general, and lets us use the codegen even though
we have modules enabled
  • Loading branch information
ecordell committed Nov 7, 2018
1 parent 7531504 commit bb0313a
Show file tree
Hide file tree
Showing 981 changed files with 89,611 additions and 236,413 deletions.
64 changes: 26 additions & 38 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,20 @@
SHELL := /bin/bash
PKG := github.com/operator-framework/operator-lifecycle-manager
CMDS := $(addprefix bin/, $(shell go list ./cmd/... | xargs -I{} basename {}))
CODEGEN := ./vendor/k8s.io/code-generator/generate_groups.sh
counterfeiter := $(GOBIN)/counterfeiter
mockgen := $(GOBIN)/mockgen
IMAGE_REPO := quay.io/coreos/olm
IMAGE_TAG ?= "dev"
KUBE_DEPS := api apiextensions-apiserver apimachinery code-generator kube-aggregator kubernetes
KUBE_RELEASE := release-1.11

.PHONY: build test run clean vendor schema-check \
vendor-update coverage coverage-html e2e .FORCE

all: test build

test: schema-check cover.out
test: clean cover.out

unit:
go test -mod=vendor -v -race ./pkg/...
Expand Down Expand Up @@ -75,17 +80,24 @@ e2e-local-docker:
. ./scripts/build_local.sh
. ./scripts/run_e2e_docker.sh $(TEST)

vendor:
# kube dependencies all should be at the same release and should match up with client go
# go.mod currently doesn't support specifying a branch name to track, and kube isn't publishing good version tags
$(KUBE_DEPS):
go get -m k8s.io/$@@$(KUBE_RELEASE)

vendor: $(KUBE_DEPS)
go mod tidy
go mod vendor

container: build
docker build -t $(IMAGE_REPO):$(IMAGE_TAG) .

clean:
rm -rf bin
rm -rf test/e2e/resources
rm -rf test/e2e/test-resources
rm -rf test/e2e/log
@rm -rf cover.out
@rm -rf bin
@rm -rf test/e2e/resources
@rm -rf test/e2e/test-resources
@rm -rf test/e2e/log

CI := $(shell find . -iname "*.jsonnet") $(shell find . -iname "*.libsonnet")
$(CI):
Expand All @@ -94,29 +106,10 @@ $(CI):
gen-ci: $(CI)
ffctl gen

CODEGEN := ./vendor/k8s.io/code-generator/generate-groups.sh

$(CODEGEN):
# dep doesn't currently support downloading dependencies that don't have go in the top-level dir.
# can move to managing with dep when merged: https://github.com/golang/dep/pull/1545
mkdir -p vendor/k8s.io/code-generator
git clone --branch release-1.11 https://github.com/kubernetes/code-generator.git vendor/k8s.io/code-generator

pkg/package-server/generated/openapi/zz_generated.openapi.go:
go run -mod=vendor vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go --logtostderr -i ./vendor/k8s.io/apimachinery/pkg/runtime,./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/k8s.io/apimachinery/pkg/version,./pkg/package-server/apis/packagemanifest/v1alpha1 -p github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/generated/openapi/ -O zz_generated.openapi -h boilerplate.go.txt -r /dev/null

clean-openapi:
rm -rf pkg/package-server/generated/openapi

codegen-openapi: clean-openapi pkg/package-server/generated/openapi/zz_generated.openapi.go

<<<<<<< HEAD
# our version of hack/update-codegen.sh
=======
# Must be run in gopath: https://github.com/kubernetes/kubernetes/issues/67566
# use container-codegen
>>>>>>> b9933db3... chore(dependencies): migrate to go modules
codegen: $(CODEGEN)
codegen:
go run vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go --logtostderr -i ./vendor/k8s.io/apimachinery/pkg/runtime,./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/k8s.io/apimachinery/pkg/version,./pkg/package-server/apis/packagemanifest/v1alpha1 -p $(PKG)/pkg/package-server/apis/openapi -O zz_generated.openapi -h boilerplate.go.txt -r /dev/null
$(CODEGEN) all $(PKG)/pkg/api/client $(PKG)/pkg/api/apis "operators:v1alpha1,v1alpha2"
$(CODEGEN) all $(PKG)/pkg/package-server/client $(PKG)/pkg/package-server/apis "packagemanifest:v1alpha1"

Expand All @@ -125,27 +118,22 @@ container-codegen:
docker run --name temp-codegen olm:codegen /bin/true
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/. ./pkg/api/client
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/. ./pkg/api/apis
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/. ./pkg/package-server/apis
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/client/. ./pkg/package-server/client
docker rm temp-codegen

# Must be run in gopath: https://github.com/kubernetes/kubernetes/issues/67566
verify-codegen: codegen
git diff --exit-code

verify-catalog: schema-check
go test -mod=vendor -v ./test/schema/catalog_versions_test.go

counterfeiter := $(GOBIN)/counterfeiter
$(counterfeiter):
go install github.com/maxbrunsfeld/counterfeiter

mockgen := $(GOBIN)/mockgen
$(mockgen):
go install github.com/golang/mock/mockgen

generate-mock-client: $(counterfeiter)
generate-mock-client:
go generate ./$(PKG_DIR)/...
mockgen -source ./pkg/lib/operatorclient/client.go -destination ./pkg/lib/operatorclient/mock_client.go -package operatorclient
GO111MODULE=on mockgen -source ./pkg/lib/operatorclient/client.go -destination ./pkg/lib/operatorclient/mock_client.go -package operatorclient

gen-all: gen-ci codegen generate-mock-client codegen-openapi
gen-all: gen-ci container-codegen generate-mock-client

# before running release, bump the version in OLM_VERSION and push to master,
# then tag those builds in quay with the version in OLM_VERSION
Expand Down
2 changes: 1 addition & 1 deletion boilerplate.go.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright YEAR CoreOS, Inc.
Copyright YEAR Red Hat, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
3 changes: 3 additions & 0 deletions codegen.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@ WORKDIR /go/src/github.com/operator-framework/operator-lifecycle-manager
COPY Makefile Makefile
COPY pkg pkg
COPY vendor vendor
COPY scripts/generate_groups.sh vendor/k8s.io/code-generator/generate_groups.sh
COPY boilerplate.go.txt boilerplate.go.txt
COPY boilerplate.go.txt vendor/k8s.io/code-generator/hack/boilerplate.go.txt
RUN make codegen

79 changes: 49 additions & 30 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,60 +2,79 @@ module github.com/operator-framework/operator-lifecycle-manager

require (
bitbucket.org/ww/goautoneg v0.0.0-20120707110453-75cd24fc2f2c // indirect
github.com/BurntSushi/toml v0.3.1 // indirect
github.com/NYTimes/gziphandler v1.0.1 // indirect
github.com/PuerkitoBio/purell v1.1.0 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/asaskevich/govalidator v0.0.0-20180315120708-ccb8e960c48f // indirect
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 // indirect
github.com/boltdb/bolt v1.3.1 // indirect
github.com/coreos/bbolt v1.3.0 // indirect
github.com/coreos/etcd v3.3.9+incompatible // indirect
github.com/coreos/go-semver v0.2.0
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 // indirect
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
github.com/docker/distribution v2.6.2+incompatible // indirect
github.com/elazarl/go-bindata-assetfs v1.0.0 // indirect
github.com/emicklei/go-restful v2.8.0+incompatible // indirect
github.com/emicklei/go-restful-swagger12 v0.0.0-20170208215640-dcef7f557305 // indirect
github.com/emicklei/go-restful-swagger12 v0.0.0-20170926063155-7524189396c6 // indirect
github.com/evanphx/json-patch v3.0.0+incompatible // indirect
github.com/ghodss/yaml v1.0.0
github.com/go-openapi/analysis v0.0.0-20180801175213-7c1bef8f6d9f // indirect
github.com/go-openapi/errors v0.0.0-20180515155515-b2b2befaf267 // indirect
github.com/go-openapi/jsonpointer v0.0.0-20180322222829-3a0015ad55fa // indirect
github.com/go-openapi/jsonreference v0.0.0-20180322222742-3fb327e6747d // indirect
github.com/go-openapi/loads v0.0.0-20171207192234-2a2b323bab96 // indirect
github.com/go-openapi/runtime v0.0.0-20180628220156-9a3091f566c0 // indirect
github.com/go-openapi/spec v0.0.0-20180801175345-384415f06ee2
github.com/go-openapi/strfmt v0.0.0-20180703152050-913ee058e387 // indirect
github.com/go-openapi/swag v0.0.0-20180715190254-becd2f08beaf // indirect
github.com/go-openapi/validate v0.0.0-20180809073206-7c1911976134 // indirect
github.com/go-openapi/spec v0.17.2
github.com/go-openapi/strfmt v0.17.2 // indirect
github.com/go-openapi/validate v0.17.2 // indirect
github.com/gogo/protobuf v1.1.1 // indirect
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
github.com/golang/groupcache v0.0.0-20181024230925-c65c006176ff // indirect
github.com/golang/mock v1.1.1
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c // indirect
github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf // indirect
github.com/googleapis/gnostic v0.2.0 // indirect
github.com/gorilla/websocket v1.4.0 // indirect
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
github.com/grpc-ecosystem/grpc-gateway v1.5.1 // indirect
github.com/hashicorp/golang-lru v0.5.0 // indirect
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jonboulle/clockwork v0.1.0 // indirect
github.com/json-iterator/go v1.1.5 // indirect
github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/maxbrunsfeld/counterfeiter v0.0.0-20181017030959-1aadac120687 // indirect
github.com/mitchellh/mapstructure v1.0.0 // indirect
github.com/operator-framework/operator-registry v0.0.0-20181024172529-a172038c398d
github.com/pborman/uuid v0.0.0-20170612153648-e790cca94e6c // indirect
github.com/maxbrunsfeld/counterfeiter v0.0.0-20181017030959-1aadac120687
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pkg/errors v0.8.0
github.com/prometheus/client_golang v0.8.0
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 // indirect
github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e // indirect
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273 // indirect
github.com/sirupsen/logrus v1.1.1
github.com/soheilhy/cmux v0.1.4 // indirect
github.com/spf13/cobra v0.0.3
github.com/spf13/pflag v1.0.3 // indirect
github.com/stevvooe/resumable v0.0.0-20180830230917-22b14a53ba50 // indirect
github.com/stretchr/testify v1.2.2
github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6 // indirect
github.com/ugorji/go v1.1.1 // indirect
gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce // indirect
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18 // indirect
golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e // indirect
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519 // indirect
golang.org/x/oauth2 v0.0.0-20181105165119-ca4130e427c7 // indirect
golang.org/x/sys v0.0.0-20181023152157-44b849a8bc13 // indirect
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 // indirect
google.golang.org/genproto v0.0.0-20181016170114-94acd270e44e // indirect
google.golang.org/grpc v1.16.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0-20170531160350-a96e63847dc3 // indirect
gopkg.in/yaml.v2 v2.2.1
k8s.io/api v0.0.0-20180904230853-4e7be11eab3f
k8s.io/apiextensions-apiserver v0.0.0-20180905004947-16750353bf97
k8s.io/apimachinery v0.0.0-20180904193909-def12e63c512
k8s.io/apiserver v0.0.0-20180904235525-d296c96c12b7
k8s.io/client-go v0.0.0-20180718001006-59698c7d9724
k8s.io/code-generator v0.0.0-20181026224033-5d042c2d6552 // indirect
k8s.io/gengo v0.0.0-20180813235010-4242d8e6c5db // indirect
k8s.io/apimachinery v0.0.0-20181026144827-8ee1a638bafa
k8s.io/apiserver v0.0.0-20181026151315-13cfe3978170
k8s.io/client-go v8.0.0+incompatible
k8s.io/code-generator v0.0.0-20180904193909-8c97d6ab64da
k8s.io/gengo v0.0.0-20181106084056-51747d6e00da // indirect
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92 // indirect
k8s.io/kube-aggregator v0.0.0-20180905000155-efa32eb095fe
k8s.io/kube-openapi v0.0.0-20181024003938-96e8bb74ecdd
k8s.io/kubernetes v0.0.0-20180925111645-ae6d625c3a1c
k8s.io/kube-openapi v0.0.0-20181031203759-72693cb1fadd
k8s.io/kubernetes v1.11.5-beta.0.0.20181106200134-5bfe2967a4cd
)

replace github.com/operator-framework/operator-registry => ../operator-registry
Loading

0 comments on commit bb0313a

Please sign in to comment.