From 34653067c1802aa66d88eda81f0f935d207c6c56 Mon Sep 17 00:00:00 2001 From: Ryan Faircloth <35384120+rfaircloth-splunk@users.noreply.github.com> Date: Sun, 30 Jun 2019 18:11:22 -0400 Subject: [PATCH] Release to master with stable CI (#4) Improve CI process by waiting for container ready --- .circleci/config.yml | 243 +++++++++------- .env.template | 10 + .gitignore | 13 +- .idea/misc.xml | 5 +- .idea/modules.xml | 8 - .idea/sc4s.iml | 2 +- .idea/vcs.xml | 9 - .idea/workspace.xml | 612 ----------------------------------------- docker-compose.yml | 36 ++- requirements.txt | 2 + test-with-compose.sh | 26 ++ tests/Dockerfile | 6 +- tests/requirements.txt | 1 + tests/test_poc.py | 53 ++-- 14 files changed, 257 insertions(+), 769 deletions(-) create mode 100644 .env.template delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/workspace.xml create mode 100644 requirements.txt create mode 100755 test-with-compose.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index a616137..d6d5b9b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,101 +1,150 @@ - version: 2 - jobs: - build: - environment: - IMAGE_NAME: rfaircloth/scs - docker: - - image: circleci/buildpack-deps:stretch - steps: - - checkout - - run: git submodule sync - - run: git submodule update --init --recursive - - setup_remote_docker: - docker_layer_caching: true - - run: - name: Docker Login - command: docker login -u $DOCKER_USER -p $DOCKER_PASS - - run: - name: Build Docker image - command: pushd package; docker build -f Dockerfile --build-arg RH_ORG=$RH_ORG --build-arg RH_ACTIVATION=$RH_ACTIVATION -t $IMAGE_NAME:build . - - run: - name: Tag Docker image - command: docker tag $IMAGE_NAME:build $IMAGE_NAME:$CIRCLE_SHA1 - - run: - name: Push Docker image - command: docker push $IMAGE_NAME:$CIRCLE_SHA1 - dgoss: - environment: - IMAGE_NAME: rfaircloth/scs - GOSS_VER: v0.3.7 - GOSS_OPTS: "--max-concurrent=1 --format junit" - GOSS_FILES_STRATEGY: cp +version: 2.1 +jobs: + build: + environment: + IMAGE_NAME: rfaircloth/scs + docker: + - image: circleci/buildpack-deps:stretch + steps: + - checkout + - run: git submodule sync + - run: git submodule update --init --recursive + - setup_remote_docker: + docker_layer_caching: true + - run: + name: Docker Login + command: docker login -u $DOCKER_USER -p $DOCKER_PASS + - run: + name: Build Docker image + command: pushd package; docker build -f Dockerfile --build-arg RH_ORG=$RH_ORG --build-arg RH_ACTIVATION=$RH_ACTIVATION -t $IMAGE_NAME:build . + - run: + name: Tag Docker image + command: docker tag $IMAGE_NAME:build $IMAGE_NAME:$CIRCLE_SHA1 + - run: + name: Push Docker image + command: docker push $IMAGE_NAME:$CIRCLE_SHA1 + dgoss: + environment: + IMAGE_NAME: rfaircloth/scs + GOSS_VER: v0.3.7 + GOSS_OPTS: "--max-concurrent=1 --format junit" + GOSS_FILES_STRATEGY: cp - docker: - - image: circleci/buildpack-deps:stretch - steps: - - checkout - - setup_remote_docker: - docker_layer_caching: true - - run: - name: Docker Login - command: docker login -u $DOCKER_USER -p $DOCKER_PASS - - run: - name: Docker pull - command: docker pull $IMAGE_NAME:$CIRCLE_SHA1 - - run: - name: Install goss - command: | - # rather than give internet scripts SU rights, we install to local user bin and add to path - curl -fsSL https://goss.rocks/install | GOSS_VER=v0.3.7 sudo sh - goss -version - - run: - name: Test Docker - command: | - mkdir -p ~/project/test-results - # Don't forget path! - export PATH=$PATH:~/bin - pushd package - GOSS_FMT_OPTIONS="perfdata verbose" GOSS_FILES_STRATEGY=cp GOSS_OPTS="--max-concurrent=1 --format junit" dgoss run -t $IMAGE_NAME:$CIRCLE_SHA1 3>&1 1>&2 2>&3 > /tmp/goss.tmp || true ; cat /tmp/goss.tmp | grep -v "<" - popd - cat /tmp/goss.tmp | grep "[<\>]" > ~/project/test-results/goss.xml - - store_test_results: - path: test-results - publish: - environment: - IMAGE_NAME: rfaircloth/scs - docker: - - image: circleci/buildpack-deps:stretch - steps: - - setup_remote_docker: - docker_layer_caching: true - - run: - name: Docker Login - command: docker login -u $DOCKER_USER -p $DOCKER_PASS - - run: - name: Docker pull - command: docker pull $IMAGE_NAME:$CIRCLE_SHA1 - - run: - name: Docker tag image - command: docker tag $IMAGE_NAME:$CIRCLE_SHA1 $IMAGE_NAME:$CIRCLE_BRANCH - - run: - name: Docker push tag - command: docker push $IMAGE_NAME:$CIRCLE_BRANCH + docker: + - image: circleci/buildpack-deps:stretch + steps: + - checkout + - setup_remote_docker: + docker_layer_caching: true + - run: + name: Docker Login + command: docker login -u $DOCKER_USER -p $DOCKER_PASS + - run: + name: Docker pull + command: docker pull $IMAGE_NAME:$CIRCLE_SHA1 + - run: + name: Install goss + command: | + # rather than give internet scripts SU rights, we install to local user bin and add to path + curl -fsSL https://goss.rocks/install | GOSS_VER=v0.3.7 sudo sh + goss -version + - run: + name: Test Docker + command: | + mkdir -p ~/project/test-results + # Don't forget path! + export PATH=$PATH:~/bin + pushd package + GOSS_FMT_OPTIONS="perfdata verbose" GOSS_FILES_STRATEGY=cp GOSS_OPTS="--max-concurrent=1 --format junit" dgoss run -t $IMAGE_NAME:$CIRCLE_SHA1 3>&1 1>&2 2>&3 > /tmp/goss.tmp || true ; cat /tmp/goss.tmp | grep -v "<" + popd + cat /tmp/goss.tmp | grep "[<\>]" > ~/project/test-results/goss.xml + - store_test_results: + path: test-results + test-unit: + docker: + - image: circleci/buildpack-deps:stretch + steps: + - setup_remote_docker: + docker_layer_caching: true + - checkout + - run: git submodule sync + - run: git submodule update --init --recursive + - run: + name: Docker Login + command: docker login -u $DOCKER_USER -p $DOCKER_PASS + - run: + name: Docker pull + command: docker-compose pull + - run: + name: Setup test volume + command: | + mkdir test-results + docker volume create sc4s-tests + docker volume create sc4s-results + docker container create --name dummy \ + -v sc4s-tests:/work/tests \ + -v sc4s-results:/work/test-results \ + registry.access.redhat.com/ubi7/ubi + docker cp tests/ dummy:/work/tests/ + docker rm dummy + - run: + name: Docker Compose build + command: | + docker-compose build \ + --build-arg RH_ACTIVATION=$RH_ACTIVATION \ + --build-arg RH_ORG=$RH_ORG + - run: + name: Docker Compose up + command: docker-compose up --abort-on-container-exit + - run: + name: Collect test results from Docker Compose + command: | + docker container create --name dummy \ + -v sc4s-tests:/work/tests \ + -v sc4s-results:/work/test-results \ + registry.access.redhat.com/ubi7/ubi + docker cp dummy:/work/test-results/functional test-results + docker rm dummy + when: always + - store_test_results: + path: test-results + publish: + environment: + IMAGE_NAME: rfaircloth/scs + docker: + - image: circleci/buildpack-deps:stretch + steps: + - setup_remote_docker: + docker_layer_caching: true + - run: + name: Docker Login + command: docker login -u $DOCKER_USER -p $DOCKER_PASS + - run: + name: Docker pull + command: docker pull $IMAGE_NAME:$CIRCLE_SHA1 + - run: + name: Docker tag image + command: docker tag $IMAGE_NAME:$CIRCLE_SHA1 $IMAGE_NAME:$CIRCLE_BRANCH + - run: + name: Docker push tag + command: docker push $IMAGE_NAME:$CIRCLE_BRANCH - workflows: - version: 2 - build-publish: - jobs: - - build - - dgoss: - requires: - - build - - publish: - requires: - - dgoss - filters: - branches: - only: - - master - - develop +workflows: + build-publish: + jobs: + - build + - dgoss: + requires: + - build + - test-unit + - publish: + requires: + - dgoss + - test-unit + filters: + branches: + only: + - master + - develop diff --git a/.env.template b/.env.template new file mode 100644 index 0000000..dd14966 --- /dev/null +++ b/.env.template @@ -0,0 +1,10 @@ +RH_ORG=xxxx +RH_ACTIVATION=xxxxx +SPLUNK_HEC_TOKEN=a778f63a-5dff-4e3c-a72c-a03183659e94 +SPLUNK_PASSWORD=Changed@11 +SPLUNK_START_ARGS=--accept-license +SPLUNK_HEC_URL=https://splunk:8088/services/collector/event +SPLUNK_HEC_STATSURL=https://splunk:8088/services/collector/event +SPLUNK_CONNECT_METHOD=hec +SPLUNK_DEFAULT_INDEX=main +SPLUNK_METRICS_INDEX=metrics diff --git a/.gitignore b/.gitignore index 527731f..36345c7 100644 --- a/.gitignore +++ b/.gitignore @@ -150,7 +150,6 @@ dmypy.json *.bak *.gho *.ori -*.orig *.tmp ### Windows template @@ -202,7 +201,6 @@ export_presets.cfg *.bz2 *.xz *.lzma -*.cab # Packing-only formats *.iso @@ -212,15 +210,10 @@ export_presets.cfg *.dmg *.xpi *.gem -*.egg *.deb *.rpm -*.msi -*.msm -*.msp ### Patch template -*.orig *.rej ### macOS template @@ -256,7 +249,6 @@ Temporary Items *.exe *.exe~ *.dll -*.so *.dylib # Test binary, built with `go test -c` @@ -271,7 +263,6 @@ Temporary Items ### VirtualEnv template # Virtualenv # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ -.Python [Bb]in [Ii]nclude [Ll]ib @@ -279,7 +270,6 @@ Temporary Items [Ll]ocal [Ss]cripts pyvenv.cfg -.venv pip-selfcheck.json ### PuTTY template @@ -305,3 +295,6 @@ tags # Persistent undo [._]*.un~ +/test-results +/.idea/workspace.xml +/.idea/tasks.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 3f7f406..87f2df8 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,8 @@ - + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index aa62d56..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/sc4s.iml b/.idea/sc4s.iml index 251be75..bda388e 100644 --- a/.idea/sc4s.iml +++ b/.idea/sc4s.iml @@ -4,7 +4,7 @@ - + diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 53b20c8..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 44b7535..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,612 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pip - yum - java - goss.y - goss - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -