Skip to content
This repository has been archived by the owner on Dec 21, 2023. It is now read-only.

#2719 #2752 #2810 GH Actions for CI Pipeline #2817

Merged
merged 4 commits into from
Dec 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .ci_env
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
DOCKER_ORGANIZATION="keptn"
KUBE_CONSTRAINTS=">= 1.14, <= 1.19"

CLI_FOLDER="cli/"
INSTALLER_FOLDER="installer/"
API_IMAGE="api"
API_FOLDER="api/"
OS_ROUTE_SVC_IMAGE="openshift-route-service"
OS_ROUTE_SVC_FOLDER="platform-support/openshift-route-service/"
BRIDGE_IMAGE="bridge2"
BRIDGE_FOLDER="bridge/"
JMETER_SVC_IMAGE="jmeter-service"
JMETER_SVC_FOLDER="jmeter-service/"
HELM_SVC_IMAGE="helm-service"
HELM_SVC_FOLDER="helm-service/"
GATEKEEPER_SVC_IMAGE="gatekeeper-service"
GATEKEEPER_SVC_FOLDER="gatekeeper-service/"
DISTRIBUTOR_IMAGE="distributor"
DISTRIBUTOR_FOLDER="distributor/"
EVENTBROKER_IMAGE="eventbroker-go"
EVENTBROKER_FOLDER="eventbroker/"
SHIPYARD_CONTROLLER_IMAGE="shipyard-controller"
SHIPYARD_CONTROLLER_FOLDER="shipyard-controller/"
CONFIGURATION_SVC_IMAGE="configuration-service"
CONFIGURATION_SVC_FOLDER="configuration-service/"
REMEDIATION_SVC_IMAGE="remediation-service"
REMEDIATION_SVC_FOLDER="remediation-service/"
LIGHTHOUSE_SVC_IMAGE="lighthouse-service"
LIGHTHOUSE_SVC_FOLDER="lighthouse-service/"
MONGODB_DS_IMAGE="mongodb-datastore"
MONGODB_DS_FOLDER="mongodb-datastore/"
623 changes: 623 additions & 0 deletions .github/workflows/CI.yml

Large diffs are not rendered by default.

74 changes: 0 additions & 74 deletions .github/workflows/unit-tests.yml

This file was deleted.

231 changes: 0 additions & 231 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -204,237 +204,6 @@ gke_full_part2: &gke_full_part2

jobs:
include:
##################################################################################
# Jobs for the master branch
##################################################################################
- stage: Build Docker Images
if: branch = master AND (type = cron or type = push)
os: linux
services:
- docker
script:
- export VERSION="master+${DATE}"
- echo "$REGISTRY_PASSWORD" | docker login --username $REGISTRY_USER --password-stdin
- ./writeManifest.sh
- cat MANIFEST
- source ./travis-scripts/build_develop.sh "${API_IMAGE}" "${API_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${OS_ROUTE_SVC_IMAGE}" "${OS_ROUTE_SVC_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${BRIDGE_IMAGE}" "${BRIDGE_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${JMETER_SVC_IMAGE}" "${JMETER_SVC_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${HELM_SVC_IMAGE}" "${HELM_SVC_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${GATEKEEPER_SVC_IMAGE}" "${GATEKEEPER_SVC_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${DISTRIBUTOR_IMAGE}" "${DISTRIBUTOR_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${SHIPYARD_CONTROLLER_IMAGE}" "${SHIPYARD_CONTROLLER_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${CONFIGURATION_SVC_IMAGE}" "${CONFIGURATION_SVC_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${REMEDIATION_SVC_IMAGE}" "${REMEDIATION_SVC_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${LIGHTHOUSE_SVC_IMAGE}" "${LIGHTHOUSE_SVC_FOLDER}" "${GIT_SHA}" "${DATE}"
- source ./travis-scripts/build_develop.sh "${MONGODB_DS_IMAGE}" "${MONGODB_DS_FOLDER}" "${GIT_SHA}" "${DATE}"
after_script:
- echo "The following images have been built and pushed to dockerhub:"
- docker images | grep keptn

- stage: Build CLI (OSX, Windows, Linux)
if: branch = master AND (type = cron OR type = push)
os: linux # osx
before_script:
- source ./travis-scripts/install_gcloud.sh
- echo ${GCLOUD_SERVICE_KEY} | base64 --decode > ~/gcloud-service-key.json
- gcloud auth activate-service-account --key-file ~/gcloud-service-key.json
script:
- export VERSION="master+${DATE}"
- export TAG="latest"
- echo "Build keptn cli"
- cd ./cli
- go test ./...
- source ../travis-scripts/build_cli.sh "${VERSION}" "${KUBE_CONSTRAINTS}"
- cd ..

