Skip to content

Commit eeace3d

Browse files
committed
Merge branch 'master' into release
2 parents a18ca9d + 8e6fe47 commit eeace3d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+5304
-1275
lines changed

.DS_Store

-6 KB
Binary file not shown.

.circleci/config.yml

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
- setup_remote_docker:
4242
docker_layer_caching: true
4343
- run:
44-
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e PYTHON_VERSION=2.6 scalyr/scalyr-agent-ci-unittest:1 /tmp/unittest.sh
44+
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e PYTHON_VERSION=2.6 scalyr/scalyr-agent-ci-unittest:2 /tmp/unittest.sh
4545

4646
unittest-25:
4747
docker:
@@ -50,7 +50,7 @@ jobs:
5050
- setup_remote_docker:
5151
docker_layer_caching: true
5252
- run:
53-
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e PYTHON_VERSION=2.5 scalyr/scalyr-agent-ci-unittest:1 /tmp/unittest.sh
53+
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e PYTHON_VERSION=2.5 scalyr/scalyr-agent-ci-unittest:2 /tmp/unittest.sh
5454

5555
unittest-24:
5656
docker:
@@ -59,44 +59,60 @@ jobs:
5959
- setup_remote_docker:
6060
docker_layer_caching: true
6161
- run:
62-
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e PYTHON_VERSION=2.4 scalyr/scalyr-agent-ci-unittest:1 /tmp/unittest.sh
62+
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e PYTHON_VERSION=2.4 scalyr/scalyr-agent-ci-unittest:2 /tmp/unittest.sh
6363

