From 8c1e52be6fc89e4015f840444c3bebd64bfe23f6 Mon Sep 17 00:00:00 2001 From: Maksym Bryzhko <95222544+MaksymAtVgs@users.noreply.github.com> Date: Mon, 6 Dec 2021 18:58:36 +0200 Subject: [PATCH] Build Go via make (#12) * Build Go via make * Build Go via make --- .circleci/config.yml | 37 +++++++++++++++++++++---------------- Makefile | 29 ++++------------------------- 2 files changed, 25 insertions(+), 41 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9039192..d607301 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,26 +1,18 @@ -# Use the latest 2.1 version of CircleCI pipeline process engine. -# See: https://circleci.com/docs/2.0/configuration-reference version: 2.1 -# Define a job to be invoked later in a workflow. -# See: https://circleci.com/docs/2.0/configuration-reference/#jobs jobs: - build: + build-and-test: working_directory: ~/repo - # Specify the execution environment. You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub. - # See: https://circleci.com/docs/2.0/configuration-reference/#docker-machine-macos-windows-executor docker: - image: circleci/golang:1.15.8 - # Add steps to the job - # See: https://circleci.com/docs/2.0/configuration-reference/#steps steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: - name: Install Dependencies - command: go mod download + name: Run Build + command: make build - save_cache: key: go-mod-v4-{{ checksum "go.sum" }} paths: @@ -32,11 +24,24 @@ jobs: # gotestsum --junitfile /tmp/test-reports/unit-tests.xml # - store_test_results: # path: /tmp/test-reports + release: + docker: + - image: cimg/go:1.17 + steps: + - checkout + - run: curl -sL https://git.io/goreleaser | bash + - run: goreleaser release --skip-sign -# Invoke jobs via workflows -# See: https://circleci.com/docs/2.0/configuration-reference/#workflows workflows: - sample: # This is the name of the workflow, feel free to change it to better match your workflow. - # Inside the workflow, you define the jobs you want to run. + build: + jobs: + - build-and-test + release: jobs: - - build \ No newline at end of file + - release: + # Only run this job on git tag pushes + filters: + branches: + ignore: /.*/ + tags: + only: /v[0-9]+(\.[0-9]+)*(-.*)*/ diff --git a/Makefile b/Makefile index 2793685..019999e 100644 --- a/Makefile +++ b/Makefile @@ -1,32 +1,11 @@ RELEASE := $(shell git describe --tags $(git rev-list --branches=main --tags --max-count=1)) PRERELEASE := $(shell git describe --tags $(git rev-list --branches=main --tags --max-count=1) | awk 'BEGIN{FS=OFS="."} {$$3+=1} 1') -default: - go build -o ./bin/terraform-provider-vgs_$(RELEASE) + +build: + go build -o ./bin/terraform-provider-vgs_$(PRERELEASE) install-local: go build -o ~/.terraform.d/plugins/terraform-provider-vgs_$(PRERELEASE) test: - echo "$(shell sha256sum release/terraform-provider-vgs_v0.1.1_linux_386.zip) 111" - -all: - rm -rf ./release && mkdir -p ./release - GOOS=linux GOARCH=amd64 go build -o ./bin/terraform-provider-vgs_$(RELEASE)_linux_amd64/terraform-provider-vgs_$(RELEASE) && zip -r ./release/terraform-provider-vgs_$(RELEASE)_linux_amd64.zip ./bin/terraform-provider-vgs_$(RELEASE)_linux_amd64 - GOOS=linux GOARCH=386 go build -o ./bin/terraform-provider-vgs_$(RELEASE)_linux_386/terraform-provider-vgs_$(RELEASE) && zip -r ./release/terraform-provider-vgs_$(RELEASE)_linux_386.zip ./bin/terraform-provider-vgs_$(RELEASE)_linux_386 - GOOS=linux GOARCH=arm go build -o ./bin/terraform-provider-vgs_$(RELEASE)_linux_arm/terraform-provider-vgs_$(RELEASE) && zip -r ./release/terraform-provider-vgs_$(RELEASE)_linux_arm.zip ./bin/terraform-provider-vgs_$(RELEASE)_linux_arm - - GOOS=darwin GOARCH=amd64 go build -o ./bin/terraform-provider-vgs_$(RELEASE)_darwin_amd64/terraform-provider-vgs_$(RELEASE) && zip -r ./release/terraform-provider-vgs_$(RELEASE)_darwin_amd64.zip ./bin/terraform-provider-vgs_$(RELEASE)_darwin_amd64 - GOOS=darwin GOARCH=arm64 go build -o ./bin/terraform-provider-vgs_$(RELEASE)_darwin_arm64/terraform-provider-vgs_$(RELEASE) && zip -r ./release/terraform-provider-vgs_$(RELEASE)_darwin_arm.zip ./bin/terraform-provider-vgs_$(RELEASE)_darwin_arm64 - - GOOS=windows GOARCH=amd64 go build -o ./bin/terraform-provider-vgs_$(RELEASE)_windows_amd64/terraform-provider-vgs_$(RELEASE).exe && zip -r ./release/terraform-provider-vgs_$(RELEASE)_windows_amd64.zip ./bin/terraform-provider-vgs_$(RELEASE)_windows_amd64 - GOOS=windows GOARCH=386 go build -o ./bin/terraform-provider-vgs_$(RELEASE)_windows_386/terraform-provider-vgs_$(RELEASE).exe && zip -r ./release/terraform-provider-vgs_$(RELEASE)_windows_386.zip ./bin/terraform-provider-vgs_$(RELEASE)_windows_386 - GOOS=windows GOARCH=arm go build -o ./bin/terraform-provider-vgs_$(RELEASE)_windows_arm/terraform-provider-vgs_$(RELEASE).exe && zip -r ./release/terraform-provider-vgs_$(RELEASE)_windows_arm.zip ./bin/terraform-provider-vgs_$(RELEASE)_windows_arm - - GOOS=freebsd GOARCH=amd64 go build -o ./bin/terraform-provider-vgs_$(RELEASE)_freebsd_amd64/terraform-provider-vgs_$(RELEASE) && zip -r ./release/terraform-provider-vgs_$(RELEASE)_freebsd_amd64.zip ./bin/terraform-provider-vgs_$(RELEASE)_freebsd_amd64 - GOOS=freebsd GOARCH=amd64 go build -o ./bin/terraform-provider-vgs_$(RELEASE)_freebsd_386/terraform-provider-vgs_$(RELEASE) && zip -r ./release/terraform-provider-vgs_$(RELEASE)_freebsd_386.zip ./bin/terraform-provider-vgs_$(RELEASE)_freebsd_386 - GOOS=freebsd GOARCH=arm go build -o ./bin/terraform-provider-vgs_$(RELEASE)_freebsd_arm/terraform-provider-vgs_$(RELEASE) && zip -r ./release/terraform-provider-vgs_$(RELEASE)_freebsd_arm.zip ./bin/terraform-provider-vgs_$(RELEASE)_freebsd_arm - -checksums: - rm -f ./release/terraform-provider-vgs_$(RELEASE)_sha256sums && touch ./release/terraform-provider-vgs_$(RELEASE)_sha256sums - find ./release -type f ! -name '*sha256sums' -exec basename {} \; | xargs -I '{}' bash -c 'echo "$$(sha256sum ./release/{}) {}" >> ./release/terraform-provider-vgs_$(RELEASE)_sha256sums' - +