Compare commits

...

23 Commits

Author SHA1 Message Date
Nolan Brubaker
703f96dcff Use Xenial workers
trusty workers have older versions of software that we can't upgrade
ourselves.

Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 18:43:57 -04:00
Nolan Brubaker
215d4cd1b6 Add -- separator to push
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 18:11:37 -04:00
Nolan Brubaker
4aeead626b Use gcloud docker, no helpers
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 18:02:52 -04:00
Nolan Brubaker
878247fb36 Use gcloud's external cred helper
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 17:44:45 -04:00
Nolan Brubaker
ee761952bb Print lines of deploy script
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 17:33:50 -04:00
Nolan Brubaker
026afd4d6d Really add my project's key file
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 17:14:29 -04:00
Nolan Brubaker
03e4e78dce Make a docker directory and config
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 16:58:27 -04:00
Nolan Brubaker
24ab715247 Add travis diagnostic info
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 16:45:49 -04:00
Nolan Brubaker
415a6322cb Don't use gcloud docker
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 16:43:25 -04:00
Nolan Brubaker
04a6208b0c Use gcloud docker to push
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 16:34:56 -04:00
Nolan Brubaker
9bb547562a Accept docker configuration change
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 16:05:26 -04:00
Nolan Brubaker
576bc9e0c3 Remove test/verify dependencies for container build
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 15:57:13 -04:00
Nolan Brubaker
49fce11121 Use beta gcloud tools
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 15:56:36 -04:00
Nolan Brubaker
78c2775a04 Add docker cred helper
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 15:46:14 -04:00
Nolan Brubaker
11ac3dd3f9 Add encrypted file for my fork for real
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 15:36:38 -04:00
Nolan Brubaker
179e42f200 Use bash explicitly
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 15:12:45 -04:00
Nolan Brubaker
7e5df27a07 Add info to build on my fork
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-09-03 15:04:10 -04:00
Nolan Brubaker
07edee471b Review feedback
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-08-29 18:12:25 -04:00
Nolan Brubaker
63ae23458c Rearrange logic so that there's only one make call
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-08-29 15:05:46 -04:00
Nolan Brubaker
54a5dee1e3 Remove unused env section
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-08-29 14:59:21 -04:00
Nolan Brubaker
1d16a36bfb Add encrypted GCR creds
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-08-29 14:59:00 -04:00
Nolan Brubaker
32c99d9e3b Add travis integration to deployment
* ensure $BRANCH is always the same value (borrowed from Sonobuoy)
* get gcloud SDK installed (borrowed from Sonobuoy)
* use deploy step to run GCR push script (borrowed from Sonobuoy)
* use gcloud's docker to do the image building/pushing
* placeholders for secure values
* rename $LATEST to $HIGHEST to more accurately reflect what it is

Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-08-28 19:11:25 -04:00
Nolan Brubaker
6e3209e6e3 Explain the latest tag logic
Signed-off-by: Nolan Brubaker <brubakern@vmware.com>
2019-08-27 15:57:43 -04:00
5 changed files with 75 additions and 30 deletions

View File

@@ -1,3 +1,4 @@
dist: xenial
language: go
go:
@@ -8,4 +9,20 @@ sudo: required
services:
- docker
script: hack/ci-check.sh
script:
- export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
- echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$TRAVIS_PULL_REQUEST, BRANCH=$BRANCH"
- hack/ci-check.sh
# gcloud sdk is needed to upload docker images
before_deploy:
- if [ ! -d ${HOME}/google-cloud-sdk ]; then curl https://sdk.cloud.google.com | bash
/dev/stdin --disable-prompts; fi
deploy:
- provider: script
skip_cleanup: true
script: hack/gcr-push.sh
on:
repo: nrb/velero
all_branches: true

View File

