diff --git a/.circleci/config.yml b/.circleci/config.yml index d7f9b02..abd5a4f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,414 +12,16 @@ orbs: go: circleci/go@0.2.0 snyk: snyk/snyk@0.0.8 versioning: kollex/versioning@1.0.0 -jobs: - build: - docker: - - image: circleci/buildpack-deps:18.04 - environment: - REGISTRY: docker.pkg.github.com - CI_IMAGE: splunk/splunk-connect-for-syslog/ci - steps: - - setup_remote_docker: - docker_layer_caching: true - - checkout - - run: git submodule update --init --recursive - - run: mkdir /tmp/workspace - - - versioning/define_version - - versioning/create_version_file: - version_file_path: /tmp/workspace/VERSION - - run: - name: Record version - command: | - CIRCLE_BRANCH_CLEAN=$(echo ${CIRCLE_BRANCH} | sed 's/[^a-zA-Z0-9\._-]//g') - if [ -n "${CIRCLE_TAG}" ]; then DOCKER_TAG=${CIRCLE_TAG}; else DOCKER_TAG="${CIRCLE_BRANCH_CLEAN}"; fi - if [ -n "${CIRCLE_TAG}" ]; then VERSION=${CIRCLE_TAG}; else VERSION="${CIRCLE_BRANCH_CLEAN}@${CIRCLE_SHA1:0:6}"; fi - echo $DOCKER_TAG-${CIRCLE_BRANCH_CLEAN}@${CIRCLE_SHA1:0:7}>package/VERSION - - docker/install-docker - - docker/check: - registry: $REGISTRY - docker-username: GITHUB_USER - docker-password: GITHUB_TOKEN - - docker/build: - image: $CI_IMAGE - registry: $REGISTRY - path: package - - - docker/install-goss: - version: v0.3.7 - - run: - name: Test Docker - command: | - mkdir -p /tmp/test-results - # Don't forget path! - export PATH=$PATH:~/bin - pushd package - GOSS_VER=v0.3.7 GOSS_FMT_OPTIONS="perfdata verbose" GOSS_FILES_STRATEGY=cp GOSS_OPTS="--max-concurrent=1 --format junit" dgoss run -t $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 3>&1 1>&2 2>&3 > /tmp/goss.tmp || true ; cat /tmp/goss.tmp | grep -v "<" - popd - cat /tmp/goss.tmp | grep "[<\>]" > /tmp/test-results/goss.xml - - - docker/push: - registry: $REGISTRY - image: $CI_IMAGE - - - run: | - CIRCLE_BRANCH_CLEAN=$(echo ${CIRCLE_BRANCH} | sed 's/[^a-zA-Z0-9\._-]//g') - if [ -n "${CIRCLE_TAG}" ]; then DOCKER_TAG=${CIRCLE_TAG}; else DOCKER_TAG="${CIRCLE_BRANCH_CLEAN}"; fi - if [ -n "${CIRCLE_TAG}" ]; then VERSION=${CIRCLE_TAG}; else VERSION="${CIRCLE_BRANCH_CLEAN}@${CIRCLE_SHA1:0:6}"; fi - docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 $REGISTRY/$CI_IMAGE:$DOCKER_TAG - docker push $REGISTRY/$CI_IMAGE:$DOCKER_TAG - - run: - name: Docker Save - command: | - docker save $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 | gzip -c > /tmp/workspace/oci_container.tar.gz - - run: - name: BYOE Config - command: | - tar rvf /tmp/workspace/baremetal.tar -C package/etc . - tar rvf /tmp/workspace/baremetal.tar -C package/sbin entrypoint.sh - - - store_test_results: - path: /tmp/test-results/goss.xml - - - persist_to_workspace: - root: /tmp - paths: - - workspace - - test-unit: - docker: - - image: circleci/buildpack-deps:18.04 - environment: - REGISTRY: docker.pkg.github.com - CI_IMAGE: splunk/splunk-connect-for-syslog/ci - steps: - - setup_remote_docker: - docker_layer_caching: true - - checkout - - run: git submodule sync - - run: git submodule update --init --recursive - - #- docker/install-docker-tools - - docker/check: - registry: $REGISTRY - docker-username: GITHUB_USER - docker-password: GITHUB_TOKEN - - run: - name: Setup test volume - command: | - mkdir /tmp/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 test - - run: - name: Docker Compose up - command: | - export IMAGE_NAME=$CIRCLE_PROJECT_REPONAME - docker-compose -f ./docker-compose-ci.yml up -d splunk - sleep 70 - docker-compose -f ./docker-compose-ci.yml 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 /tmp/test-results - docker rm dummy - when: always - - store_test_results: - path: /tmp/test-results - test-scan-synk: - docker: - - image: circleci/buildpack-deps:18.04 - environment: - REGISTRY: docker.pkg.github.com - CI_IMAGE: splunk/splunk-connect-for-syslog/ci - steps: - - setup_remote_docker: - docker_layer_caching: true - - checkout - - run: git submodule sync - - run: git submodule update --init --recursive - - docker/check: - registry: $REGISTRY - docker-username: GITHUB_USER - docker-password: GITHUB_TOKEN - - run: docker pull $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 - - snyk/scan: - docker-image-name: $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 - target-file: package/Dockerfile - project: '${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BRANCH}-container' +shared: &shared + docker: + - image: circleci/buildpack-deps:18.04 + steps: + - setup_remote_docker: + docker_layer_caching: true + - checkout - test-scan-synk-nomonitor: - docker: - - image: circleci/buildpack-deps:18.04 - environment: - REGISTRY: docker.pkg.github.com - CI_IMAGE: splunk/splunk-connect-for-syslog/ci - steps: - - setup_remote_docker: - docker_layer_caching: true - - checkout - - docker/check: - registry: $REGISTRY - docker-username: GITHUB_USER - docker-password: GITHUB_TOKEN - - run: docker pull $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 - - run: git submodule sync - - run: git submodule update --init --recursive - - snyk/scan: - docker-image-name: $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 - target-file: package/Dockerfile - project: '${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BRANCH}-container' - monitor-on-build: false - - publish-branch: - docker: - - image: circleci/buildpack-deps:18.04 - environment: - REGISTRY: docker.pkg.github.com - CI_IMAGE: splunk/splunk-connect-for-syslog/ci - REGISTRY_PUBLIC: docker.pkg.github.com - PUBLIC_IMAGE: splunk/splunk-connect-for-syslog/releases - - steps: - - setup_remote_docker: - docker_layer_caching: true - - checkout - - docker/check: - registry: $REGISTRY - docker-username: GITHUB_USER - docker-password: GITHUB_TOKEN - - run: docker pull $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 - - run: | - CIRCLE_BRANCH_CLEAN=$(echo ${CIRCLE_BRANCH} | sed 's/[^a-zA-Z0-9\._-]//g') - if [ -n "${CIRCLE_TAG}" ]; then DOCKER_TAG=${CIRCLE_TAG}; else DOCKER_TAG="${CIRCLE_BRANCH_CLEAN}"; fi - if [ -n "${CIRCLE_TAG}" ]; then VERSION=${CIRCLE_TAG}; else VERSION="${CIRCLE_BRANCH_CLEAN}@${CIRCLE_SHA1:0:6}"; fi - echo docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 -t $REGISTRY_PUBLIC/$PUBLIC_IMAGE:$DOCKER_TAG - docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 $REGISTRY_PUBLIC/$PUBLIC_IMAGE:$DOCKER_TAG - docker push $REGISTRY_PUBLIC/$PUBLIC_IMAGE:$DOCKER_TAG - - publish-edge: - docker: - - image: circleci/buildpack-deps:18.04 - environment: - REGISTRY: docker.pkg.github.com - CI_IMAGE: splunk/splunk-connect-for-syslog/ci - REGISTRY_PUBLIC: docker.pkg.github.com - PUBLIC_IMAGE: splunk/splunk-connect-for-syslog/releases - steps: - - setup_remote_docker: - docker_layer_caching: true - - checkout - - docker/check: - registry: $REGISTRY - docker-username: GITHUB_USER - docker-password: GITHUB_TOKEN - - run: docker pull $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 - - run: docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 $REGISTRY/$PUBLIC_IMAGE:edge - - docker/push: - registry: $REGISTRY - image: $PUBLIC_IMAGE - tag: edge - - docker/check: - docker-username: DOCKER_USER - docker-password: DOCKER_PASS - - run: docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 splunk/scs:edge - - docker/push: - image: splunk/scs - tag: edge - - go/install - - attach_workspace: - at: /tmp - - run: - name: "Publish edge on GitHub" - command: | - PATH=$PATH:/usr/local/go/bin - go get -v -u github.com/tcnksm/ghr - $HOME/go/bin/ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -prerelease -delete edge /tmp/workspace/ - - store_artifacts: - path: /tmp/workspace/ - - publish-latest: - docker: - - image: circleci/buildpack-deps:18.04 - environment: - REGISTRY: docker.pkg.github.com - CI_IMAGE: splunk/splunk-connect-for-syslog/ci - REGISTRY_PUBLIC: docker.pkg.github.com - PUBLIC_IMAGE: splunk/splunk-connect-for-syslog/releases - - steps: - - setup_remote_docker: - docker_layer_caching: true - - checkout - - docker/check: - registry: $REGISTRY - docker-username: GITHUB_USER - docker-password: GITHUB_TOKEN - - run: docker pull $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 - - run: docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 $REGISTRY/$PUBLIC_IMAGE:latest - - docker/push: - registry: $REGISTRY - image: $PUBLIC_IMAGE - tag: latest - - docker/check: - docker-username: DOCKER_USER - docker-password: DOCKER_PASS - - run: docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 splunk/scs:latest - - docker/push: - image: splunk/scs - tag: latest - - - go/install - - attach_workspace: - at: /tmp - - run: - name: "Publish edge on GitHub" - command: | - PATH=$PATH:/usr/local/go/bin - go get -v -u github.com/tcnksm/ghr - $HOME/go/bin/ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete latest /tmp/workspace/ - - store_artifacts: - path: /tmp/workspace/ - - publish-tag: - docker: - - image: circleci/buildpack-deps:18.04 - environment: - REGISTRY: docker.pkg.github.com - CI_IMAGE: splunk/splunk-connect-for-syslog/ci - REGISTRY_PUBLIC: docker.pkg.github.com - PUBLIC_IMAGE: splunk/splunk-connect-for-syslog/releases - - steps: - - setup_remote_docker: - docker_layer_caching: true - - checkout - - docker/check: - registry: $REGISTRY - docker-username: GITHUB_USER - docker-password: GITHUB_TOKEN - - run: docker pull $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 - - - run: | - CIRCLE_BRANCH_CLEAN=$(echo ${CIRCLE_BRANCH} | sed 's/[^a-zA-Z0-9\._-]//g') - if [ -n "${CIRCLE_TAG}" ]; then DOCKER_TAG=${CIRCLE_TAG}; else DOCKER_TAG="${CIRCLE_BRANCH_CLEAN}"; fi - if [ -n "${CIRCLE_TAG}" ]; then VERSION=${CIRCLE_TAG}; else VERSION="${CIRCLE_BRANCH_CLEAN}@${CIRCLE_SHA1:0:6}"; fi - docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 $REGISTRY/$PUBLIC_IMAGE:$DOCKER_TAG - docker push $REGISTRY/$PUBLIC_IMAGE:$DOCKER_TAG - - docker/check: - docker-username: DOCKER_USER - docker-password: DOCKER_PASS - - run: | - CIRCLE_BRANCH_CLEAN=$(echo ${CIRCLE_BRANCH} | sed 's/[^a-zA-Z0-9\._-]//g') - if [ -n "${CIRCLE_TAG}" ]; then DOCKER_TAG=${CIRCLE_TAG}; else DOCKER_TAG="${CIRCLE_BRANCH_CLEAN}"; fi - if [ -n "${CIRCLE_TAG}" ]; then VERSION=${CIRCLE_TAG}; else VERSION="${CIRCLE_BRANCH_CLEAN}@${CIRCLE_SHA1:0:6}"; fi - docker tag $REGISTRY/$CI_IMAGE:$CIRCLE_SHA1 splunk/scs:$DOCKER_TAG - docker push splunk/scs:$DOCKER_TAG - - - go/install - - attach_workspace: - at: /tmp - - run: - name: "Publish edge on GitHub" - command: | - PATH=$PATH:/usr/local/go/bin - go get -v -u github.com/tcnksm/ghr - CIRCLE_BRANCH_CLEAN=$(echo ${CIRCLE_BRANCH} | sed 's/[^a-zA-Z0-9\._-]//g') - if [ -n "${CIRCLE_TAG}" ]; then DOCKER_TAG=${CIRCLE_TAG}; else DOCKER_TAG="${CIRCLE_BRANCH_CLEAN}"; fi - if [ -n "${CIRCLE_TAG}" ]; then VERSION=${CIRCLE_TAG}; else VERSION="${CIRCLE_BRANCH_CLEAN}@${CIRCLE_SHA1:0:6}"; fi - $HOME/go/bin/ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete $VERSION /tmp/workspace/ - - store_artifacts: - path: /tmp/workspace/ +jobs: + build: + <<: *shared -workflows: - version: 2 - build-branches: - jobs: - - build - - test-unit: - requires: - - build - - test-scan-synk: - requires: - - build - filters: - branches: - only: - - master - - test-scan-synk-nomonitor: - requires: - - build - filters: - branches: - ignore: - - master - - publish-branch: - requires: - - build - - publish-edge: - requires: - - build - - test-unit - filters: - branches: - only: - - develop - - publish-latest: - requires: - - build - - test-unit - filters: - branches: - only: - - master - build-tags: - jobs: - - build: - filters: - tags: - only: /^\d*\.\d*\.\d*.*$/ - branches: - ignore: /.*/ - - test-unit: - filters: - tags: - only: /^\d*\.\d*\.\d*.*$/ - branches: - ignore: /.*/ - requires: - - build - - test-scan-synk: - filters: - tags: - only: /^\d*\.\d*\.\d*.*$/ - branches: - ignore: /.*/ - requires: - - build - - publish-tag: - requires: - - build - - test-unit - #- test-scan-synk - filters: - tags: - only: /^\d*\.\d*\.\d*.*$/ - branches: - ignore: /.*/ diff --git a/.github/workflows/test_matrix.yml b/.github/workflows/test_matrix.yml index b15309c..2ffcbb1 100644 --- a/.github/workflows/test_matrix.yml +++ b/.github/workflows/test_matrix.yml @@ -25,18 +25,6 @@ jobs: -t docker.pkg.github.com/${GITHUB_REPOSITORY}/stg-splunk-connect-for-syslog:sc4s-${{ matrix.syslog-version }}-${{ github.sha }} - name: Push stg-splunk-connect-for-syslog:sc4s-${{ matrix.syslog-version }}-${{ github.sha }} run: docker push docker.pkg.github.com/${GITHUB_REPOSITORY}/stg-splunk-connect-for-syslog:sc4s-${{ matrix.syslog-version }}-${{ github.sha }} - - uses: azure/docker-login@v1 - with: - login-server: index.docker.io - username: ${{ secrets.DOCKER_HUB_USER }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - name: Tag rfaircloth/stg-sc4s:sc4s-${{ matrix.syslog-version }}-${{ github.sha }} - run: | - docker tag docker.pkg.github.com/${GITHUB_REPOSITORY}/stg-splunk-connect-for-syslog:sc4s-${{ matrix.syslog-version }}-${{ github.sha }} \ - rfaircloth/stg-sc4s:sc4s-${{ matrix.syslog-version }}-${{ github.sha }} - - name: push ${{ secrets.DOCKER_HUB_USER }}/stg-sc4s:sc4s-${{ matrix.syslog-version }}-${{ github.sha }} - run: | - docker push ${{ secrets.DOCKER_HUB_USER }}/stg-sc4s:sc4s-${{ matrix.syslog-version }}-${{ github.sha }} build-splunk: