Skip to content
This repository has been archived by the owner on Aug 20, 2024. It is now read-only.

Commit

Permalink
CI fix
Browse files Browse the repository at this point in the history
  • Loading branch information
ruzickap committed Feb 4, 2019
1 parent c6775c8 commit b5564f3
Show file tree
Hide file tree
Showing 6 changed files with 139 additions and 210 deletions.
56 changes: 5 additions & 51 deletions .appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,55 +1,9 @@
image: ubuntu1804
# Not working because test VMs had problems with network connectivity and I saw many i/o timeouts, DNS resolution errors, etc...
image: ubuntu1604

stack: node 8
stack: node 8, docker

install:
# - export APPVEYOR_SSH_BLOCK=true
- curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-ssh.sh' | bash -e -
- export KUBERNETES_VERSION=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
- sudo apt install -qq -y jq siege socat
# Install Terraform
- export TERRAFORM_LATEST_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r -M '.current_version')
- curl --silent --location https://releases.hashicorp.com/terraform/${TERRAFORM_LATEST_VERSION}/terraform_${TERRAFORM_LATEST_VERSION}_linux_amd64.zip --output /tmp/terraform_linux_amd64.zip
- sudo unzip -o /tmp/terraform_linux_amd64.zip -d /usr/local/bin/
# Install markdownlint and markdown-link-check
- npm install -g markdownlint-cli markdown-link-check
# Generate ssh key if needed
- test -f $HOME/.ssh/id_rsa || ( install -m 0700 -d $HOME/.ssh && ssh-keygen -b 2048 -t rsa -f $HOME/.ssh/id_rsa -q -N "" )
# Make root mounted as rshared to fix kube-dns issues.
- sudo mount --make-rshared /
# Download kubectl, which is a requirement for using minikube.
- curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBERNETES_VERSION}/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Download minikube.
- curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
# Star minikube.
- |
export CHANGE_MINIKUBE_NONE_USER=true
sudo --preserve-env minikube start --vm-driver=none --bootstrapper=kubeadm --kubernetes-version=${KUBERNETES_VERSION}
# Fix the kubectl context, as it's often stale.
- minikube update-context
# Wait for Kubernetes to be up and ready.
- JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl get nodes -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1; done

build_script:
# Terraform checks
- |
cat > terraform.tfvars << EOF
openstack_instance_image_name = "test"
openstack_password = "test"
openstack_tenant_name = "test"
openstack_user_domain_name = "test"
openstack_user_name = "test"
openstack_auth_url = "test"
openstack_instance_flavor_name = "test"
EOF
terraform init -var-file=terraform.tfvars terrafrom/openstack
terraform validate -var-file=terraform.tfvars terrafrom/openstack
# Markdown check
- |
echo '"line-length": false' > markdownlint_config.json
markdownlint -c markdownlint_config.json README.md
# Link Checks
- |
echo '{ "ignorePatterns": [ { "pattern": "^(http|https)://localhost" } ] }' > config.json
markdown-link-check --config config.json ./README.md
# k8s commands (use everything starting from Helm installation 'curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash')
- sed -n '/^```bash/,/^```/p' README.md | sed '/^```*/d' | sed -n '/^curl https:\/\/raw.githubusercontent.com\/helm\/helm\/master\/scripts\/get | bash/,$p' | sh -eux
- ./tests/ci_test.sh
14 changes: 14 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# ~/.circleci/config.yml

# Not working at all - probably too old Ubuntu trusty :-(

version: 2.1
jobs:
build:
machine: true
steps:
- checkout
- run:
name: Running tests
command: |
./tests/ci_test.sh
61 changes: 4 additions & 57 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,64 +1,11 @@
# We need the systemd for the kubeadm and it's default from 16.04+
dist: xenial

addons:
apt:
packages:
- jq
- siege
- socat
node_js:
- "8"

env:
global:
- KUBERNETES_VERSION=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
# curl -L -s https://api.github.com/repos/istio/istio/releases/latest | grep tag_name | sed "s/ *\"tag_name\": *\"\\(.*\\)\",*/\\1/"
- ISTIO_VERSION="1.0.5"

install:
- |
TERRAFORM_LATEST_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r -M '.current_version')
curl --silent --location https://releases.hashicorp.com/terraform/${TERRAFORM_LATEST_VERSION}/terraform_${TERRAFORM_LATEST_VERSION}_linux_amd64.zip --output /tmp/terraform_linux_amd64.zip
sudo unzip -o /tmp/terraform_linux_amd64.zip -d /usr/local/bin/
- npm install -g markdownlint-cli markdown-link-check

