github.com/cloudfoundry-incubator/stembuild@v0.0.0-20211223202937-5b61d62226c6/Makefile (about)

     1  GOSRC = $(shell find . -name "*.go" ! -name "*test.go" ! -name "*fake*" ! -path "./integration/*")
     2  FAKE_STEMCELL_AUTOMATION_PATH = integration/construct/assets/StemcellAutomation.zip
     3  FAKE_STEMCELL_AUTOMATION_PREFIX = $(shell dirname "${FAKE_STEMCELL_AUTOMATION_PATH}")
     4  STEMCELL_VERSION = $(shell echo "$${STEMBUILD_VERSION}")
     5  LD_FLAGS = "-w -s -X github.com/cloudfoundry-incubator/stembuild/version.Version=${STEMCELL_VERSION}"
     6  
     7  # These are the sources for StemcellAutomation.zip
     8  STEMCELL_AUTOMATION_PS1 := $(shell ls stemcell-automation/*ps1 | grep -iv Test)
     9  BOSH_AGENT_REPO ?= ${HOME}/go/src/github.com/cloudfoundry/bosh-agent
    10  LGPO_URL = 'https://www.microsoft.com/en-us/download/confirmation.aspx?id=55319&6B49FDFB-8E5B-4B07-BC31-15695C5A2143=1'
    11  BOSH_GCS_URL = 'https://s3.amazonaws.com/bosh-gcscli/bosh-gcscli-0.0.6-windows-amd64.exe'
    12  # Ignore things under cis-merge* directory because the paths contain spaces and make doesn't like
    13  # that
    14  PSMODULES_SOURCES = $(shell find ./modules | grep -v .git | grep -vi "test" | grep -v cis-merge)
    15  BOSH_AGENT_SOURCES = $(shell find $(BOSH_AGENT_REPO) | egrep -v ".git|test.go|fake|.md")
    16  
    17  ifeq ($(OS),Windows_NT)
    18  	COMMAND = out/stembuild.exe
    19  	CP = cp
    20  else
    21  	UNAME = $(shell uname -s)
    22  	COMMAND = out/stembuild
    23  
    24  	ifeq ($(UNAME),Darwin)
    25  		CP = cp -p
    26  	else ifeq ($(UNAME),Linux)
    27  		CP = cp --preserve=mode,ownership
    28  	endif
    29  endif
    30  
    31  all : test build
    32  
    33  build : out/stembuild
    34  
    35  build-integration : generate-fake-stemcell-automation $(GOSRC)
    36  	go build -o $(COMMAND) -ldflags $(LD_FLAGS) .
    37  
    38  clean :
    39  	rm -rf version/version.go assets/stemcell_automation.go assets/StemcellAutomation.zip assets/local/* out/*
    40  
    41  format :
    42  	go fmt ./...
    43  
    44  integration : generate-fake-stemcell-automation
    45  	go run github.com/onsi/ginkgo/ginkgo -r -v -randomizeAllSpecs -flakeAttempts 2 integration
    46  
    47  integration/construct : generate-fake-stemcell-automation
    48  	go run github.com/onsi/ginkgo/ginkgo -r -v -randomizeAllSpecs integration/construct
    49  
    50  integration-badger : generate-fake-stemcell-automation
    51  	go run github.com/onsi/ginkgo/ginkgo -r -v -randomizeAllSpecs -untilItFails integration
    52  
    53  generate-fake-stemcell-automation: $(GOSRC) $(FAKE_STEMCELL_AUTOMATION_PATH)
    54  	go run github.com/go-bindata/go-bindata/go-bindata -o assets/stemcell_automation.go -pkg assets -prefix $(FAKE_STEMCELL_AUTOMATION_PREFIX) $(FAKE_STEMCELL_AUTOMATION_PATH)
    55  
    56  generate: assets/StemcellAutomation.zip
    57  	go run github.com/go-bindata/go-bindata/go-bindata -o assets/stemcell_automation.go -pkg assets -prefix assets assets/StemcellAutomation.zip
    58  
    59  out/stembuild : generate $(GOSRC)
    60  	go build -o $(COMMAND) -ldflags $(LD_FLAGS) .
    61  
    62  out/stembuild.exe : generate $(GOSRC)
    63  	GOOS=windows go build -o out/stembuild.exe -ldflags $(LD_FLAGS) .
    64  
    65  test : units
    66  
    67  units : format generate-fake-stemcell-automation
    68  	@go run github.com/onsi/ginkgo/ginkgo version
    69  	go run github.com/onsi/ginkgo/ginkgo -r -randomizeAllSpecs -randomizeSuites -skipPackage integration,iaas_cli
    70  	@echo "\nSWEET SUITE SUCCESS"
    71  
    72  contract :
    73  	go run github.com/onsi/ginkgo/ginkgo -r -randomizeAllSpecs -randomizeSuites -flakeAttempts 2 iaas_cli
    74  
    75  .PHONY : all build build-integration clean format generate generate-fake-stemcell-automation
    76  .PHONY : test units units-full integration integration-tests-full
    77  
    78  # ===============================================================================
    79  # The following to create the StemcellAutomation.zip that's packaged in stembuild
    80  # ===============================================================================
    81  
    82  assets/local/bosh-agent.exe: $(BOSH_AGENT_SOURCES)
    83  	cd $(BOSH_AGENT_REPO) && \
    84  		GOOS=windows GOARCH=amd64 bin/build && \
    85  		cd -
    86  	mv $(BOSH_AGENT_REPO)/out/bosh-agent assets/local/bosh-agent.exe
    87  
    88  assets/local/bosh-blobstore-dav.exe: $(BOSH_AGENT_REPO)/integration/windows/fixtures/bosh-blobstore-dav.exe
    89  	@echo "### Creating/Updating assets/local/bosh-blobstore-dav.exe"
    90  	$(CP) $(BOSH_AGENT_REPO)/integration/windows/fixtures/bosh-blobstore-dav.exe assets/local
    91  
    92  assets/local/bosh-blobstore-gcs.exe:
    93  	@echo "### Creating assets/local/bosh-blobstore-gcs.exe"
    94  	curl -o assets/local/bosh-blobstore-gcs.exe -L $(BOSH_GCS_URL)
    95  
    96  assets/local/bosh-blobstore-s3.exe: $(BOSH_AGENT_REPO)/integration/windows/fixtures/bosh-blobstore-s3.exe
    97  	@echo "### Creating/Updating assets/local/bosh-blobstore-s3.exe"
    98  	$(CP) $(BOSH_AGENT_REPO)/integration/windows/fixtures/bosh-blobstore-s3.exe assets/local
    99  
   100  assets/local/bosh-psmodules.zip: $(PSMODULES_SOURCES)
   101  	@echo "### Creating/Updating assets/local/bosh-psmodules.zip"
   102  	 cd modules && zip -r ../bosh-psmodules.zip . && cd ..
   103  	 mv bosh-psmodules.zip assets/local/bosh-psmodules.zip
   104  
   105  assets/local/job-service-wrapper.exe: $(BOSH_AGENT_REPO)/integration/windows/fixtures/job-service-wrapper.exe
   106  	@echo "### Creating/Updating assets/local/job-service-wrapper.exe"
   107  	$(CP) $(BOSH_AGENT_REPO)/integration/windows/fixtures/job-service-wrapper.exe assets/local
   108  
   109  assets/local/pipe.exe: $(BOSH_AGENT_SOURCES)
   110  	cd $(BOSH_AGENT_REPO) && \
   111  		GOOS=windows GOARCH=amd64 bin/build && \
   112  		cd -
   113  	mv $(BOSH_AGENT_REPO)/out/bosh-agent-pipe assets/local/pipe.exe
   114  
   115  assets/local/service_wrapper.exe: $(BOSH_AGENT_REPO)/integration/windows/fixtures/service_wrapper.exe
   116  	@echo "### Creating/Updating assets/local/service_wrapper.exe"
   117  	$(CP) $(BOSH_AGENT_REPO)/integration/windows/fixtures/service_wrapper.exe assets/local
   118  
   119  assets/local/service_wrapper.xml: $(BOSH_AGENT_REPO)/integration/windows/fixtures/service_wrapper.xml
   120  	@echo "### Creating/Updating assets/local/service_wrapper.xml"
   121  	$(CP) $(BOSH_AGENT_REPO)/integration/windows/fixtures/service_wrapper.xml assets/local
   122  
   123  assets/local/tar.exe: $(BOSH_AGENT_REPO)/integration/windows/fixtures/tar.exe
   124  	@echo "### Creating/Updating assets/local/tar.exe"
   125  	$(CP) $(BOSH_AGENT_REPO)/integration/windows/fixtures/tar.exe assets/local
   126  
   127  assets/local/agent.zip: assets/local/bosh-agent.exe assets/local/pipe.exe assets/local/service_wrapper.xml assets/local/service_wrapper.exe assets/local/bosh-blobstore-dav.exe assets/local/bosh-blobstore-gcs.exe assets/local/bosh-blobstore-s3.exe assets/local/job-service-wrapper.exe assets/local/tar.exe
   128  	@echo "### Creating/Updating assets/local/agent.zip"
   129  	mkdir -p assets/temp/deps
   130  	$(CP) assets/local/service_wrapper.exe \
   131  		assets/local/service_wrapper.xml \
   132  		assets/local/bosh-agent.exe \
   133  		assets/temp
   134  	$(CP) assets/local/bosh-blobstore-dav.exe \
   135  	  assets/local/bosh-blobstore-gcs.exe \
   136  	  assets/local/bosh-blobstore-s3.exe \
   137  	  assets/local/job-service-wrapper.exe \
   138  		assets/local/pipe.exe \
   139  	  assets/local/tar.exe \
   140  		assets/temp/deps
   141  	cd assets/temp && zip -r ../local/agent.zip * && cd -
   142  	rm -rf assets/temp
   143  
   144  assets/local/LGPO.zip:
   145  	@echo "### Creating assets/local/LGPO.zip"
   146  	curl -o assets/local/LGPO.zip -L $(LGPO_URL)
   147  
   148  assets/local/OpenSSH-Win64.zip: $(BOSH_AGENT_REPO)/integration/windows/fixtures/OpenSSH-Win64.zip
   149  	@echo "### Creating/Updating assets/local/OpenSSH-Win64.zip"
   150  	$(CP) $(BOSH_AGENT_REPO)/integration/windows/fixtures/OpenSSH-Win64.zip assets/local
   151  
   152  assets/local/deps.json: assets/local/agent.zip assets/local/bosh-psmodules.zip assets/local/LGPO.zip assets/local/OpenSSH-Win64.zip
   153  	@echo "### Creating/Updating assets/local/deps.json"
   154  	@#Note: The order of the following matters, change the script before changing these
   155  	stemcell-automation/generate-dep-json.bash \
   156  		assets/local/OpenSSH-Win64.zip \
   157  		assets/local/bosh-psmodules.zip \
   158  		assets/local/agent.zip \
   159  		assets/local/LGPO.zip \
   160  		> assets/local/deps.json
   161  
   162  assets/StemcellAutomation.zip: $(STEMCELL_AUTOMATION_PS1) assets/local/OpenSSH-Win64.zip assets/local/bosh-psmodules.zip assets/local/deps.json assets/local/agent.zip
   163  	@echo "### Creating/Updating assets/StemcellAutomation.zip"
   164  	mkdir -p assets/temp
   165  	cp -a $(STEMCELL_AUTOMATION_PS1) \
   166  		assets/local/OpenSSH-Win64.zip \
   167  		assets/local/bosh-psmodules.zip \
   168  		assets/local/deps.json \
   169  		assets/local/agent.zip \
   170  		assets/temp
   171  	cd assets/temp && zip ../StemcellAutomation.zip * && cd -
   172  	rm -rf assets/temp