6464
smoke-standalone-27:
6565
docker:
6666
- image: circleci/python:2.7-jessie-browsers
6767
steps:
68+
- checkout
6869
- setup_remote_docker:
6970
docker_layer_caching: true
7071
- run:
71-
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e MAX_WAIT=300 -e PYTHON_VERSION=2.7 -e SCALYR_API_KEY=${SCALYR_API_KEY} -e READ_API_KEY=${READ_API_KEY} -e SCALYR_SERVER=${SCALYR_SERVER} scalyr/scalyr-agent-ci-smoketest:9 /tmp/smoketest_standalone.sh
72-
72+
command: |
73+
docker container create --name dummy -v shared_vol:/app alpine && \
74+
docker cp $(pwd)/.circleci/smoketest_standalone.sh dummy:/app/ && \
75+
docker run -it -v shared_vol:/app -e TEST_BRANCH=${CIRCLE_BRANCH} -e MAX_WAIT=300 -e PYTHON_VERSION=2.7 -e SCALYR_API_KEY=${SCALYR_API_KEY} -e READ_API_KEY=${READ_API_KEY} -e SCALYR_SERVER=${SCALYR_SERVER} -e CIRCLE_BUILD_NUM=${CIRCLE_BUILD_NUM} scalyr/scalyr-agent-ci-unittest:2 /app/smoketest_standalone.sh && \
76+
docker rm dummy;
7377
smoke-standalone-26:
7478
docker:
7579
- image: circleci/python:2.7-jessie-browsers
7680
steps:
81+
- checkout
7782
- setup_remote_docker:
7883
docker_layer_caching: true
7984
- run:
80-
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e MAX_WAIT=300 -e PYTHON_VERSION=2.6 -e SCALYR_API_KEY=${SCALYR_API_KEY} -e READ_API_KEY=${READ_API_KEY} -e SCALYR_SERVER=${SCALYR_SERVER} scalyr/scalyr-agent-ci-smoketest:9 /tmp/smoketest_standalone.sh
81-
85+
command: |
86+
docker container create --name dummy -v shared_vol:/app alpine && \
87+
docker cp $(pwd)/.circleci/smoketest_standalone.sh dummy:/app/ && \
88+
docker run -it -v shared_vol:/app -e TEST_BRANCH=${CIRCLE_BRANCH} -e MAX_WAIT=300 -e PYTHON_VERSION=2.6 -e SCALYR_API_KEY=${SCALYR_API_KEY} -e READ_API_KEY=${READ_API_KEY} -e SCALYR_SERVER=${SCALYR_SERVER} -e CIRCLE_BUILD_NUM=${CIRCLE_BUILD_NUM} scalyr/scalyr-agent-ci-unittest:2 /tmp/smoketest_standalone.sh && \
89+
docker rm dummy;
8290
smoke-standalone-25:
8391
docker:
8492
- image: circleci/python:2.7-jessie-browsers
8593
steps:
94+
- checkout
8695
- setup_remote_docker:
8796
docker_layer_caching: true
8897
- run:
89-
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e MAX_WAIT=300 -e PYTHON_VERSION=2.5 -e SCALYR_API_KEY=${SCALYR_API_KEY} -e READ_API_KEY=${READ_API_KEY} -e SCALYR_SERVER=${SCALYR_SERVER} scalyr/scalyr-agent-ci-smoketest:9 /tmp/smoketest_standalone.sh
90-
98+
command: |
99+
docker container create --name dummy -v shared_vol:/app alpine && \
100+
docker cp $(pwd)/.circleci/smoketest_standalone.sh dummy:/app/ && \
101+
docker run -it -v shared_vol:/app -e TEST_BRANCH=${CIRCLE_BRANCH} -e MAX_WAIT=300 -e PYTHON_VERSION=2.5 -e SCALYR_API_KEY=${SCALYR_API_KEY} -e READ_API_KEY=${READ_API_KEY} -e SCALYR_SERVER=${SCALYR_SERVER} -e CIRCLE_BUILD_NUM=${CIRCLE_BUILD_NUM} scalyr/scalyr-agent-ci-unittest:2 /tmp/smoketest_standalone.sh && \
102+
docker rm dummy
91103
smoke-standalone-24:
92104
docker:
93105
- image: circleci/python:2.7-jessie-browsers
94106
steps:
107+
- checkout
95108
- setup_remote_docker:
96109
docker_layer_caching: true
97110
- run:
98-
command: docker run -it -e TEST_BRANCH=${CIRCLE_BRANCH} -e MAX_WAIT=300 -e PYTHON_VERSION=2.4 -e SCALYR_API_KEY=${SCALYR_API_KEY} -e READ_API_KEY=${READ_API_KEY} -e SCALYR_SERVER=${SCALYR_SERVER} scalyr/scalyr-agent-ci-smoketest:9 /tmp/smoketest_standalone.sh
99-
111+
command: |
112+
docker container create --name dummy -v shared_vol:/app alpine && \
113+
docker cp $(pwd)/.circleci/smoketest_standalone.sh dummy:/app/ && \
114+
docker run -it -v shared_vol:/app -e TEST_BRANCH=${CIRCLE_BRANCH} -e MAX_WAIT=300 -e PYTHON_VERSION=2.4 -e SCALYR_API_KEY=${SCALYR_API_KEY} -e READ_API_KEY=${READ_API_KEY} -e SCALYR_SERVER=${SCALYR_SERVER} -e CIRCLE_BUILD_NUM=${CIRCLE_BUILD_NUM} scalyr/scalyr-agent-ci-unittest:2 /tmp/smoketest_standalone.sh && \
115+
docker rm dummy
100116
smoke-docker-json:
101117
docker:
102118
- image: circleci/python:2.7-jessie-browsers
@@ -116,7 +132,7 @@ jobs:
116132
paths:
117133
- "venv"
118134
- run:
119-
command: source ./.circleci/smoketest_docker.sh scalyr/scalyr-agent-ci-smoketest:9 json 300
135+
command: source ./.circleci/smoketest_docker.sh scalyr/scalyr-agent-ci-unittest:2 json 300
120136

121137
smoke-docker-syslog:
122138
docker:
@@ -137,7 +153,7 @@ jobs:
137153
paths:
138154
- "venv"
139155
- run:
140-
command: source ./.circleci/smoketest_docker.sh scalyr/scalyr-agent-ci-smoketest:9 syslog 300
156+
command: source ./.circleci/smoketest_docker.sh scalyr/scalyr-agent-ci-unittest:2 syslog 300
141157

142158
smoke-k8s:
143159
machine:
@@ -186,7 +202,7 @@ jobs:
186202
- run:
187203
name: build k8s agent and run smoketest
188204
command: |
189-
source ./.circleci/smoketest_k8s.sh scalyr/scalyr-agent-ci-smoketest:9 300
205+
source ./.circleci/smoketest_k8s.sh scalyr/scalyr-agent-ci-unittest:2 300 no_delete_existing_k8s_objs
190206
191207
smoke-k8s-helm:
192208
machine:

.circleci/smoketest_docker.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ max_wait=$3
3939
#----------------------------------------------------------------------------------------
4040

4141
# Smoketest code (built into smoketest image)
42-
smoketest_script="/usr/bin/python3 /tmp/smoketest.py"
42+
smoketest_script="source ~/.bashrc && pyenv shell 3.7.3 && python3 /tmp/smoketest.py"
4343

