From 7f040a35534fe472b5fc8d725ffb15184ae28d4a Mon Sep 17 00:00:00 2001 From: stinkyfingers Date: Mon, 15 Nov 2021 12:48:12 -0600 Subject: [PATCH] first pass - ghactions fix docker step update dockerhub action update dockerhub action part 2 update dockerhub action part 3 update dockerhub action part 4 update dockerhub action part 5 don't install minikube use k3d move commans to deploy file traefik installed already where are tests correct dir, re-add traefik correct dir, re-add traefik uninstall traefik install bats cleanup always push to dockerhub --- .github/workflows/deploy.yaml | 85 +++++++++++++++++++++++++++++++++++ .travis.yml | 57 ----------------------- cli_tests/install_bats.sh | 6 --- cli_tests/install_ketch.sh | 51 --------------------- cli_tests/install_kubectl.sh | 7 --- cli_tests/install_minikube.sh | 17 ------- 6 files changed, 85 insertions(+), 138 deletions(-) create mode 100644 .github/workflows/deploy.yaml delete mode 100644 .travis.yml delete mode 100755 cli_tests/install_bats.sh delete mode 100755 cli_tests/install_ketch.sh delete mode 100755 cli_tests/install_kubectl.sh delete mode 100755 cli_tests/install_minikube.sh diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 00000000..119d6567 --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,85 @@ +name: Build, test, and deploy ketch + +on: push + +jobs: + build: + name: Build binaries + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Go Version + uses: actions/setup-go@v2 + with: + go-version: '1.17' + - name: Unit Tests + run : | + make install-kubebuilder KUBEBUILDER_INSTALL_DIR=/tmp/kubebuilder + export TEST_ASSET_KUBECTL=/tmp/kubebuilder/bin/kubectl + export TEST_ASSET_KUBE_APISERVER=/tmp/kubebuilder/bin/kube-apiserver + export TEST_ASSET_ETCD=/tmp/kubebuilder/bin/etcd + make test + - name: Login to Docker Hub + if: github.ref != 'ref/head/master' + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Push to Docker Hub + uses: docker/build-push-action@v2 + with: + tags: shipasoftware/ketch:${{github.sha}} + push: true + - uses: AbsaOSS/k3d-action@v1.5.0 + name: "Create K3D Cluster" + with: + cluster-name: "test-cluster-1" + args: --agents 1 + - name: Install Integration Test Dependencies + run: | + # kubebuilder + make install-kubebuilder KUBEBUILDER_INSTALL_DIR=/tmp/kubebuilder + + # kustomize + make install-kustomize KUSTOMIZE_INSTALL_DIR=/tmp + export PATH=$PATH:/tmp + + # ketch + kubectl cluster-info + make manifests install ketch manager + export PATH=$PATH:$(pwd)/bin + ketch -v + + # helm + curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 get_helm.sh && ./get_helm.sh + + # cert-manager + kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.1/cert-manager.yaml + + # traefik + helm repo add traefik https://helm.traefik.io/traefik + helm repo update + helm uninstall traefik -n kube-system + helm install traefik traefik/traefik + + # istio + ISTIO_VERSION=1.11.0 && curl -L -k https://istio.io/downloadIstio |ISTIO_VERSION=1.11.0 sh - && cd istio-$ISTIO_VERSION && ./bin/istioctl install --set profile=demo -y + cd ../ + + # nginx + helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx + helm repo update + helm install ingress-nginx ingress-nginx/ingress-nginx + + # wait for containers + kubectl wait --for=condition=Ready=true pod -n cert-manager --all + kubectl get pods -A + + # install bats + sudo apt-get update -yq && sudo apt-get install bats -y + + - name: Run Integration Tests + run: | + cli_tests/app.sh + cli_tests/job.sh \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 845f444f..00000000 --- a/.travis.yml +++ /dev/null @@ -1,57 +0,0 @@ -stages: - - test - - build - -sudo: required - -jobs: - include: - - stage: test - name: "Running unit tests" - language: go - go: "1.17" - script: - - make install-kubebuilder KUBEBUILDER_INSTALL_DIR=/tmp/kubebuilder - - export TEST_ASSET_KUBECTL=/tmp/kubebuilder/bin/kubectl - - export TEST_ASSET_KUBE_APISERVER=/tmp/kubebuilder/bin/kube-apiserver - - export TEST_ASSET_ETCD=/tmp/kubebuilder/bin/etcd - - make test - - - stage: build - if: type == pull_request - branches: - except: - - master - language: bash - sudo: required - script: - - echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin - - docker build -t shipasoftware/ketch:$TRAVIS_COMMIT . - - docker push shipasoftware/ketch:$TRAVIS_COMMIT - - - stage: build - branches: - only: - - master - language: bash - sudo: required - script: - - echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin - - docker build -t shipasoftware/ketch:$TRAVIS_COMMIT . - - docker push shipasoftware/ketch:$TRAVIS_COMMIT - - - stage: test - sudo: required - name: "Running integration tests" - language: go - go: 1.17.x - services: - - docker - provider: script - script: - - bash cli_tests/install_kubectl.sh - - bash cli_tests/install_minikube.sh - - bash cli_tests/install_bats.sh - - bash cli_tests/install_ketch.sh - - bats cli_tests/app.sh - - bats cli_tests/job.sh \ No newline at end of file diff --git a/cli_tests/install_bats.sh b/cli_tests/install_bats.sh deleted file mode 100755 index c9c1b35f..00000000 --- a/cli_tests/install_bats.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -set -e - -# BATS is a TAP-compliant CLI testing framework. See: https://github.com/bats-core/bats-core -sudo apt-get update -yq && sudo apt-get install bats -y diff --git a/cli_tests/install_ketch.sh b/cli_tests/install_ketch.sh deleted file mode 100755 index fa265a87..00000000 --- a/cli_tests/install_ketch.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh - -# exit when any command fails -set -e -set -o pipefail -set -x -# keep track of the last executed command -trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG -# echo an error message before exiting -trap 'echo "\"${last_command}\" command filed with exit code $?."' EXIT - -# start cluster -sudo minikube start --profile=minikube --vm-driver=none --kubernetes-version=v1.20.1 -sudo chown -R travis /home/travis/.minikube/ - -# kubebuilder -make install-kubebuilder KUBEBUILDER_INSTALL_DIR=/tmp/kubebuilder - -# kustomize -make install-kustomize KUSTOMIZE_INSTALL_DIR=/tmp -export PATH=$PATH:/tmp - -# ketch -kubectl cluster-info -make manifests install ketch manager -export PATH=$PATH:$(pwd)/bin -ketch -v - -# helm -curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 get_helm.sh && ./get_helm.sh - -# cert-manager -kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.1/cert-manager.yaml - -# traefik -helm repo add traefik https://helm.traefik.io/traefik -helm repo update -helm install traefik traefik/traefik - -# istio -ISTIO_VERSION=1.11.0 && curl -L -k https://istio.io/downloadIstio |ISTIO_VERSION=1.11.0 sh - && cd istio-$ISTIO_VERSION && ./bin/istioctl install --set profile=demo -y - -# nginx -helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx -helm repo update -helm install ingress-nginx ingress-nginx/ingress-nginx - -# wait for containers -kubectl wait --for=condition=Ready=true pod -n cert-manager --all -kubectl get pods -A - diff --git a/cli_tests/install_kubectl.sh b/cli_tests/install_kubectl.sh deleted file mode 100755 index a83cfe9a..00000000 --- a/cli_tests/install_kubectl.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -set -e - -curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.20.1/bin/linux/amd64/kubectl -chmod +x kubectl -sudo mv kubectl /usr/local/bin/ diff --git a/cli_tests/install_minikube.sh b/cli_tests/install_minikube.sh deleted file mode 100755 index 4be717e8..00000000 --- a/cli_tests/install_minikube.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -set -e - -export CHANGE_MINIKUBE_NONE_USER=true -export MINIKUBE_WANTUPDATENOTIFICATION=false -export MINIKUBE_WANTREPORTERRORPROMPT=false -export MINIKUBE_HOME=$HOME -export KUBECONFIG=$HOME/.kube/config - -# Minikube -sudo apt-get update -yq && sudo apt-get -qq -y install conntrack -curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.20.0/minikube-linux-amd64 -chmod +x minikube -sudo mv minikube /usr/local/bin/ -mkdir -p $HOME/.kube $HOME/.minikube -touch "$KUBECONFIG" \ No newline at end of file