before_script:
# Generate ssh key if needed
- test -f $HOME/.ssh/id_rsa || ( install -m 0700 -d $HOME/.ssh && ssh-keygen -b 2048 -t rsa -f $HOME/.ssh/id_rsa -q -N "" )
# Make root mounted as rshared to fix kube-dns issues.
- sudo mount --make-rshared /
# Download kubectl, which is a requirement for using minikube.
- curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBERNETES_VERSION}/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Download minikube.
- curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
- |
CHANGE_MINIKUBE_NONE_USER=true
sudo minikube start --vm-driver=none --bootstrapper=kubeadm --kubernetes-version=${KUBERNETES_VERSION}
# Fix the kubectl context, as it's often stale.
- minikube update-context
# Wait for Kubernetes to be up and ready.
- JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl get nodes -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1; done
- ISTIO_VERSION="1.0.5"

script:
# Terraform checks
- |
cat > terraform.tfvars << EOF
openstack_instance_image_name = "test"
openstack_password = "test"
openstack_tenant_name = "test"
openstack_user_domain_name = "test"
openstack_user_name = "test"
openstack_auth_url = "test"
openstack_instance_flavor_name = "test"
EOF
terraform init -var-file=terraform.tfvars terrafrom/openstack
terraform validate -var-file=terraform.tfvars terrafrom/openstack
# Markdown check
- |
echo '"line-length": false' > markdownlint_config.json
markdownlint -c markdownlint_config.json README.md
# Link Checks
- |
echo '{ "ignorePatterns": [ { "pattern": "^(http|https)://localhost" } ] }' > config.json
markdown-link-check --config config.json ./README.md
# k8s commands (use everything starting from Helm installation except rook and elasticsearch - because of TravisCI bandwidth limitation)
- sed -n '/^```bash/,/^```/p' README.md | sed '/^```*/d' | sed -n '/^curl https:\/\/raw.githubusercontent.com\/helm\/helm\/master\/scripts\/get | bash/,$p' | sed '/^helm repo add rook-stable/,/kubectl get -l app=fluent-bit svc,pods --all-namespaces -o wide/d' | sh -eux
- ./tests/ci_test.sh
68 changes: 13 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ apt-get install -y kubectl socat
Install Helm binary locally:

```bash
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash
curl -s https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash
```

Install Tiller (the Helm server-side component) into the Kubernetes Cluster:
Expand Down Expand Up @@ -273,76 +273,34 @@ Create your Rook cluster:

```bash
kubectl create -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/cluster.yaml
sleep 300
```

Check what was created in `rook-ceph` namespace:

```bash
kubectl get svc,deploy,po --namespace=rook-ceph -o wide
```

Output:

```shell
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/rook-ceph-mgr ClusterIP 10.103.130.126 <none> 9283/TCP 57s app=rook-ceph-mgr,rook_cluster=rook-ceph
service/rook-ceph-mgr-dashboard ClusterIP 10.108.113.191 <none> 8443/TCP 57s app=rook-ceph-mgr,rook_cluster=rook-ceph
service/rook-ceph-mon-a ClusterIP 10.109.40.168 <none> 6790/TCP 4m app=rook-ceph-mon,ceph_daemon_id=a,mon=a,mon_cluster=rook-ceph,rook_cluster=rook-ceph
service/rook-ceph-mon-b ClusterIP 10.103.75.150 <none> 6790/TCP 3m app=rook-ceph-mon,ceph_daemon_id=b,mon=b,mon_cluster=rook-ceph,rook_cluster=rook-ceph
service/rook-ceph-mon-c ClusterIP 10.96.51.185 <none> 6790/TCP 3m app=rook-ceph-mon,ceph_daemon_id=c,mon=c,mon_cluster=rook-ceph,rook_cluster=rook-ceph

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
deployment.extensions/rook-ceph-mgr-a 1 1 1 1 1m mgr ceph/ceph:v13 app=rook-ceph-mgr,ceph_daemon_id=a,instance=a,mgr=a,rook_cluster=rook-ceph
deployment.extensions/rook-ceph-mon-a 1 1 1 1 4m mon ceph/ceph:v13 app=rook-ceph-mon,ceph_daemon_id=a,mon=a,mon_cluster=rook-ceph,rook_cluster=rook-ceph
deployment.extensions/rook-ceph-mon-b 1 1 1 1 3m mon ceph/ceph:v13 app=rook-ceph-mon,ceph_daemon_id=b,mon=b,mon_cluster=rook-ceph,rook_cluster=rook-ceph
deployment.extensions/rook-ceph-mon-c 1 1 1 1 3m mon ceph/ceph:v13 app=rook-ceph-mon,ceph_daemon_id=c,mon=c,mon_cluster=rook-ceph,rook_cluster=rook-ceph
deployment.extensions/rook-ceph-osd-0 1 1 1 1 44s osd ceph/ceph:v13 app=rook-ceph-osd,ceph-osd-id=0,rook_cluster=rook-ceph
deployment.extensions/rook-ceph-osd-1 1 1 1 1 44s osd ceph/ceph:v13 app=rook-ceph-osd,ceph-osd-id=1,rook_cluster=rook-ceph
deployment.extensions/rook-ceph-osd-2 1 1 1 1 43s osd ceph/ceph:v13 app=rook-ceph-osd,ceph-osd-id=2,rook_cluster=rook-ceph

NAME READY STATUS RESTARTS AGE IP NODE
pod/rook-ceph-mgr-a-669f5b47fc-ptwcr 1/1 Running 0 1m 10.244.2.5 pruzicka-k8s-istio-demo-node03
pod/rook-ceph-mon-a-798d774f55-nkmmr 1/1 Running 0 4m 10.244.0.5 pruzicka-k8s-istio-demo-node01
pod/rook-ceph-mon-b-56dbd4f886-z9nbj 1/1 Running 0 3m 10.244.1.6 pruzicka-k8s-istio-demo-node02
pod/rook-ceph-mon-c-79d54b78f7-zd7zx 1/1 Running 0 3m 10.244.2.4 pruzicka-k8s-istio-demo-node03
pod/rook-ceph-osd-0-57c5b499b6-p2fsl 1/1 Running 0 44s 10.244.1.8 pruzicka-k8s-istio-demo-node02
pod/rook-ceph-osd-1-7ddbfbfb5f-qrdzx 1/1 Running 0 44s 10.244.0.7 pruzicka-k8s-istio-demo-node01
pod/rook-ceph-osd-2-66c4d8969c-tt4k9 1/1 Running 0 43s 10.244.2.7 pruzicka-k8s-istio-demo-node03
pod/rook-ceph-osd-prepare-pruzicka-k8s-istio-demo-node01-ffsrp 0/2 Completed 0 49s 10.244.0.6 pruzicka-k8s-istio-demo-node01
pod/rook-ceph-osd-prepare-pruzicka-k8s-istio-demo-node02-65mnz 0/2 Completed 0 49s 10.244.1.7 pruzicka-k8s-istio-demo-node02
pod/rook-ceph-osd-prepare-pruzicka-k8s-istio-demo-node03-kz857 0/2 Completed 0 49s 10.244.2.6 pruzicka-k8s-istio-demo-node03
sleep 50
```

Get the Toolbox with ceph commands:

```bash
kubectl create -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/toolbox.yaml
sleep 10
sleep 250
```

The deployment with `rook-ceph-tools` was created:
Check what was created in `rook-ceph` namespace:

```bash
kubectl get deployment,pods --namespace=rook-ceph -o wide -l app=rook-ceph-tools
kubectl get svc,deploy,po --namespace=rook-ceph -o wide
```

Output:

```shell
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
deployment.extensions/rook-ceph-tools 1 1 1 1 11s rook-ceph-tools rook/ceph:master app=rook-ceph-tools

NAME READY STATUS RESTARTS AGE IP NODE
pod/rook-ceph-tools-76c7d559b6-qth8c 1/1 Running 0 11s 192.168.250.12 pruzicka-k8s-istio-demo-node02
TODO xxxxxxxxx
```

Create a storage class based on the Ceph RBD volume plugin:

```bash
kubectl create -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/storageclass.yaml
# Give Ceph some time to create pool...
sleep 20
sleep 10
```

Set `rook-ceph-block` as default Storage Class:
Expand Down Expand Up @@ -611,7 +569,7 @@ Install ElasticSearch operator:

```bash
helm install --wait --name elasticsearch-operator es-operator/elasticsearch-operator --set rbac.enabled=True --namespace es-operator
sleep 30
sleep 50
```