4444
# Erase variables (to avoid subtle config bugs in development)
4545
syslog_driver_option=""
@@ -102,11 +102,11 @@ echo "Agent container ID == ${agent_hostname}"
102102
# You MUST provide scalyr server, api key and importantly, the agent_hostname container ID for the agent-liveness
103103
# query to work (uploader container waits for agent to be alive before uploading data)
104104
docker run ${syslog_driver_option} -d --name ${contname_uploader} ${smoketest_image} \
105-
${smoketest_script} ${contname_uploader} ${max_wait} \
105+
bash -c "${smoketest_script} ${contname_uploader} ${max_wait} \
106106
--mode uploader \
107107
--scalyr_server ${SCALYR_SERVER} \
108108
--read_api_key ${READ_API_KEY} \
109-
--agent_hostname ${agent_hostname}
109+
--agent_hostname ${agent_hostname}"
110110

111111
# Capture uploader short container ID
112112
uploader_hostname=$(docker ps --format "{{.ID}}" --filter "name=$contname_uploader")
@@ -115,13 +115,13 @@ echo "Uploader container ID == ${uploader_hostname}"
115115
# Launch synchronous Verifier image (writes to stdout and also queries Scalyr)
116116
# Like the Uploader, the Verifier also waits for agent to be alive before uploading data
117117
docker run ${syslog_driver_option} -it --name ${contname_verifier} ${smoketest_image} \
118-
${smoketest_script} ${contname_verifier} ${max_wait} \
118+
bash -c "${smoketest_script} ${contname_verifier} ${max_wait} \
119119
--mode verifier \
120120
--scalyr_server ${SCALYR_SERVER} \
121121
--read_api_key ${READ_API_KEY} \
122122
--agent_hostname ${agent_hostname} \
123123
--uploader_hostname ${uploader_hostname} \
124-
--debug true
124+
--debug true"
125125

126126
kill_and_delete_docker_test_containers
127127

.circleci/smoketest_k8s.sh

Lines changed: 62 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
# Expects following positional args:
2121
# $1 : smoketest image tag
2222
# $2 : max secs until test hard fails
23+
# $3 : flag indicating whether to delete pre-existing k8s objects
2324
#
2425
# e.g. usage
2526
# smoketest_k8s.sh scalyr/scalyr-agent-ci-smoketest:3 300
@@ -30,12 +31,40 @@
3031
smoketest_image=$1
3132

3233
# Max seconds before the test hard fails
33-
max_wait=$3
34+
max_wait=$2
3435

36+
# Flag indicating whether to delete pre-existing k8s objects
37+
delete_existing_objects=$3
3538

3639
# Smoketest code (built into smoketest image)
37-
smoketest_script="/usr/bin/python3 /tmp/smoketest.py"
40+
smoketest_script="source ~/.bashrc && pyenv shell 3.7.3 && python3 /tmp/smoketest.py"
3841

42+
43+
# container names for all test containers
44+
# The suffixes MUST be one of (agent, uploader, verifier) to match verify_upload::DOCKER_CONTNAME_SUFFIXES
45+
contname_agent="ci-agent-k8s-${CIRCLE_BUILD_NUM}-agent"
46+
contname_uploader="ci-agent-k8s-${CIRCLE_BUILD_NUM}-uploader"
47+
contname_verifier="ci-agent-k8s-${CIRCLE_BUILD_NUM}-verifier"
48+
49+
50+
# Delete existing resources
51+
if [[ "$delete_existing_objects" == "delete_existing_k8s_objs" ]]; then
52+
echo ""
53+
echo "=================================================="
54+
echo "Deleting existing k8s objects"
55+
echo "=================================================="
56+
kubectl delete deployment ${contname_verifier} || truepushd
57+
kubectl delete deployment ${contname_uploader} || true
58+
kubectl delete daemonset scalyr-agent-2 || true
59+
kubectl delete configmap scalyr-config || true
60+
kubectl delete secret scalyr-api-key || true
61+
kubectl delete -f https://raw.githubusercontent.com/scalyr/scalyr-agent-2/release/k8s/scalyr-service-account.yaml || true
62+
fi
63+
64+
echo ""
65+
echo "=================================================="
66+
echo "Creating k8s objects"
67+
echo "=================================================="
3968
# Create service account
4069
kubectl create -f https://raw.githubusercontent.com/scalyr/scalyr-agent-2/release/k8s/scalyr-service-account.yaml
4170

@@ -50,55 +79,71 @@ kubectl create configmap scalyr-config \
5079
# The following line should be commented out for CircleCI, but it necessary for local debugging
5180
# eval $(minikube docker-env)
5281

