From ef1b1ceef3d1cb3c4efa285db01df5eb45899157 Mon Sep 17 00:00:00 2001 From: swysor Date: Wed, 2 Oct 2019 21:18:11 +0000 Subject: [PATCH] [master] adding shipyard files and updating circle files (#6068) - updated circle.yml file to work with builder - initial shipyard files - default summary and description from current - adjusted dependencies to metapackage - updated license - Update Shipyard config files - Updates descriptions, vendor, and URLs for 2600Hz- and community-maintained KAZOO applications - updated circle files - updated core in shipyard configs - add yml to changed listing --- Makefile | 2 + applications/acdc/.circleci/config.yml | 450 ++++++++++++++---- applications/acdc/.shipyard.yml | 21 + applications/ananke/.circleci/config.yml | 450 ++++++++++++++---- applications/ananke/.shipyard.yml | 23 + applications/blackhole/.circleci/config.yml | 450 ++++++++++++++---- applications/blackhole/.shipyard.yml | 22 + applications/braintree/.circleci/config.yml | 450 ++++++++++++++---- applications/braintree/.shipyard.yml | 21 + .../call_inspector/.circleci/config.yml | 450 ++++++++++++++---- applications/call_inspector/.shipyard.yml | 21 + applications/callflow/.circleci/config.yml | 450 ++++++++++++++---- applications/callflow/.shipyard.yml | 21 + applications/camper/.circleci/config.yml | 450 ++++++++++++++---- applications/camper/.shipyard.yml | 22 + applications/cccp/.circleci/config.yml | 450 ++++++++++++++---- applications/cccp/.shipyard.yml | 21 + applications/cdr/.circleci/config.yml | 450 ++++++++++++++---- applications/cdr/.shipyard.yml | 22 + applications/conference/.circleci/config.yml | 450 ++++++++++++++---- applications/conference/.shipyard.yml | 21 + applications/crossbar/.circleci/config.yml | 450 ++++++++++++++---- applications/crossbar/.shipyard.yml | 21 + applications/doodle/.circleci/config.yml | 450 ++++++++++++++---- applications/doodle/.shipyard.yml | 21 + applications/ecallmgr/.circleci/config.yml | 450 ++++++++++++++---- applications/ecallmgr/.shipyard.yml | 23 + applications/edr/.circleci/config.yml | 450 ++++++++++++++---- applications/edr/.shipyard.yml | 21 + applications/fax/.circleci/config.yml | 450 ++++++++++++++---- applications/fax/.shipyard.yml | 22 + applications/frontier/.circleci/config.yml | 450 ++++++++++++++---- applications/frontier/.shipyard.yml | 21 + applications/hangups/.circleci/config.yml | 450 ++++++++++++++---- applications/hangups/.shipyard.yml | 22 + applications/hotornot/.circleci/config.yml | 450 ++++++++++++++---- applications/hotornot/.shipyard.yml | 21 + applications/jonny5/.circleci/config.yml | 450 ++++++++++++++---- applications/jonny5/.shipyard.yml | 21 + applications/konami/.circleci/config.yml | 450 ++++++++++++++---- applications/konami/.shipyard.yml | 21 + applications/media_mgr/.circleci/config.yml | 450 ++++++++++++++---- applications/media_mgr/.shipyard.yml | 23 + applications/milliwatt/.circleci/config.yml | 450 ++++++++++++++---- applications/milliwatt/.shipyard.yml | 21 + applications/notify/.circleci/config.yml | 450 ++++++++++++++---- applications/notify/.shipyard.yml | 22 + .../omnipresence/.circleci/config.yml | 450 ++++++++++++++---- applications/omnipresence/.shipyard.yml | 22 + applications/pivot/.circleci/config.yml | 450 ++++++++++++++---- applications/pivot/.shipyard.yml | 22 + applications/pusher/.circleci/config.yml | 450 ++++++++++++++---- applications/pusher/.shipyard.yml | 21 + applications/registrar/.circleci/config.yml | 450 ++++++++++++++---- applications/registrar/.shipyard.yml | 21 + applications/reorder/.circleci/config.yml | 450 ++++++++++++++---- applications/reorder/.shipyard.yml | 22 + applications/skel/.circleci/config.yml | 450 ++++++++++++++---- applications/spyvsspy/.circleci/config.yml | 450 ++++++++++++++---- applications/spyvsspy/.shipyard.yml | 21 + applications/stats/.circleci/config.yml | 450 ++++++++++++++---- applications/stats/.shipyard.yml | 21 + applications/stepswitch/.circleci/config.yml | 450 ++++++++++++++---- applications/stepswitch/.shipyard.yml | 21 + applications/sysconf/.circleci/config.yml | 450 ++++++++++++++---- applications/sysconf/.shipyard.yml | 21 + applications/tasks/.circleci/config.yml | 450 ++++++++++++++---- applications/tasks/.shipyard.yml | 21 + applications/teletype/.circleci/config.yml | 450 ++++++++++++++---- applications/teletype/.shipyard.yml | 22 + applications/trunkstore/.circleci/config.yml | 450 ++++++++++++++---- applications/trunkstore/.shipyard.yml | 21 + applications/webhooks/.circleci/config.yml | 450 ++++++++++++++---- applications/webhooks/.shipyard.yml | 21 + doc/engineering/shipyard.md | 11 + doc/mkdocs/mkdocs.yml | 1 + 76 files changed, 14217 insertions(+), 3219 deletions(-) create mode 100644 applications/acdc/.shipyard.yml create mode 100644 applications/ananke/.shipyard.yml create mode 100644 applications/blackhole/.shipyard.yml create mode 100644 applications/braintree/.shipyard.yml create mode 100644 applications/call_inspector/.shipyard.yml create mode 100644 applications/callflow/.shipyard.yml create mode 100644 applications/camper/.shipyard.yml create mode 100644 applications/cccp/.shipyard.yml create mode 100644 applications/cdr/.shipyard.yml create mode 100644 applications/conference/.shipyard.yml create mode 100644 applications/crossbar/.shipyard.yml create mode 100644 applications/doodle/.shipyard.yml create mode 100644 applications/ecallmgr/.shipyard.yml create mode 100644 applications/edr/.shipyard.yml create mode 100644 applications/fax/.shipyard.yml create mode 100644 applications/frontier/.shipyard.yml create mode 100644 applications/hangups/.shipyard.yml create mode 100644 applications/hotornot/.shipyard.yml create mode 100644 applications/jonny5/.shipyard.yml create mode 100644 applications/konami/.shipyard.yml create mode 100644 applications/media_mgr/.shipyard.yml create mode 100644 applications/milliwatt/.shipyard.yml create mode 100644 applications/notify/.shipyard.yml create mode 100644 applications/omnipresence/.shipyard.yml create mode 100644 applications/pivot/.shipyard.yml create mode 100644 applications/pusher/.shipyard.yml create mode 100644 applications/registrar/.shipyard.yml create mode 100644 applications/reorder/.shipyard.yml create mode 100644 applications/spyvsspy/.shipyard.yml create mode 100644 applications/stats/.shipyard.yml create mode 100644 applications/stepswitch/.shipyard.yml create mode 100644 applications/sysconf/.shipyard.yml create mode 100644 applications/tasks/.shipyard.yml create mode 100644 applications/teletype/.shipyard.yml create mode 100644 applications/trunkstore/.shipyard.yml create mode 100644 applications/webhooks/.shipyard.yml create mode 100644 doc/engineering/shipyard.md diff --git a/Makefile b/Makefile index 2b6f0e3d301..796bcc68678 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,7 @@ endif CHANGED_SWAGGER ?= $(shell git --no-pager diff --name-only HEAD $(BASE_BRANCH) -- applications/crossbar/priv/api/swagger.json) CHANGED_ERL=$(filter %.hrl %.erl %.escript,$(CHANGED)) CHANGED_JSON=$(filter %.json,$(CHANGED)) +CHANGED_YML=$(filter %.yml,$(CHANGED)) # You can override this when calling make, e.g. make JOBS=1 # to prevent parallel builds, or make JOBS="8". @@ -55,6 +56,7 @@ changed: @echo "changed: $(CHANGED)" @echo "changed ERL: $(CHANGED_ERL)" @echo "changed JSON: $(CHANGED_JSON)" + @echo "changed YML: $(CHANGED_YML)" changed_swagger: @echo "$(CHANGED_SWAGGER)" diff --git a/applications/acdc/.circleci/config.yml b/applications/acdc/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/acdc/.circleci/config.yml +++ b/applications/acdc/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/acdc/.shipyard.yml b/applications/acdc/.shipyard.yml new file mode 100644 index 00000000000..a0f894c52c0 --- /dev/null +++ b/applications/acdc/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-acdc +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-acdc +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-acdc + summary: Automatic Call Distributor commander + description: | + ACDc is a community-supported call queue application. + app_name: acdc + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-acdc + vendor: Kazoo-Community diff --git a/applications/ananke/.circleci/config.yml b/applications/ananke/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/ananke/.circleci/config.yml +++ b/applications/ananke/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/ananke/.shipyard.yml b/applications/ananke/.shipyard.yml new file mode 100644 index 00000000000..ba3938f779e --- /dev/null +++ b/applications/ananke/.shipyard.yml @@ -0,0 +1,23 @@ +--- +name: kazoo-application-ananke +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-ananke +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-ananke + summary: Kazoo core application + description: | + Ananke was the personification of destiny, necessity and fate, depicted as + holding a spindle in ancient Greek religion. This application to schedule + calls on events. + app_name: ananke + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-ananke + vendor: Kazoo-Community diff --git a/applications/blackhole/.circleci/config.yml b/applications/blackhole/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/blackhole/.circleci/config.yml +++ b/applications/blackhole/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/blackhole/.shipyard.yml b/applications/blackhole/.shipyard.yml new file mode 100644 index 00000000000..3c34a29a1c3 --- /dev/null +++ b/applications/blackhole/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-blackhole +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-blackhole +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-blackhole + summary: Kazoo core application + description: | + Provides a websocket connection point to stream events out of KAZOO to + your application + app_name: blackhole + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/braintree/.circleci/config.yml b/applications/braintree/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/braintree/.circleci/config.yml +++ b/applications/braintree/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/braintree/.shipyard.yml b/applications/braintree/.shipyard.yml new file mode 100644 index 00000000000..5f4471a0799 --- /dev/null +++ b/applications/braintree/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-braintree +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-braintree +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-braintree + summary: Kazoo core application + description: | + Integration with the Braintree platform + app_name: braintree + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/call_inspector/.circleci/config.yml b/applications/call_inspector/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/call_inspector/.circleci/config.yml +++ b/applications/call_inspector/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/call_inspector/.shipyard.yml b/applications/call_inspector/.shipyard.yml new file mode 100644 index 00000000000..bb5c773a57a --- /dev/null +++ b/applications/call_inspector/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-call_inspector +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-call_inspector +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-call_inspector + summary: Kazoo core application + description: | + An inspectortron application useful for quickly troubleshooting issues + app_name: call_inspector + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/callflow/.circleci/config.yml b/applications/callflow/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/callflow/.circleci/config.yml +++ b/applications/callflow/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/callflow/.shipyard.yml b/applications/callflow/.shipyard.yml new file mode 100644 index 00000000000..2be7f5a00e2 --- /dev/null +++ b/applications/callflow/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-callflow +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-callflow +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-callflow + summary: Kazoo core application + description: | + Executes the KAZOO Callflow JSON tree on calls + app_name: callflow + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/camper/.circleci/config.yml b/applications/camper/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/camper/.circleci/config.yml +++ b/applications/camper/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/camper/.shipyard.yml b/applications/camper/.shipyard.yml new file mode 100644 index 00000000000..4cabc7eb1f5 --- /dev/null +++ b/applications/camper/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-camper +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-camper +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-camper + summary: Kazoo core application + description: | + Provides camping facilities for callers to wait for busy callees to become + available. + app_name: camper + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-camper + vendor: Kazoo-Community diff --git a/applications/cccp/.circleci/config.yml b/applications/cccp/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/cccp/.circleci/config.yml +++ b/applications/cccp/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/cccp/.shipyard.yml b/applications/cccp/.shipyard.yml new file mode 100644 index 00000000000..889c3f4008b --- /dev/null +++ b/applications/cccp/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-cccp +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-cccp +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-cccp + summary: Kazoo core application + description: | + Calling card functionality + app_name: cccp + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-cccp + vendor: Kazoo-Community diff --git a/applications/cdr/.circleci/config.yml b/applications/cdr/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/cdr/.circleci/config.yml +++ b/applications/cdr/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/cdr/.shipyard.yml b/applications/cdr/.shipyard.yml new file mode 100644 index 00000000000..4f58ade3fd2 --- /dev/null +++ b/applications/cdr/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-cdr +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-cdr +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-cdr + summary: Kazoo core application + description: | + Responsible for receving CDR events off the AMQP bus and inserting the CDR + into the database (after some data munging). + app_name: cdr + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/conference/.circleci/config.yml b/applications/conference/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/conference/.circleci/config.yml +++ b/applications/conference/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/conference/.shipyard.yml b/applications/conference/.shipyard.yml new file mode 100644 index 00000000000..234f084555d --- /dev/null +++ b/applications/conference/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-conference +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-conference +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-conference + summary: Kazoo core application + description: | + Provides conference and participant tracking. + app_name: conference + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/crossbar/.circleci/config.yml b/applications/crossbar/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/crossbar/.circleci/config.yml +++ b/applications/crossbar/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/crossbar/.shipyard.yml b/applications/crossbar/.shipyard.yml new file mode 100644 index 00000000000..6918b9c984b --- /dev/null +++ b/applications/crossbar/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-crossbar +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-crossbar +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-crossbar + summary: Kazoo core application + description: | + KAZOO REST API server + app_name: crossbar + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/doodle/.circleci/config.yml b/applications/doodle/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/doodle/.circleci/config.yml +++ b/applications/doodle/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/doodle/.shipyard.yml b/applications/doodle/.shipyard.yml new file mode 100644 index 00000000000..26435678ac0 --- /dev/null +++ b/applications/doodle/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-doodle +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-doodle +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-doodle + summary: Kazoo core application + description: | + Provides SMS routing capabilities (similar to callflows for calls) + app_name: doodle + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/ecallmgr/.circleci/config.yml b/applications/ecallmgr/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/ecallmgr/.circleci/config.yml +++ b/applications/ecallmgr/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/ecallmgr/.shipyard.yml b/applications/ecallmgr/.shipyard.yml new file mode 100644 index 00000000000..103b0bf80f9 --- /dev/null +++ b/applications/ecallmgr/.shipyard.yml @@ -0,0 +1,23 @@ +--- +name: kazoo-application-ecallmgr +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-ecallmgr +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-ecallmgr + summary: Kazoo core application + description: | + KAZOO interface to FreeSWITCH, providing the clustering logic over + FreeSWITCH to present a single logical switch to the higher levels + of KAZOO. + app_name: ecallmgr + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/edr/.circleci/config.yml b/applications/edr/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/edr/.circleci/config.yml +++ b/applications/edr/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/edr/.shipyard.yml b/applications/edr/.shipyard.yml new file mode 100644 index 00000000000..0704a13f1df --- /dev/null +++ b/applications/edr/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-edr +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-edr +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-edr + summary: Kazoo core application + description: | + Event Data Record application + app_name: edr + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-edr + vendor: Kazoo-Community diff --git a/applications/fax/.circleci/config.yml b/applications/fax/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/fax/.circleci/config.yml +++ b/applications/fax/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/fax/.shipyard.yml b/applications/fax/.shipyard.yml new file mode 100644 index 00000000000..61e0a7b9067 --- /dev/null +++ b/applications/fax/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-fax +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-fax +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-fax + summary: Kazoo core application + description: | + Provides fax-related functionality such as receiving faxes, scheduling + (and retrying) sending faxes, and providing email->fax services. + app_name: fax + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/frontier/.circleci/config.yml b/applications/frontier/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/frontier/.circleci/config.yml +++ b/applications/frontier/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/frontier/.shipyard.yml b/applications/frontier/.shipyard.yml new file mode 100644 index 00000000000..e76892e4d38 --- /dev/null +++ b/applications/frontier/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-frontier +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-frontier +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-frontier + summary: Kazoo core application + description: | + An application that provide acl/ratelimit info to kamailio + app_name: frontier + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-frontier + vendor: Kazoo-Community diff --git a/applications/hangups/.circleci/config.yml b/applications/hangups/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/hangups/.circleci/config.yml +++ b/applications/hangups/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/hangups/.shipyard.yml b/applications/hangups/.shipyard.yml new file mode 100644 index 00000000000..2827ca029a2 --- /dev/null +++ b/applications/hangups/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-hangups +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-hangups +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-hangups + summary: Kazoo core application + description: | + Tracks hangup causes and provides alerting capabilities if specified + hangup causes exceed a threshold + app_name: hangups + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/hotornot/.circleci/config.yml b/applications/hotornot/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/hotornot/.circleci/config.yml +++ b/applications/hotornot/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/hotornot/.shipyard.yml b/applications/hotornot/.shipyard.yml new file mode 100644 index 00000000000..a42d98eb84e --- /dev/null +++ b/applications/hotornot/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-hotornot +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-hotornot +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-hotornot + summary: Kazoo core application + description: | + Provides ratedeck management and rating of calls + app_name: hotornot + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/jonny5/.circleci/config.yml b/applications/jonny5/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/jonny5/.circleci/config.yml +++ b/applications/jonny5/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/jonny5/.shipyard.yml b/applications/jonny5/.shipyard.yml new file mode 100644 index 00000000000..d9b8abefed9 --- /dev/null +++ b/applications/jonny5/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-jonny5 +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-jonny5 +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-jonny5 + summary: Kazoo core application + description: | + Provides account call limit tracking and authorization services + app_name: jonny5 + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/konami/.circleci/config.yml b/applications/konami/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/konami/.circleci/config.yml +++ b/applications/konami/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/konami/.shipyard.yml b/applications/konami/.shipyard.yml new file mode 100644 index 00000000000..fc0903ad5ea --- /dev/null +++ b/applications/konami/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-konami +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-konami +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-konami + summary: Kazoo core application + description: | + Listens on configured calls for DTMF sequences to trigger metaflows + app_name: konami + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-konami + vendor: Kazoo-Community diff --git a/applications/media_mgr/.circleci/config.yml b/applications/media_mgr/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/media_mgr/.circleci/config.yml +++ b/applications/media_mgr/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/media_mgr/.shipyard.yml b/applications/media_mgr/.shipyard.yml new file mode 100644 index 00000000000..a2719f7a985 --- /dev/null +++ b/applications/media_mgr/.shipyard.yml @@ -0,0 +1,23 @@ +--- +name: kazoo-application-media_mgr +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-media_mgr +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-media_mgr + summary: Kazoo core application + description: | + Provides media services such as converting media paths (such as + /{ACCOUNT_ID}/{MEDIA_ID}) into a HTTP URL for FreeSWITCH to use + for streaming. + app_name: media_mgr + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/milliwatt/.circleci/config.yml b/applications/milliwatt/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/milliwatt/.circleci/config.yml +++ b/applications/milliwatt/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/milliwatt/.shipyard.yml b/applications/milliwatt/.shipyard.yml new file mode 100644 index 00000000000..febd0fad3fc --- /dev/null +++ b/applications/milliwatt/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-milliwatt +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-milliwatt +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-milliwatt + summary: Kazoo core application + description: | + Provides some basic call testing - echo and tone tests + app_name: milliwatt + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/notify/.circleci/config.yml b/applications/notify/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/notify/.circleci/config.yml +++ b/applications/notify/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/notify/.shipyard.yml b/applications/notify/.shipyard.yml new file mode 100644 index 00000000000..f003673d375 --- /dev/null +++ b/applications/notify/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-notify +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-notify +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-notify + summary: Kazoo core application + description: | + DEPRECATED! Provides notification services (emails when notifications are + triggered) and branding capabilities + app_name: notify + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-notify + vendor: Kazoo-Community diff --git a/applications/omnipresence/.circleci/config.yml b/applications/omnipresence/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/omnipresence/.circleci/config.yml +++ b/applications/omnipresence/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/omnipresence/.shipyard.yml b/applications/omnipresence/.shipyard.yml new file mode 100644 index 00000000000..d0ff458620a --- /dev/null +++ b/applications/omnipresence/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-omnipresence +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-omnipresence +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-omnipresence + summary: Kazoo core application + description: | + Provides presence-related functionality - tracking subscriptions and API + services + app_name: omnipresence + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/pivot/.circleci/config.yml b/applications/pivot/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/pivot/.circleci/config.yml +++ b/applications/pivot/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/pivot/.shipyard.yml b/applications/pivot/.shipyard.yml new file mode 100644 index 00000000000..5e83eef6783 --- /dev/null +++ b/applications/pivot/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-pivot +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-pivot +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-pivot + summary: Kazoo core application + description: | + Provides capabilities for developers to control what callflow is run + dynamically, on a per-call basis. + app_name: pivot + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/pusher/.circleci/config.yml b/applications/pusher/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/pusher/.circleci/config.yml +++ b/applications/pusher/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/pusher/.shipyard.yml b/applications/pusher/.shipyard.yml new file mode 100644 index 00000000000..c2c89acd536 --- /dev/null +++ b/applications/pusher/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-pusher +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-pusher +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-pusher + summary: Kazoo core application + description: | + Push notifications to Google and Apple devices + app_name: pusher + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/registrar/.circleci/config.yml b/applications/registrar/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/registrar/.circleci/config.yml +++ b/applications/registrar/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/registrar/.shipyard.yml b/applications/registrar/.shipyard.yml new file mode 100644 index 00000000000..5116e208139 --- /dev/null +++ b/applications/registrar/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-registrar +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-registrar +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-registrar + summary: Kazoo core application + description: | + Provides registration and authentication services. + app_name: registrar + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/reorder/.circleci/config.yml b/applications/reorder/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/reorder/.circleci/config.yml +++ b/applications/reorder/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/reorder/.shipyard.yml b/applications/reorder/.shipyard.yml new file mode 100644 index 00000000000..3dc2b250786 --- /dev/null +++ b/applications/reorder/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-reorder +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-reorder +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-reorder + summary: Kazoo core application + description: | + Provides capabilities for handling numbers unassigned to accounts or + callflows + app_name: reorder + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/skel/.circleci/config.yml b/applications/skel/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/skel/.circleci/config.yml +++ b/applications/skel/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/spyvsspy/.circleci/config.yml b/applications/spyvsspy/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/spyvsspy/.circleci/config.yml +++ b/applications/spyvsspy/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/spyvsspy/.shipyard.yml b/applications/spyvsspy/.shipyard.yml new file mode 100644 index 00000000000..da9141f1f3a --- /dev/null +++ b/applications/spyvsspy/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-spyvsspy +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-spyvsspy +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-spyvsspy + summary: Kazoo core application + description: | + Provides eavesdrop/whisper/barge capabilities for ACDc + app_name: spyvsspy + license: MPL 2.0 + group: Productivity/Telephony + url: https://github.com/kazoo-community/kazoo-spyvsspy + vendor: Kazoo-Community diff --git a/applications/stats/.circleci/config.yml b/applications/stats/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/stats/.circleci/config.yml +++ b/applications/stats/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/stats/.shipyard.yml b/applications/stats/.shipyard.yml new file mode 100644 index 00000000000..dbd17c9ea71 --- /dev/null +++ b/applications/stats/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-stats +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: related + branch: master + package: kazoo-application-stats +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-stats + summary: Kazoo core application + description: | + Provides statistical snapshots of KAZOO and the Erlang VM + app_name: stats + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/stepswitch/.circleci/config.yml b/applications/stepswitch/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/stepswitch/.circleci/config.yml +++ b/applications/stepswitch/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/stepswitch/.shipyard.yml b/applications/stepswitch/.shipyard.yml new file mode 100644 index 00000000000..023d89cee76 --- /dev/null +++ b/applications/stepswitch/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-stepswitch +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-stepswitch +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-stepswitch + summary: Kazoo core application + description: | + Provides carrier management and selection for upstream routing + app_name: stepswitch + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/sysconf/.circleci/config.yml b/applications/sysconf/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/sysconf/.circleci/config.yml +++ b/applications/sysconf/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/sysconf/.shipyard.yml b/applications/sysconf/.shipyard.yml new file mode 100644 index 00000000000..b60b28e2872 --- /dev/null +++ b/applications/sysconf/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-sysconf +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-sysconf +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-sysconf + summary: Kazoo core application + description: | + Provides AMQP-accessible interface to system configuration data + app_name: sysconf + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/tasks/.circleci/config.yml b/applications/tasks/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/tasks/.circleci/config.yml +++ b/applications/tasks/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/tasks/.shipyard.yml b/applications/tasks/.shipyard.yml new file mode 100644 index 00000000000..03f089e98a3 --- /dev/null +++ b/applications/tasks/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-tasks +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-tasks +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-tasks + summary: Kazoo core application + description: | + Provides various interactive and background tasks to run within KAZOO + app_name: tasks + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/teletype/.circleci/config.yml b/applications/teletype/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/teletype/.circleci/config.yml +++ b/applications/teletype/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/teletype/.shipyard.yml b/applications/teletype/.shipyard.yml new file mode 100644 index 00000000000..59ce16f8247 --- /dev/null +++ b/applications/teletype/.shipyard.yml @@ -0,0 +1,22 @@ +--- +name: kazoo-application-teletype +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-teletype +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-teletype + summary: Kazoo core application + description: | + Provides email notification and branding services for receiving emails + about events within KAZOO + app_name: teletype + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/trunkstore/.circleci/config.yml b/applications/trunkstore/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/trunkstore/.circleci/config.yml +++ b/applications/trunkstore/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/trunkstore/.shipyard.yml b/applications/trunkstore/.shipyard.yml new file mode 100644 index 00000000000..6d1e7f7c10a --- /dev/null +++ b/applications/trunkstore/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-trunkstore +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-trunkstore +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-trunkstore + summary: Kazoo core application + description: | + Provides SIP trunking services + app_name: trunkstore + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/applications/webhooks/.circleci/config.yml b/applications/webhooks/.circleci/config.yml index 67b63f82fea..e2bc33a029e 100644 --- a/applications/webhooks/.circleci/config.yml +++ b/applications/webhooks/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 workflows: version: 2 - build-analyze-run: + build-branch: jobs: - setup - build_deps: @@ -26,6 +26,94 @@ workflows: - release: requires: - build + - build_centos7: + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release + + build_release: + jobs: + - setup: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - build_deps: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - setup + - build: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - eunit_tests: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build_deps + - checks: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - docs: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - analyze: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - release: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_centos7: + filters: + tags: + only: /^\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + requires: + - build + - build_deps + - eunit_tests + - checks + - docs + - analyze + - release defaults: &defaults docker: @@ -38,48 +126,58 @@ defaults: &defaults BASH_ENV: "/home/circleci/2600hz/.bashrc" jobs: - - # setup build environment sequence setup: <<: *defaults steps: - checkout - # setup enviroment variable - - run: | - BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" - if [ -n "$BAZE" ]; then - echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV - else - echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" - exit 1 - fi - - run: | - APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} - APP=${APP_DASH/-/_} - echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV - echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV - echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV - - run: | - echo ":: behold, running ci tests for application: $KAZOO_APP" - echo "KAZOO_ROOT: $KAZOO_ROOT" - echo "APP_PATH: $APP_PATH" - echo "BASE_BRANCH: $BASE_BRANCH" - - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS - - # setup kazoo source code - - run: | - if [ ! -d ${KAZOO_ROOT} ]; then - git clone https://github.com/2600hz/kazoo $KAZOO_ROOT - fi - - run: ${KAZOO_ROOT}/scripts/circleci.bash - - run: echo -e 'export CHANGED="$(echo $(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo))"' >> $BASH_ENV - - run: echo "$CHANGED" + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Exporting build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Creating artifacts directory + command: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + - run: + name: Cloning core repository + command : | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - run: + name: Generating change list for application + command: echo -e 'export CHANGED="$(for file in `find ${KAZOO_ROOT}/applications/${KAZOO_APP} -name "*.[e|h]rl"`; do readlink -e $file; done | xargs echo)"' >> $BASH_ENV + - run: + name: Displaying changed files + command: echo $CHANGED - persist_to_workspace: root: ~/ paths: - 2600hz - # build deps sequence build_deps: <<: *defaults steps: @@ -87,19 +185,22 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) - if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then - touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" - fi - - run: echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: make -C ${KAZOO_ROOT} deps + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Calculating dependency hash + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Making deps + command: make -C ${KAZOO_ROOT} deps - save_cache: - key: deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/deps/ - ~/2600hz/kazoo/.git/.kz_deps_hash @@ -108,7 +209,6 @@ jobs: paths: - 2600hz - # build sequence build: <<: *defaults steps: @@ -116,17 +216,17 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - run: | md5sum $KAZOO_ROOT/make/deps.mk || true ls -al $KAZOO_ROOT/make || true + - run: make -C ${KAZOO_ROOT} fmt - run: JOBS="2" make -C ${KAZOO_ROOT} - persist_to_workspace: root: ~/ paths: - 2600hz - # eunit_tests sequence eunit_tests: <<: *defaults steps: @@ -134,40 +234,76 @@ jobs: at: ~/ - restore_cache: keys: - - deps-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: | - md5sum $KAZOO_ROOT/make/deps.mk || true - ls -al $KAZOO_ROOT/make || true - - run: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test - - run: make -C "$KAZOO_ROOT/$APP_PATH" eunit + - deps-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Displaying deps hash + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + - run: + name: Compiling for unit test environment + command: ERLC_OPTS='-DPROPER' make -C ${KAZOO_ROOT}/core compile-test + - run: + name: Running Eunit tests + command: make -C "$KAZOO_ROOT/$APP_PATH" eunit - # code checks sequence checks: <<: *defaults steps: - attach_workspace: at: ~/ - - run: TO_FMT="$CHANGED" make -C ${KAZOO_ROOT} fmt - - run: make -C ${KAZOO_ROOT} code_checks - - run: make -C ${KAZOO_ROOT} app_applications - - run: make -C ${KAZOO_ROOT} sup_completion - - run: make -C ${KAZOO_ROOT} xref - - run: make -C ${KAZOO_ROOT} elvis + - run: + name: Running code formatter + command: make -C ${KAZOO_ROOT} fmt + - run: + name: Running code checks + command: make -C ${KAZOO_ROOT} code_checks + - run: + name: Running additional code style checks + command: ${KAZOO_ROOT}/scripts/code_checks.bash $CHANGED + - run: + name: Checking app source file + command: make -C ${KAZOO_ROOT} app_applications + - run: + name: Generating sup bash completion file + command: make -C ${KAZOO_ROOT} sup_completion + - run: + name: Running xref check + command: make -C ${KAZOO_ROOT} xref + - run: + name: Running Elvis code style check + command: make -C ${KAZOO_ROOT} elvis + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # docs sequence docs: <<: *defaults steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} apis - - run: make -C ${KAZOO_ROOT} validate-js - - run: make -C ${KAZOO_ROOT} validate-schemas - - run: make -C ${KAZOO_ROOT} docs || true - - run: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true - - run: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Generating APIs + command: make -C ${KAZOO_ROOT} apis + - run: + name: Validating CouchDB view files + command: make -C ${KAZOO_ROOT} validate-js + - run: + name: Validating schemas + command: make -C ${KAZOO_ROOT} validate-schemas + - run: + name: Generating docs + command: make -C ${KAZOO_ROOT} docs || true + - run: + name: Checking doc states + command: ${KAZOO_ROOT}/scripts/state-of-docs.sh || true + - run: + name: Validating EDoc states + command: ${KAZOO_ROOT}/scripts/state-of-edoc.escript + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash - # analyze sequence analyze: <<: *defaults steps: @@ -175,33 +311,173 @@ jobs: at: ~/ - restore_cache: keys: - - plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} - - run: TO_DIALYZE="$CHANGED" make -C ${KAZOO_ROOT} build-plt dialyze + - plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Dailyzing changed Erlang files + command: TO_DIALYZE="$(echo $CHANGED)" make -C ${KAZOO_ROOT} build-plt dialyze - save_cache: - key: plt-erl21-v1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + key: plt-21-v3.1-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} paths: - ~/2600hz/kazoo/.kazoo.plt - # release sequence release: <<: *defaults docker: - image: offical2600hz/circleci:21.3.8 - - image: couchdb:2.1.1 - - image: rabbitmq:3.7 + - image: couchdb:2.3.1 + - image: 2600hz/rabbitmq steps: - attach_workspace: at: ~/ - - run: make -C ${KAZOO_ROOT} build-ci-release - - run: ${KAZOO_ROOT}/scripts/check-unstaged.bash - - run: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release - - run: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ - - - run: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; + - run: + name: Building CI release + command: make -C ${KAZOO_ROOT} build-ci-release + - run: + name: Checking for unstaged files + command: ${KAZOO_ROOT}/scripts/check-unstaged.bash + - run: + name: Running Kazoo release + command: KAZOO_CONFIG=${KAZOO_ROOT}/rel/ci.config.ini REL="kazoo_apps" ACT="console" NODE_NAME_TYPE="-sname" make -C ${KAZOO_ROOT} release + - run: + name: Copying Relx config artifacts + command: cp ${KAZOO_ROOT}/rel/ci.relx.config $CIRCLE_ARTIFACTS/ + - run: + name: Copying release artifacts + command: find ${KAZOO_ROOT}/_rel/kazoo/releases -name kazoo.rel -exec cp {} $CIRCLE_ARTIFACTS/ \; - store_artifacts: path: /tmp/circleci-artifacts - - run: | - if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then - cat ${CIRCLE_ARTIFACTS}/log/error.log - exit 1 - fi + - run: + name: Checking for errors in artifacts + command: | + if [[ $(grep -c -v -F 'exit with reason shutdown' ${CIRCLE_ARTIFACTS}/log/error.log) -gt 0 ]]; then + cat ${CIRCLE_ARTIFACTS}/log/error.log + exit 1 + fi + + build_centos7: + docker: + - image: offical2600hz/kazoo-packager-21:1.0-centos-7 + user: circleci + shell: /bin/bash --login + working_directory: /home/circleci/2600hz/the_app + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + BASH_ENV: "/home/circleci/2600hz/.bashrc" + BUILD_ROOT: "/home/circleci/2600hz/packager" + CORE_ROOT: "/home/circleci/2600hz/kazoo" + BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" + BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" + APP_DIR: "/home/circleci/2600hz/the_app" + steps: + - checkout + - run: + name: Setting up core repository + command: | + BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" + if [ -n "$BAZE" ]; then + echo -e "\n\nexport BASE_BRANCH=$BAZE" >> $BASH_ENV + else + echo "add base branch name of main Kazoo repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - run: + name: Generating build environment variables + command: | + APP_DASH=${CIRCLE_PROJECT_REPONAME#kazoo-} + APP=${APP_DASH/-/_} + echo -e "export KAZOO_APP=${APP}\n" >> $BASH_ENV + echo -e "export KAZOO_ROOT=${HOME}/2600hz/kazoo" >> $BASH_ENV + echo -e "export APP_PATH=applications/${APP}\n\n" >> $BASH_ENV + - run: + name: Displaying environment information + command: | + echo ":: behold, running ci tests for application: $KAZOO_APP" + echo "KAZOO_ROOT: $KAZOO_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - run: + name: Cloning core repository + command: | + if [ ! -d ${KAZOO_ROOT} ]; then + git clone https://github.com/2600hz/kazoo $KAZOO_ROOT + fi + - run: + name: Running core setup script + command: ${KAZOO_ROOT}/scripts/circleci.bash + - restore_cache: + keys: + - deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + - run: + name: Preparing dependencies for CentOS7 + command: | + deps_hash=$(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) + if [ x"$(cat $KAZOO_ROOT/.git/.kz_deps_hash)" = x"$deps_hash" ]; then + touch "$KAZOO_ROOT/make/.deps.mk.$deps_hash" + fi + echo -n $(md5sum $KAZOO_ROOT/make/deps.mk | cut -d" " -f1) > "$KAZOO_ROOT/.git/.kz_deps_hash" + - run: + name: Making dependencies + command: | + md5sum $KAZOO_ROOT/make/deps.mk || true + ls -al $KAZOO_ROOT/make || true + make -C ${KAZOO_ROOT} deps + - save_cache: + key: deps-centos-21-v3.2-{{ checksum "~/2600hz/kazoo/make/deps.mk" }} + paths: + - ~/2600hz/kazoo/deps/ + - ~/2600hz/kazoo/.git/.kz_deps_hash + - run: + name: Generating version info + command: | + cd $BUILD_ROOT + VERSION=$(./version) + RELEASE=$(./release) + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "export VERSION=${VERSION}" >> $BASH_ENV + echo "export RELEASE=${RELEASE}" >> $BASH_ENV + PACKAGE_NAME=$(./package_name) + echo "export PACKAGE_NAME=${PACKAGE_NAME}" >> $BASH_ENV + echo "build version for ${PACKAGE_NAME} version: ${VERSION} release: ${RELEASE}" + - run: + name: Building release + command: | + cd $BUILD_ROOT + EXPOSURE=$(./exposure) + cd $CORE_ROOT + if [[ $EXPOSURE == 'private' ]]; then + make compile-lean KZ_VERSION=$VERSION.$RELEASE + else + make all KZ_VERSION=$VERSION.$RELEASE + fi + make build-release KZ_VERSION=$VERSION.$RELEASE + - run: + name: Building CHANGELOG and VERSION files + command: | + cd $BUILD_ROOT + ./package_docs + - run: + name: Preparing source for packaging + command: | + cd $BUILD_SOURCES + echo " - copy build into artifacts" + cp -R $KAZOO_ROOT/_rel/kazoo/lib/$KAZOO_APP* $BUILD_SOURCES/ + echo " - removing files that should not be packaged in the source tar" + rm -rf ${BUILD_SOURCES}/.??* + rm -rf ${BUILD_SOURCES}/doc* + rm -rf ${BUILD_SOURCES}/*.md + echo " - creating the source tar" + cd $BUILD_ROOT + ARTIFACTS_NAME=${PACKAGE_NAME}-${VERSION} + mkdir -p ${ARTIFACTS_NAME} + cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. + tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} + cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. + - run: + name: Building RPM package + command: | + cd $BUILD_ROOT + ./build + - store_artifacts: + path: /home/circleci/2600hz/packager/RPMS diff --git a/applications/webhooks/.shipyard.yml b/applications/webhooks/.shipyard.yml new file mode 100644 index 00000000000..c87706ced02 --- /dev/null +++ b/applications/webhooks/.shipyard.yml @@ -0,0 +1,21 @@ +--- +name: kazoo-application-webhooks +base_branch: origin/master +metapackage: + - name: meta-kazoo-applications + type: required + branch: master + package: kazoo-application-webhooks +base_core: kazoo +template: kazoo-application.spec.tmpl +package: + centos7: + name: kazoo-application-webhooks + summary: Kazoo core application + description: | + Provides HTTP callbacks for events within KAZOO + app_name: webhooks + license: MPL 2.0 + group: Productivity/Telephony + url: https://2600hz.org/ + vendor: 2600Hz diff --git a/doc/engineering/shipyard.md b/doc/engineering/shipyard.md new file mode 100644 index 00000000000..c5d80561b65 --- /dev/null +++ b/doc/engineering/shipyard.md @@ -0,0 +1,11 @@ +# Shipyard + +Shipyard is the build pipeline for KAZOO and other projects, generating artifacts like RPMs for use in building clusters. + +## Per-application config + +Each KAZOO application should define a `.shipyard.yml` file structured to provide the relevant metadata and dependencies. + +### Description + +The description key should be constrained to 80-character columns diff --git a/doc/mkdocs/mkdocs.yml b/doc/mkdocs/mkdocs.yml index 8a1241e2bab..9d936d95a45 100644 --- a/doc/mkdocs/mkdocs.yml +++ b/doc/mkdocs/mkdocs.yml @@ -549,6 +549,7 @@ pages: - 'Makefile': 'doc/engineering/make.md' - 'Property Testing Presentation': 'doc/engineering/property_testing_presentation.md' - 'Running Dev Shells': 'scripts/dev/README.md' + - 'Shipyard': 'doc/engineering/shipyard.md' - 'Testing': 'doc/engineering/testing.md' - 'Using Dialyzer': 'doc/engineering/dialyzer.md' - 'Webhooks': 'doc/engineering/webhooks.md'