@@ -21,7 +21,7 @@ BIN ?= velero
PKG := github.com/heptio/velero
# Where to push the docker image.
REGISTRY ?= gcr.io/heptio-images
REGISTRY ?= gcr.io/nolanb-vmware
# Which architecture to build - see $(ALL_ARCH) for options.
# if the 'local' rule is being run, detect the ARCH from 'go env'
@@ -140,10 +140,10 @@ build-fsfreeze:
push-fsfreeze: BIN = fsfreeze-pause
push-fsfreeze:
@docker push $(IMAGE):$(VERSION)
@gcloud docker -- push $(IMAGE):$(VERSION)
ifeq ($(TAG_LATEST), true)
docker tag $(IMAGE):$(VERSION) $(IMAGE):latest
docker push $(IMAGE):latest
gcloud docker -- tag $(IMAGE):$(VERSION) $(IMAGE):latest
gcloud docker -- push $(IMAGE):latest
endif
@docker images -q $(REGISTRY)/fsfreeze-pause:$(VERSION) > .container-$(DOTFILE_IMAGE)
@@ -152,7 +152,7 @@ all-containers:
$(MAKE) container BIN=velero-restic-restore-helper
$(MAKE) build-fsfreeze
container: verify test .container-$(DOTFILE_IMAGE) container-name
container: .container-$(DOTFILE_IMAGE) container-name
.container-$(DOTFILE_IMAGE): _output/bin/$(GOOS)/$(GOARCH)/$(BIN) $(DOCKERFILE)
@cp $(DOCKERFILE) _output/.dockerfile-$(BIN)-$(GOOS)-$(GOARCH)
@docker build --pull -t $(IMAGE):$(VERSION) -f _output/.dockerfile-$(BIN)-$(GOOS)-$(GOARCH) _output
@@ -169,10 +169,10 @@ all-push:
push: .push-$(DOTFILE_IMAGE) push-name
.push-$(DOTFILE_IMAGE): .container-$(DOTFILE_IMAGE)
@docker push $(IMAGE):$(VERSION)
@gcloud docker -- push $(IMAGE):$(VERSION)
ifeq ($(TAG_LATEST), true)
docker tag $(IMAGE):$(VERSION) $(IMAGE):latest
docker push $(IMAGE):latest
gcloud docker -- tag $(IMAGE):$(VERSION) $(IMAGE):latest
gcloud docker -- push $(IMAGE):latest
endif
@docker images -q $(IMAGE):$(VERSION) > $@

View File

@@ -1,37 +1,65 @@
#!/bin/sh
#!/bin/bash
set +x
if [[ -z "$TRAVIS" ]]; then
echo "This script is intended to be run only on Travis." >&2
exit 1
fi
# Return value is written into HIGHEST
HIGHEST=""
function highest_release() {
# Loop through the tags since pre-release versions come before the actual versions.
# Iterate til we find the first non-pre-release
# This is not necessarily the most recently made tag; instead, we want it to be the highest semantic version.
# The most recent tag could potentially be a lower semantic version, made as a point release for a previous series.
# As an example, if v1.3.0 exists and we create v1.2.2, v1.3.0 should still be `latest`.
# `git describe --tags $(git rev-list --tags --max-count=1)` would return the most recently made tag.
# Return value is written into LATEST
LATEST=""
function latest_release() {
# Loop through the tags since pre-release versions come before the actual versions.
# Iterate til we find the first non-pre-release
for t in $(git tag -l --sort=-v:refname);
do
# If the tag has alpha, beta or rc in it, it's not "latest"
if [[ "$t" == *"beta"* || "$t" == *"alpha"* || "$t" == *"rc"* ]]; then
continue
fi
LATEST="$t"
HIGHEST="$t"
break
done
}
# Always publish for master
if [ "$BRANCH" == "master" ]; then
VERSION="$BRANCH" make all-containers all-push
VERSION="$BRANCH"
elif [ ! -z "$TRAVIS_TAG" ]; then
VERSION="$TRAVIS_TAG"
else
# If we're not on master and we're not building a tag, exit early.
exit 0
fi
# Publish when TRAVIS_TAG is defined.
if [ ! -z "$TRAVIS_TAG" ]; then
# Calculate the latest release
latest_release
# Calculate the latest release
highest_release
# Default to pre-release
TAG_LATEST=false
if [[ "$TRAVIS_TAG" == "$LATEST" ]]; then
TAG_LATEST=true
fi
VERSION="$TRAVIS_TAG" TAG_LATEST="$TAG_LATEST" make all-containers all-push
# Assume we're not tagging `latest` by default.
TAG_LATEST=false
if [[ "$TRAVIS_TAG" == "$HIGHEST" ]]; then
TAG_LATEST=true
fi
openssl aes-256-cbc -K $encrypted_f58ab4413c21_key -iv $encrypted_f58ab4413c21_iv -in nolanb-vmware-55ce4993acec.json.enc -out nolanb-vmware-55ce4993acec.json -d
gcloud auth activate-service-account --key-file nolanb-vmware-55ce4993acec.json
#openssl aes-256-cbc -K $encrypted_f58ab4413c21_key -iv $encrypted_f58ab4413c21_iv -in heptio-images-fac92d2303ac.json.enc -out heptio-images-fac92d2303ac.json -d
#gcloud auth activate-service-account --key-file heptio-images-fac92d2303ac.json
unset GIT_HTTP_USER_AGENT
echo "DIAGNOSTICS"
ls -al .
ls -al /home/travis/.docker
cat /home/travis/.docker/config.json
docker --version
gcloud --version
echo "END DIAGNOSTICS"
echo "Building and pushing container images."
VERSION="$VERSION" TAG_LATEST="$TAG_LATEST" make all-containers all-push

Binary file not shown.

Binary file not shown.