Check how the operator looks like:
Expand All @@ -637,8 +595,8 @@ helm install --wait --name=elasticsearch --namespace logging es-operator/elastic
--set kibana.enabled=true \
--set cerebro.enabled=true \
--set storage.class=rook-ceph-block \
--set clientReplicas=3,masterReplicas=3,dataReplicas=3
sleep 700
--set clientReplicas=1,masterReplicas=1,dataReplicas=1
sleep 500
```

Show ElasticSearch components:
Expand Down Expand Up @@ -780,7 +738,7 @@ cd istio*
Install Istio using Helm:

```bash
helm install --wait --timeout 2500 --name istio --namespace istio-system install/kubernetes/helm/istio \
helm install --wait --name istio --namespace istio-system install/kubernetes/helm/istio \
--set gateways.istio-ingressgateway.type=NodePort \
--set gateways.istio-egressgateway.type=NodePort \
--set grafana.enabled=true \
Expand Down Expand Up @@ -935,7 +893,7 @@ Deploy the demo of [Bookinfo](https://istio.io/docs/examples/bookinfo/) applicat

```bash
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
sleep 200
sleep 300
```

Confirm all services and pods are correctly defined and running:
Expand Down Expand Up @@ -986,7 +944,7 @@ Define the ingress gateway for the application:
```bash
cat samples/bookinfo/networking/bookinfo-gateway.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
sleep 5
sleep 10
```

Confirm the gateway has been created:
Expand Down
53 changes: 6 additions & 47 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -1,55 +1,14 @@
# Not working because of error: tee: /dev/fd/2: No such device or address

trigger:
- master

pool:
vmImage: 'Ubuntu-16.04'

steps:
- script: |
set -eux
export TERM=linux
export DEBIAN_FRONTEND=noninteractive
export KUBERNETES_VERSION=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
sudo --preserve-env apt-get install -qq -y jq siege socat
# Install Terraform
export TERRAFORM_LATEST_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r -M '.current_version')
curl --silent --location https://releases.hashicorp.com/terraform/${TERRAFORM_LATEST_VERSION}/terraform_${TERRAFORM_LATEST_VERSION}_linux_amd64.zip --output /tmp/terraform_linux_amd64.zip
sudo unzip -o /tmp/terraform_linux_amd64.zip -d /usr/local/bin/
# Install markdownlint and markdown-link-check
sudo npm install -g markdownlint-cli markdown-link-check
# Generate ssh key if needed
test -f $HOME/.ssh/id_rsa || ( install -m 0700 -d $HOME/.ssh && ssh-keygen -b 2048 -t rsa -f $HOME/.ssh/id_rsa -q -N "" )
# Make root mounted as rshared to fix kube-dns issues.
sudo mount --make-rshared /
# Download kubectl, which is a requirement for using minikube.
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBERNETES_VERSION}/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Download minikube.
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
# Star minikube.
export CHANGE_MINIKUBE_NONE_USER=true
sudo --preserve-env minikube start --vm-driver=none --bootstrapper=kubeadm --kubernetes-version=${KUBERNETES_VERSION}
# Fix the kubectl context, as it's often stale.
minikube update-context
# Wait for Kubernetes to be up and ready.
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl get nodes -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1; done
# Terraform checks
cat > terraform.tfvars << EOF
openstack_instance_image_name = "test"
openstack_password = "test"
openstack_tenant_name = "test"
openstack_user_domain_name = "test"
openstack_user_name = "test"
openstack_auth_url = "test"
openstack_instance_flavor_name = "test"
EOF
terraform init -var-file=terraform.tfvars terrafrom/openstack
terraform validate -var-file=terraform.tfvars terrafrom/openstack
# Markdown check
echo '"line-length": false' > markdownlint_config.json
markdownlint -c markdownlint_config.json README.md
# Link Checks
echo '{ "ignorePatterns": [ { "pattern": "^(http|https)://localhost" } ] }' > config.json
markdown-link-check --config config.json ./README.md
# k8s commands (use everything starting from Helm installation 'curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash')
sed -n '/^```bash/,/^```/p' README.md | sed '/^```*/d' | sed -n '/^curl https:\/\/raw.githubusercontent.com\/helm\/helm\/master\/scripts\/get | bash/,$p' | sh -eux
- bash: |
./tests/ci_test.sh
env:
SHELL: /bin/bash
displayName: 'Tests'
Loading

0 comments on commit b5564f3

Please sign in to comment.