- stage: Build Installer
if: branch = master AND (type = cron OR type = push)
os: linux
before_script:
- source ./travis-scripts/install_gcloud.sh
- echo ${GCLOUD_SERVICE_KEY} | base64 --decode > ~/gcloud-service-key.json
- gcloud auth activate-service-account --key-file ~/gcloud-service-key.json
- source ./travis-scripts/install_helm.sh
script:
- export VERSION="latest"
- echo "Build installer"
- source ./travis-scripts/build_latest_installer.sh "${VERSION}"
##################################################################################
# feature/bug/hotfix/patch branches build jobs
##################################################################################
- stage: Partial Build for feature/bug/hotfix/patch branches (CLI + Docker Images)
if: branch =~ ^feature.*$ OR branch =~ ^bug.*$ OR branch =~ ^hotfix.*$ OR branch =~ ^patch.*$
os: linux
before_script:
- source ./travis-scripts/install_gcloud.sh
- echo ${GCLOUD_SERVICE_KEY} | base64 --decode > ~/gcloud-service-key.json
- gcloud auth activate-service-account --key-file ~/gcloud-service-key.json
script:
- TYPE="$(echo $TRAVIS_BRANCH | cut -d'/' -f1)"
- NUMBER="$(echo $TRAVIS_BRANCH | cut -d'/' -f2)"
- |
if [[ $CHANGED_FILES == *"${CLI_FOLDER}"* ]]; then
echo "Build keptn cli"
cd ./cli
go test ./...
TAG="${TYPE}-${NUMBER}+${DATE}"
source ../travis-scripts/build_cli.sh "${TAG}" "${KUBE_CONSTRAINTS}"
cd ..
fi
- if: branch =~ ^feature.*$ OR branch =~ ^bug.*$ OR branch =~ ^hotfix.*$ OR branch =~ ^patch.*$
os: linux
before_script:
- source ./travis-scripts/install_gcloud.sh
- echo ${GCLOUD_SERVICE_KEY} | base64 --decode > ~/gcloud-service-key.json
- gcloud auth activate-service-account --key-file ~/gcloud-service-key.json
- source ./travis-scripts/install_helm.sh
script:
- TYPE="$(echo $TRAVIS_BRANCH | cut -d'/' -f1)"
- NUMBER="$(echo $TRAVIS_BRANCH | cut -d'/' -f2)"
- |
if [[ $CHANGED_FILES == *"${INSTALLER_FOLDER}"* ]]; then
echo "Build installer"
TAG="${TYPE}-${NUMBER}+${DATE}"
source ./travis-scripts/build_latest_installer.sh "${TAG}"
fi
- if: branch =~ ^feature.*$ OR branch =~ ^bug.*$ OR branch =~ ^hotfix.*$ OR branch =~ ^patch.*$
os: linux
services:
- docker
script:
- set -e # fail the whole script whenever any command fails
- echo "$REGISTRY_PASSWORD" | docker login --username $REGISTRY_USER --password-stdin
- ./writeManifest.sh
- TYPE="$(echo $TRAVIS_BRANCH | cut -d'/' -f1)"
- NUMBER="$(echo $TRAVIS_BRANCH | cut -d'/' -f2)"
- |
if [[ $CHANGED_FILES == *"${API_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${API_IMAGE}" "${API_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${OS_ROUTE_SVC_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${OS_ROUTE_SVC_IMAGE}" "${OS_ROUTE_SVC_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${BRIDGE_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${BRIDGE_IMAGE}" "${BRIDGE_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${JMETER_SVC_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${JMETER_SVC_IMAGE}" "${JMETER_SVC_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${HELM_SVC_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${HELM_SVC_IMAGE}" "${HELM_SVC_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${GATEKEEPER_SVC_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${GATEKEEPER_SVC_IMAGE}" "${GATEKEEPER_SVC_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${DISTRIBUTOR_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${DISTRIBUTOR_IMAGE}" "${DISTRIBUTOR_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${SHIPYARD_CONTROLLER_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${SHIPYARD_CONTROLLER_IMAGE}" "${SHIPYARD_CONTROLLER_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${CONFIGURATION_SVC_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${CONFIGURATION_SVC_IMAGE}" "${CONFIGURATION_SVC_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${REMEDIATION_SVC_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${REMEDIATION_SVC_IMAGE}" "${REMEDIATION_SVC_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${LIGHTHOUSE_SVC_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${LIGHTHOUSE_SVC_IMAGE}" "${LIGHTHOUSE_SVC_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- |
if [[ $CHANGED_FILES == *"${MONGODB_DS_FOLDER}"* ]]; then
source ./travis-scripts/build_feature.sh "${MONGODB_DS_IMAGE}" "${MONGODB_DS_FOLDER}" "${GIT_SHA}" "${TYPE}" "${NUMBER}" "${DATE}"
fi
- set +e # revert set -e from above
after_script:
- echo "The following images have been built and pushed to dockerhub:"
- docker images | grep keptn

##################################################################################
# Release specific jobs
##################################################################################
- stage: Release Build CLI
if: branch =~ ^release.*$ AND NOT type = pull_request
os: linux # osx
before_script:
- source ./travis-scripts/install_gcloud.sh
- echo ${GCLOUD_SERVICE_KEY} | base64 --decode > ~/gcloud-service-key.json
- gcloud auth activate-service-account --key-file ~/gcloud-service-key.json
script:
- export VERSION=${BRANCH#"release-"} # overwrite version for release branches based on the branch name
- echo "Build keptn cli"
- cd ./cli
- go test ./...
- TAG="${VERSION}"
- source ../travis-scripts/build_cli.sh "${VERSION}" "${KUBE_CONSTRAINTS}"
- cd ..

- stage: Release Build Installer
if: branch =~ ^release.*$ AND NOT type = pull_request
os: linux
before_script:
- source ./travis-scripts/install_gcloud.sh
- echo ${GCLOUD_SERVICE_KEY} | base64 --decode > ~/gcloud-service-key.json
- gcloud auth activate-service-account --key-file ~/gcloud-service-key.json
- source ./travis-scripts/install_helm.sh
script:
- export VERSION=${BRANCH#"release-"} # overwrite version for release branches based on the branch name
- echo "Build installer"
- source ./travis-scripts/build_release_installer.sh "${VERSION}"

- stage: Release Build Docker Images (Part 1/2)
if: branch =~ ^release.*$ AND NOT type = pull_request
os: linux
services:
- docker
script:
- set -e # fail the whole script whenever any command fails
- echo "$REGISTRY_PASSWORD" | docker login --username $REGISTRY_USER --password-stdin
- export VERSION=${BRANCH#"release-"} # overwrite version for release branches based on the branch name
- ./writeManifest.sh
- source ./travis-scripts/build_release.sh "${API_IMAGE}" "${API_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${OS_ROUTE_SVC_IMAGE}" "${OS_ROUTE_SVC_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${BRIDGE_IMAGE}" "${BRIDGE_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${JMETER_SVC_IMAGE}" "${JMETER_SVC_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${HELM_SVC_IMAGE}" "${HELM_SVC_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${GATEKEEPER_SVC_IMAGE}" "${GATEKEEPER_SVC_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${DISTRIBUTOR_IMAGE}" "${DISTRIBUTOR_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- set +e # revert set -e from above
after_script:
- echo "The following images have been built and pushed to dockerhub:"
- docker images | grep keptn

- stage: Release Build Docker Images (Part 2/2)
if: branch =~ ^release.*$ AND NOT type = pull_request
os: linux
services:
- docker
script:
- set -e # fail the whole script whenever any command fails
- echo "$REGISTRY_PASSWORD" | docker login --username $REGISTRY_USER --password-stdin
- export VERSION=${BRANCH#"release-"} # overwrite version for release branches based on the branch name
- ./writeManifest.sh
- source ./travis-scripts/build_release.sh "${SHIPYARD_CONTROLLER_IMAGE}" "${SHIPYARD_CONTROLLER_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${CONFIGURATION_SVC_IMAGE}" "${CONFIGURATION_SVC_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${REMEDIATION_SVC_IMAGE}" "${REMEDIATION_SVC_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${LIGHTHOUSE_SVC_IMAGE}" "${LIGHTHOUSE_SVC_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- source ./travis-scripts/build_release.sh "${MONGODB_DS_IMAGE}" "${MONGODB_DS_FOLDER}" "${GIT_SHA}" "${DATE}" "${VERSION}"
- set +e # revert set -e from above
after_script:
- echo "The following images have been built and pushed to dockerhub:"
- docker images | grep keptn

- stage: Test GKE Full with Istio - Pt. 1 (--platform=gke --use-case=continuous-delivery)
if: branch = master AND type = cron # run for cron
Expand Down
30 changes: 30 additions & 0 deletions gh-actions-scripts/build_docker_image.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash

# ${IMAGE}=$1 ${FOLDER}=$2 ${GIT_SHA}=$3 ${VERSION}=$4 ${DATETIME}=$5
IMAGE=$1
FOLDER=$2
GIT_SHA=$3
VERSION=$4
DATETIME=$5

echo "Building Docker Image ${IMAGE}:${VERSION}.${DATETIME}"
cp MANIFEST ./${FOLDER}MANIFEST #$FOLDER contains / at the end
cp travis-scripts/entrypoint.sh ./${FOLDER}entrypoint.sh #$FOLDER contains / at the end

cd ./${FOLDER}

# uncomment certain lines from Dockerfile that are for Travis builds only
sed -i '/#travis-uncomment/s/^#travis-uncomment //g' Dockerfile
cat MANIFEST
docker build . -t "${IMAGE}:${VERSION}.${DATETIME}" -t "${IMAGE}:${VERSION}" --build-arg version="${VERSION}"

if [[ $? -ne 0 ]]; then
echo "Failed to build Docker Image ${IMAGE}:${VERSION}.${DATETIME}, exiting"
echo "::error file=${FOLDER}/Dockerfile::Failed to build Docker Image"
exit 1
fi

docker push "${IMAGE}"

# change back to previous directory
cd -
Loading