未验证 提交 3bcc9830 编写于 作者: I innerpeacez 提交者: GitHub

Chart Release Deploy CI (#42)

* chart deploy ci

* rename

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* rm useless things

* fix

* fix

* fix

* fix

* fix
Co-authored-by: wu-sheng's avatar吴晟 Wu Sheng <wu.sheng@foxmail.com>
上级 69b74972
......@@ -24,3 +24,29 @@ on:
tags:
- 'v*'
env:
SCRIPTS_DIR: ./test/scripts
LOG_DIR: /tmp/skywalking
jobs:
build:
runs-on: ubuntu-16.04
steps:
- uses: actions/checkout@v2
- name: Prepare enviroment
run: |
bash ${SCRIPTS_DIR}/pre.sh
mkdir -p ${LOG_DIR}
- name: Start minikube
run: bash ${SCRIPTS_DIR}/minikube.sh start > ${LOG_DIR}/minikube-start-log.txt 2>&1 &
- name: Wating minikube ready
run: bash ${SCRIPTS_DIR}/minikube.sh wait
- name: Setup tunnel
run: minikube tunnel --log_dir=${LOG_DIR} &
- name: SW And ES install
run: bash ${SCRIPTS_DIR}/skywalking-deploy.sh
- uses: actions/upload-artifact@v1.0.0
if: always()
with:
name: logs
path: /tmp/skywalking
#!/usr/bin/env bash
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
set -e
CONTAINER_NAME=$1
[[ "${CONTAINER_NAME}" == "" ]] && exit 1
docker ps | grep -e ${CONTAINER_NAME} | awk '{print $1}' | xargs docker stop
docker ps -a | grep -e ${CONTAINER_NAME} | awk '{print $1}' | xargs docker rm
#!/usr/bin/env bash
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
set -x
K8S_VER=$2
if [[ "${K8S_VER}" == "" ]]; then
K8S_VER="k8s-v1.15.4"
fi
function waitMinikube() {
set +e
kubectl cluster-info
# This for loop waits until kubectl can access the api server that Minikube has created.
for _ in {1..24}; do # Timeout for 240 seconds.
kubectl get po --all-namespaces
if [ $? -ne 1 ]; then
break
fi
sleep 10
done
if ! kubectl get all --all-namespaces; then
echo "Kubernetes failed to start"
ps ax
netstat -an
docker images
cat /var/lib/localkube/localkube.err
printf '\n\n\n'
kubectl cluster-info dump
exit 1
fi
echo "Minikube is running"
for _ in {1..6}; do # Timeout for 60 seconds.
echo "$(sudo -E minikube ip) minikube.local" | sudo tee -a /etc/hosts
ip=$(cat /etc/hosts | grep minikube.local | cut -d' ' -f1 | xargs)
if [ -n "$ip" ]; then
break
fi
sleep 10
done
ip=$(cat /etc/hosts | grep minikube.local | cut -d' ' -f1 | xargs)
if [ -n "$ip" ]; then
echo "minikube.local is mapped to $ip"
else
exit 1
fi
}
# startMinikubeNone starts real kubernetes minikube with none driver. This requires `sudo`.
function startMinikubeNone() {
export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
export CHANGE_MINIKUBE_NONE_USER=true
# Troubleshoot problem with Docker build on some CircleCI machines.
if [ -f /proc/sys/net/ipv4/ip_forward ]; then
echo "IP forwarding setting: $(cat /proc/sys/net/ipv4/ip_forward)"
echo "My hostname is:"
hostname
echo "My distro is:"
cat /etc/*-release
echo "Contents of /etc/sysctl.d/"
ls -l /etc/sysctl.d/ || true
echo "Contents of /etc/sysctl.conf"
grep ip_forward /etc/sysctl.conf
echo "Config files setting ip_forward"
find /etc/sysctl.d/ -type f -exec grep ip_forward \{\} \; -print
if [ "$(cat /proc/sys/net/ipv4/ip_forward)" -eq 0 ]; then
whoami
echo "Cannot build images without IPv4 forwarding, attempting to turn on forwarding"
sudo sysctl -w net.ipv4.ip_forward=1
if [ "$(cat /proc/sys/net/ipv4/ip_forward)" -eq 0 ]; then
echo "Cannot build images without IPv4 forwarding"
exit 1
fi
fi
fi
sudo -E minikube config set WantUpdateNotification false
sudo -E minikube config set WantReportErrorPrompt false
sudo -E minikube start --kubernetes-version=${K8S_VER#k8s-} --driver=none
}
function stopMinikube() {
sudo minikube stop
}
case "$1" in
start) startMinikubeNone ;;
stop) stopMinikube ;;
wait) waitMinikube ;;
esac
#!/usr/bin/env bash
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
set -ex
HELMVERSION=$1
if [[ "${HELMVERSION}" == "" ]]; then
HELMVERSION="helm-v3.0.0"
fi
MINIKUBEVERESION=$2
if [[ "${MINIKUBEVERESION}" == "" ]]; then
MINIKUBEVERESION="minikube-v1.8.0"
fi
K8SVERSION=$3
if [[ "${K8SVERSION}" == "" ]]; then
K8SVERSION="k8s-v1.15.4"
fi
# Remove strict host checking. The rest of the file is already populated by the 'add_ssh_keys' step.
mkdir -p ~/.ssh
echo -e "\tStrictHostKeyChecking no" >> ~/.ssh/config
echo -e "\tControlMaster auto" >> ~/.ssh/config
echo -e "\tControlPersist 3600" >> ~/.ssh/config
echo -e "\tControlPath ~/.ssh/%r@%h:%p" >> ~/.ssh/config
# Create directory for logs.
mkdir -p ~/logs
# create directory for e2e artifacts.
mkdir -p ~/skywalking/test/e2e/artifacts
curl -sSL https://get.helm.sh/${HELMVERSION}-linux-amd64.tar.gz | \
sudo tar xz -C /usr/local/bin --strip-components=1 linux-amd64/helm
sudo mkdir -p /usr/local/bin
curl -sSL "https://storage.googleapis.com/minikube/releases/${MINIKUBEVERESION#minikube-}/minikube-linux-amd64" -o /tmp/minikube
chmod +x /tmp/minikube
sudo mv /tmp/minikube /usr/local/bin/minikube
curl -sSL "https://storage.googleapis.com/kubernetes-release/release/${K8SVERSION#k8s-}/bin/linux/amd64/kubectl" -o /tmp/kubectl
chmod +x /tmp/kubectl
sudo mv /tmp/kubectl /usr/local/bin/kubectl
sudo apt-get remove -y --purge man-db
sudo apt-get update
sudo apt-get install -y \
--no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages \
xvfb libgtk-3-0 libnotify4 libgconf-2-4 libnss3 libxss1 libasound2 \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common \
openjdk-8-jdk-headless
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-cache madison docker-ce
sudo apt-get install -y docker-ce=5:19.03.8~3-0~ubuntu-xenial docker-ce-cli=5:19.03.8~3-0~ubuntu-xenial containerd.io
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -e
CURRENT_DIR="$(cd "$(dirname $0)"; pwd)"
CHART_PATH="$CURRENT_DIR/../../chart"
SKYWALKING_ES7_NAMESPACE="skywaling-es7"
SKYWALKING_ES6_NAMESPACE="skywaling-es6"
ELASTIC_REPO="https://helm.elastic.co/"
cd ${CHART_PATH}
function and_elastic_repo(){
ELASTIC_REPO=$1
helm repo add elastic ${ELASTIC_REPO}
STATUS_CMD=`echo $?`
CHECK_REPO_CMD=`helm repo list | grep ${ELASTIC_REPO} | wc -l`
echo "$STATUS_CMD"
echo "$CHECK_REPO_CMD"
while [[ $STATUS_CMD != 0 && $CHECK_REPO_CMD -ge 1 ]]
do
sleep 5
helm repo add elastic ${ELASTIC_REPO}
STATUS_CMD=`echo $?`
CHECK_REPO_CMD=`helm repo list | grep ${ELASTIC_REPO} | wc -l`
done
}
function create_namespace() {
NAMESPACE=$1
kubectl create ns ${NAMESPACE}
STATUS_CMD=`echo $?`
while [[ $STATUS_CMD != 0 ]]
do
sleep 5
kubectl create ns ${NAMESPACE}
STATUS_CMD=`echo $?`
done
}
and_elastic_repo ${ELASTIC_REPO}
create_namespace ${SKYWALKING_ES6_NAMESPACE}
create_namespace ${SKYWALKING_ES7_NAMESPACE}
helm repo up
helm dep up skywalking
helm lint skywalking
sudo sysctl -w vm.max_map_count=262144
sudo sysctl -w vm.drop_caches=1
sudo sysctl -w vm.drop_caches=3
echo "Skywalking ES6 Deploy"
helm -n $SKYWALKING_ES6_NAMESPACE install skywalking skywalking \
--values ./skywalking/values-es6.yaml \
--set oap.replicas=1 --set elasticsearch.replicas=1 \
--set elasticsearch.minimumMasterNodes=1
echo "Skywalking ES7 Deploy"
helm -n $SKYWALKING_ES7_NAMESPACE install skywalking skywalking \
--set oap.replicas=1 --set elasticsearch.replicas=1
function wait_component_available() {
COMPONENT=$1
NAMESPACE=$2
CONDITIONS=$3
kubectl -n ${NAMESPACE} wait ${COMPONENT} --for condition=${CONDITIONS} --timeout=600s
}
function get_component_name() {
NAME=$1
NAMESPACE=$2
COMPONENT_TYPE=$3
name=${COMPONENT_TYPE}/`kubectl get ${COMPONENT_TYPE} -n ${NAMESPACE} | grep ${NAME} | awk '{print $1}'`
echo ${name}
}
SW_ES6_DEPLOY_NAME=`get_component_name oap ${SKYWALKING_ES6_NAMESPACE} deploy`
SW_ES7_DEPLOY_NAME=`get_component_name oap ${SKYWALKING_ES7_NAMESPACE} deploy`
# wait oap available
wait_component_available ${SW_ES6_DEPLOY_NAME} ${SKYWALKING_ES6_NAMESPACE} available
wait_component_available ${SW_ES7_DEPLOY_NAME} ${SKYWALKING_ES7_NAMESPACE} available
echo "SkyWalking deployed successfully"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册