From 0c27729000ddefd9f224e63ca683f3457a8c8214 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Tue, 6 Aug 2019 20:36:57 +0300 Subject: [PATCH] Migrate CI to CircleCI --- .circleci/config.yml | 44 ++++++++++++++++++++++++++++++++++++++++++++ .travis.yml | 32 -------------------------------- Makefile | 15 +++++++++++---- 3 files changed, 55 insertions(+), 36 deletions(-) delete mode 100644 .travis.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index 78633af..0748add 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,5 +1,31 @@ version: 2.1 jobs: + build-container: + docker: + - image: circleci/golang:1.12 + working_directory: ~/build + steps: + - checkout + - setup_remote_docker: + docker_layer_caching: true + - run: make build-container + - run: make test-container + - run: | + if [ -z "$CIRCLE_TAG" ]; then + echo "Not a release, skipping container push"; + else + echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin; + echo $QUAY_PASS | docker login -u $QUAY_USER --password-stdin quay.io; + make push-container; + fi + + push-binary: + docker: + - image: circleci/golang:1.12 + steps: + - checkout + - run: curl -sL https://git.io/goreleaser | bash + push-helm-charts: docker: - image: circleci/golang:1.12 @@ -40,11 +66,29 @@ jobs: else echo "Not a release! Skip charts publish" fi + workflows: version: 2 + build-test: + jobs: + - build-container release: jobs: + - build-container: + filters: + branches: + ignore: /.*/ + tags: + ignore: /^chart.*/ + - push-binary: + filters: + branches: + ignore: /.*/ + tags: + ignore: /^chart.*/ - push-helm-charts: + requires: + - build-container filters: branches: ignore: /.*/ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 54badfb..0000000 --- a/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -sudo: required -language: go - -go: - - 1.12.x - -services: - - docker - -addons: - apt: - packages: - - docker-ce - -script: - - make build-container - -after_success: - - if [ -z "$TRAVIS_TAG" ]; then - echo "Not a release, skipping container push"; - else - echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin; - echo $QUAY_PASS | docker login -u $QUAY_USER --password-stdin quay.io; - make push-container; - fi - -deploy: - - provider: script - skip_cleanup: true - script: curl -sL http://git.io/goreleaser | bash - on: - tags: true diff --git a/Makefile b/Makefile index 0cb1548..b3c68ac 100644 --- a/Makefile +++ b/Makefile @@ -6,18 +6,18 @@ TAG?=latest NAME:=podinfo DOCKER_REPOSITORY:=stefanprodan DOCKER_IMAGE_NAME:=$(DOCKER_REPOSITORY)/$(NAME) -GITCOMMIT:=$(shell git describe --dirty --always) +GIT_COMMIT:=$(shell git describe --dirty --always) VERSION:=$(shell grep 'VERSION' pkg/version/version.go | awk '{ print $$4 }' | tr -d '"') run: - GO111MODULE=on go run cmd/podinfo/* + GO111MODULE=on go run -ldflags "-s -w -X github.com/stefanprodan/podinfo/pkg/version.REVISION=$(GIT_COMMIT)" cmd/podinfo/* --level=debug test: GO111MODULE=on go test -v -race ./... build: - GO111MODULE=on GIT_COMMIT=$$(git rev-list -1 HEAD) && GO111MODULE=on CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/stefanprodan/podinfo/pkg/version.REVISION=$${GIT_COMMIT}" -a -o ./bin/podinfo ./cmd/podinfo/* - GO111MODULE=on GIT_COMMIT=$$(git rev-list -1 HEAD) && GO111MODULE=on CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/stefanprodan/podinfo/pkg/version.REVISION=$${GIT_COMMIT}" -a -o ./bin/podcli ./cmd/podcli/* + GO111MODULE=on GIT_COMMIT=$$(git rev-list -1 HEAD) && GO111MODULE=on CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/stefanprodan/podinfo/pkg/version.REVISION=$(GIT_COMMIT)" -a -o ./bin/podinfo ./cmd/podinfo/* + GO111MODULE=on GIT_COMMIT=$$(git rev-list -1 HEAD) && GO111MODULE=on CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/stefanprodan/podinfo/pkg/version.REVISION=$(GIT_COMMIT)" -a -o ./bin/podcli ./cmd/podcli/* build-charts: helm lint charts/* @@ -26,6 +26,13 @@ build-charts: build-container: docker build -t $(DOCKER_IMAGE_NAME):$(VERSION) . +test-container: + @docker run -dp 9898:9898 --name=podinfo $(DOCKER_IMAGE_NAME):$(VERSION) + @docker ps + @TOKEN=$$(curl -sd 'test' localhost:9898/token) && \ + JWT=$$(echo $$TOKEN | jq -r .token) && \ + curl -H "Authorization: Bearer $${JWT}" localhost:9898/token/validate | grep test + push-container: docker push $(DOCKER_IMAGE_NAME):$(VERSION) docker tag $(DOCKER_IMAGE_NAME):$(VERSION) quay.io/$(DOCKER_IMAGE_NAME):$(VERSION)