mirror of
https://github.com/cloudnativelabs/kube-router.git
synced 2025-10-03 05:51:08 +02:00
CI: Bug fixes, one image per PR (#47)
* One image per PR * Don't use Travis deploys * Fix if statement in YAML
This commit is contained in:
parent
5af635a9bc
commit
db54caf788
32
.travis.yml
32
.travis.yml
@ -5,38 +5,22 @@ language: go
|
|||||||
go:
|
go:
|
||||||
- 1.7.x
|
- 1.7.x
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- v0.*
|
||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- IMG_FQDN=quay.io
|
|
||||||
- REPO=cloudnativelabs/kube-router
|
- REPO=cloudnativelabs/kube-router
|
||||||
- REPO_PATH=$HOME/gopath/src/github.com/$REPO
|
- REPO_PATH=$HOME/gopath/src/github.com/$REPO
|
||||||
|
- GIT_BRANCH=$TRAVIS_BRANCH
|
||||||
|
- IMG_FQDN=quay.io
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- make all
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
# All successfully built commits get an image placed in the kube-router-git
|
# All successfully built commits get an image placed in the kube-router-git
|
||||||
# image repo and tagged with the commit hash.
|
# image repo and tagged with the commit hash.
|
||||||
- make push
|
- build/travis-deploy.sh
|
||||||
|
|
||||||
deploy:
|
|
||||||
# Images from Pull Requests get tagged with the PR number.
|
|
||||||
- provider: script
|
|
||||||
on:
|
|
||||||
condition: $TRAVIS_PULL_REQUEST != "false"
|
|
||||||
skip_cleanup: true
|
|
||||||
script:
|
|
||||||
- make push IMG_PREFIX=PR$TRAVIS_PULL_REQUEST-
|
|
||||||
|
|
||||||
# Images from tagged commits get released.
|
|
||||||
- provider: script
|
|
||||||
on:
|
|
||||||
tags: true
|
|
||||||
# condition: $TRAVIS_PULL_REQUEST == "false"
|
|
||||||
skip_cleanup: true
|
|
||||||
script:
|
|
||||||
- unset IMG_FQDN # Use DockerHub for releases
|
|
||||||
- make release
|
|
||||||
|
|
||||||
# This fixes issues when a contributor uses their own Travis CI account to test
|
# This fixes issues when a contributor uses their own Travis CI account to test
|
||||||
# code/CI changes.
|
# code/CI changes.
|
||||||
|
31
Makefile
31
Makefile
@ -2,8 +2,9 @@ NAME?=kube-router
|
|||||||
DEV_SUFFIX?=-git
|
DEV_SUFFIX?=-git
|
||||||
LOCAL_PACKAGES?=app app/controllers app/options app/watchers
|
LOCAL_PACKAGES?=app app/controllers app/options app/watchers
|
||||||
IMG_NAMESPACE?=cloudnativelabs
|
IMG_NAMESPACE?=cloudnativelabs
|
||||||
IMG_TAG?=$(shell git describe --tags --dirty)
|
GIT_COMMIT=$(shell git describe --tags --dirty)
|
||||||
GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
|
IMG_TAG?=$(if $(IMG_TAG_PREFIX),$(IMG_TAG_PREFIX)-)
|
||||||
|
# GIT_BRANCH?=$(shell git rev-parse --abbrev-ref HEAD)
|
||||||
RELEASE_TAG?=$(shell build/get-git-tag.sh)
|
RELEASE_TAG?=$(shell build/get-git-tag.sh)
|
||||||
REGISTRY?=$(if $(IMG_FQDN),$(IMG_FQDN)/$(IMG_NAMESPACE)/$(NAME),$(IMG_NAMESPACE)/$(NAME))
|
REGISTRY?=$(if $(IMG_FQDN),$(IMG_FQDN)/$(IMG_NAMESPACE)/$(NAME),$(IMG_NAMESPACE)/$(NAME))
|
||||||
REGISTRY_DEV?=$(REGISTRY)$(DEV_SUFFIX)
|
REGISTRY_DEV?=$(REGISTRY)$(DEV_SUFFIX)
|
||||||
@ -16,7 +17,9 @@ UPSTREAM_IMPORT_PATH=$(GOPATH)/src/github.com/cloudnativelabs/kube-router/
|
|||||||
all: test kube-router container ## Default target. Runs tests, builds binaries and images.
|
all: test kube-router container ## Default target. Runs tests, builds binaries and images.
|
||||||
|
|
||||||
kube-router: $(shell find . -name \*.go) ## Builds kube-router.
|
kube-router: $(shell find . -name \*.go) ## Builds kube-router.
|
||||||
|
@echo Starting kube-router binary build.
|
||||||
CGO_ENABLED=0 go build -o kube-router kube-router.go
|
CGO_ENABLED=0 go build -o kube-router kube-router.go
|
||||||
|
@echo Finished kube-router binary build.
|
||||||
|
|
||||||
test: gofmt ## Runs code quality pipelines (gofmt, tests, coverage, lint, etc)
|
test: gofmt ## Runs code quality pipelines (gofmt, tests, coverage, lint, etc)
|
||||||
|
|
||||||
@ -24,33 +27,47 @@ run: kube-router ## Runs "kube-router --help".
|
|||||||
./kube-router --help
|
./kube-router --help
|
||||||
|
|
||||||
container: kube-router ## Builds a Docker container image.
|
container: kube-router ## Builds a Docker container image.
|
||||||
$(DOCKER) build -t "$(REGISTRY_DEV):$(IMG_PREFIX)$(IMG_TAG)" .
|
@echo Starting kube-router container image build.
|
||||||
|
$(DOCKER) build -t "$(REGISTRY_DEV):$(IMG_TAG)" .
|
||||||
|
@echo Finished kube-router container image build.
|
||||||
|
|
||||||
docker-login:
|
docker-login: ## Logs into a docker registry using {DOCKER,QUAY}_{USERNAME,PASSWORD} variables.
|
||||||
@if [ -z "$(NO_DOCKER_LOGIN)" ]; then \
|
@echo Starting docker login target.
|
||||||
|
@if [ -n "$(DOCKER_USERNAME)" ] && [ -n "$(DOCKER_PASSWORD)" ]; then \
|
||||||
|
echo Starting DockerHub registry login.; \
|
||||||
$(DOCKER) login -u="$(value DOCKER_USERNAME)" -p="$(value DOCKER_PASSWORD)"; \
|
$(DOCKER) login -u="$(value DOCKER_USERNAME)" -p="$(value DOCKER_PASSWORD)"; \
|
||||||
|
echo Finished DockerHub registry login.; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@if [ -z "$(NO_QUAY_LOGIN)" ]; then \
|
@if [ -n "$(QUAY_USERNAME)" ] && [ -n "$(QUAY_PASSWORD)" ]; then \
|
||||||
|
echo Starting quay.io registry login.; \
|
||||||
$(DOCKER) login -u="$(value QUAY_USERNAME)" -p="$(value QUAY_PASSWORD)" quay.io; \
|
$(DOCKER) login -u="$(value QUAY_USERNAME)" -p="$(value QUAY_PASSWORD)" quay.io; \
|
||||||
|
echo Finished quay.io registry login.; \
|
||||||
fi
|
fi
|
||||||
|
@echo Finished docker login target.
|
||||||
|
|
||||||
push: container docker-login ## Pushes a Docker container image to a registry.
|
push: container docker-login ## Pushes a Docker container image to a registry.
|
||||||
$(DOCKER) tag "$(REGISTRY_DEV):$(IMG_TAG)" "$(REGISTRY_DEV):$(GIT_BRANCH)-latest"
|
@echo Starting kube-router container image push.
|
||||||
$(DOCKER) push "$(REGISTRY_DEV)"
|
$(DOCKER) push "$(REGISTRY_DEV)"
|
||||||
|
@echo Finished kube-router container image push.
|
||||||
|
|
||||||
push-release: push
|
push-release: push
|
||||||
|
@echo Starting kube-router release container image push.
|
||||||
@test -n "$(RELEASE_TAG)"
|
@test -n "$(RELEASE_TAG)"
|
||||||
$(DOCKER) tag "$(REGISTRY_DEV):$(IMG_TAG)" "$(REGISTRY):$(RELEASE_TAG)"
|
$(DOCKER) tag "$(REGISTRY_DEV):$(IMG_TAG)" "$(REGISTRY):$(RELEASE_TAG)"
|
||||||
$(DOCKER) tag "$(REGISTRY):$(RELEASE_TAG)" "$(REGISTRY):latest"
|
$(DOCKER) tag "$(REGISTRY):$(RELEASE_TAG)" "$(REGISTRY):latest"
|
||||||
$(DOCKER) push "$(REGISTRY)"
|
$(DOCKER) push "$(REGISTRY)"
|
||||||
|
@echo Finished kube-router release container image push.
|
||||||
|
|
||||||
github-release: kube-router
|
github-release: kube-router
|
||||||
|
@echo Starting kube-router GitHub release creation.
|
||||||
@[ -n "$(value GITHUB_TOKEN)" ] && \
|
@[ -n "$(value GITHUB_TOKEN)" ] && \
|
||||||
GITHUB_TOKEN=$(value GITHUB_TOKEN); \
|
GITHUB_TOKEN=$(value GITHUB_TOKEN); \
|
||||||
curl -sL https://git.io/goreleaser | bash
|
curl -sL https://git.io/goreleaser | bash
|
||||||
|
@echo Finished kube-router GitHub release creation.
|
||||||
|
|
||||||
release: push-release github-release ## Pushes a release to DockerHub and GitHub
|
release: push-release github-release ## Pushes a release to DockerHub and GitHub
|
||||||
|
@echo Finished kube-router release target.
|
||||||
|
|
||||||
clean: ## Removes the kube-router binary and Docker images
|
clean: ## Removes the kube-router binary and Docker images
|
||||||
rm -f kube-router
|
rm -f kube-router
|
||||||
|
22
build/travis-deploy.sh
Executable file
22
build/travis-deploy.sh
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# Pull Request image tag format: PR00-PRUSER
|
||||||
|
if [ "${TRAVIS_EVENT_TYPE}" = "pull_request" ]; then
|
||||||
|
PR_USER=$(echo "$TRAVIS_PULL_REQUEST_SLUG" | sed -e 's/\/.*//')
|
||||||
|
echo "Building/pushing PR$TRAVIS_PULL_REQUEST from $PR_USER"
|
||||||
|
make push IMG_TAG="PR$TRAVIS_PULL_REQUEST-$PR_USER"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Release image tag format: v0.0.0 and latest
|
||||||
|
if [ -n "$TRAVIS_TAG" ]; then
|
||||||
|
echo "Running Release build on Travis"
|
||||||
|
make release RELEASE_TAG="$TRAVIS_TAG"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Push image tag format: COMMIT
|
||||||
|
echo "Running push build on Travis"
|
||||||
|
make push
|
@ -1,5 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
set -o nounset
|
set -o nounset
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
@ -22,4 +21,6 @@ if [[ -n "${bad_files}" ]]; then
|
|||||||
echo "or"
|
echo "or"
|
||||||
echo "Run \"${GOFMT} -w\" on each file."
|
echo "Run \"${GOFMT} -w\" on each file."
|
||||||
exit 1
|
exit 1
|
||||||
|
else
|
||||||
|
echo 'Everything is gofmt approved!'
|
||||||
fi
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user