82+
echo ""
83+
echo "=================================================="
84+
echo "Building agent image"
85+
echo "=================================================="
5386
# Build local image (add .ci.k8s to version)
54-
TEMP_DIRECTORY=~/temp_directory
55-
mkdir $TEMP_DIRECTORY
5687
perl -pi.bak -e 's/\s*(\S+)/$1\.ci\.k8s/' VERSION
5788
python build_package.py k8s_builder
5889
TARBALL=$(ls scalyr-k8s-agent-*)
90+
91+
TEMP_DIRECTORY=~/temp_directory
92+
mkdir $TEMP_DIRECTORY
5993
mv $TARBALL $TEMP_DIRECTORY
94+
6095
pushd $TEMP_DIRECTORY
6196
./${TARBALL} --extract-packages
6297
docker build -t local_k8s_image .
6398

99+
popd
64100

65-
# container names for all test containers
66-
# The suffixes MUST be one of (agent, uploader, verifier) to match verify_upload::DOCKER_CONTNAME_SUFFIXES
67-
contname_agent="ci-agent-k8s-${CIRCLE_BUILD_NUM}-agent"
68-
contname_uploader="ci-agent-k8s-${CIRCLE_BUILD_NUM}-uploader"
69-
contname_verifier="ci-agent-k8s-${CIRCLE_BUILD_NUM}-verifier"
70-
71-
101+
echo ""
102+
echo "=================================================="
103+
echo "Customizing daemonset YAML & starting agent"
104+
echo "=================================================="
72105
# Create DaemonSet, referring to local image. Launch agent.
73-
curl -Lo scalyr-agent-2-envfrom.yaml https://raw.githubusercontent.com/scalyr/scalyr-agent-2/release/k8s/scalyr-agent-2-envfrom.yaml
106+
# Use YAML from branch
107+
cp k8s/scalyr-agent-2-envfrom.yaml .
74108
perl -pi.bak -e 's/image\:\s+(\S+)/image: local_k8s_image/' scalyr-agent-2-envfrom.yaml
75109
perl -pi.bak -e 's/imagePullPolicy\:\s+(\S+)/imagePullPolicy: Never/' scalyr-agent-2-envfrom.yaml
76110
kubectl create -f scalyr-agent-2-envfrom.yaml
77111
# Capture agent pod
78112
agent_hostname=$(kubectl get pods | fgrep scalyr-agent-2 | awk {'print $1'})
79113
echo "Agent pod == ${agent_hostname}"
80114

81-
82115
# Launch Uploader container (only writes to stdout, but needs to query Scalyr to verify agent liveness)
83116
# You MUST provide scalyr server, api key and importantly, the agent_hostname container ID for the agent-liveness
84117
# query to work (uploader container waits for agent to be alive before uploading data)
85-
kubectl run ${contname_uploader} --image=${smoketest_image} -- ${smoketest_script} \
118+
echo ""
119+
echo "=================================================="
120+
echo "Starting uploader"
121+
echo "=================================================="
122+
kubectl run ${contname_uploader} --image=${smoketest_image} -- \
123+
bash -c "${smoketest_script} \
86124
${contname_uploader} ${max_wait} \
87125
--mode uploader \
88126
--scalyr_server ${SCALYR_SERVER} \
89127
--read_api_key ${READ_API_KEY} \
90-
--agent_hostname ${agent_hostname}
128+
--agent_hostname ${agent_hostname}"
129+
91130
# Capture uploader pod
92131
uploader_hostname=$(kubectl get pods | fgrep ${contname_uploader} | awk {'print $1'})
93132
echo "Uploader pod == ${uploader_hostname}"
94133

95134

96135
# Launch synchronous Verifier image (writes to stdout and also queries Scalyr)
97136
# Like the Uploader, the Verifier also waits for agent to be alive before uploading data
98-
kubectl run ${contname_verifier} --image=${smoketest_image} -- ${smoketest_script} \
137+
echo ""
138+
echo "=================================================="
139+
echo "Starting verifier"
140+
echo "=================================================="
141+
kubectl run -it --restart=Never ${contname_verifier} --image=${smoketest_image} -- \
142+
bash -c "${smoketest_script} \
99143
${contname_verifier} ${max_wait} \
100144
--mode verifier \
101145
--scalyr_server ${SCALYR_SERVER} \
102146
--read_api_key ${READ_API_KEY} \
103147
--agent_hostname ${agent_hostname} \
104-
--uploader_hostname ${uploader_hostname}
148+
--uploader_hostname ${uploader_hostname} \
149+
--debug true"

0 commit comments

Comments
 (0)