diff --git a/.circleci/config.yml b/.circleci/config.yml index e404a50..c192b54 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,40 +1,56 @@ version: 2 - workflows: version: 2 build_branch: jobs: - build_centos7 - + - build_rockylinux8 + - build_rockylinux9 build_release: jobs: - - build_centos7: - filters: - tags: - only: /^\d+\.\d+\.\d+$/ - branches: - ignore: /.*/ - + - + build_centos7: + filters: + tags: + only: '/^\d+\.\d+\.\d+(\.\d+)?$/' + branches: + ignore: '/.*/' + - + build_rockylinux8: + filters: + tags: + only: '/^\d+\.\d+\.\d+(\.\d+)?$/' + branches: + ignore: '/.*/' + - + build_rockylinux9: + filters: + tags: + only: '/^\d+\.\d+\.\d+(\.\d+)?$/' + branches: + ignore: '/.*/' jobs: build_centos7: docker: - - image: 2600hz/node-packager:lts-centos-7 + - + image: '2600hz/node-packager:14-centos-7' user: circleci - shell: /bin/bash --login + 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/monster-ui" - BUILD_SOURCES: "/home/circleci/2600hz/packager/SOURCES" - BUILD_RPMS: "/home/circleci/2600hz/packager/RPMS" - APP_DIR: "/home/circleci/2600hz/the_app" + BASH_ENV: /home/circleci/2600hz/.bashrc + BUILD_ROOT: /home/circleci/2600hz/packager + CORE_ROOT: /home/circleci/2600hz/monster-ui + 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 + - + run: + name: 'Setting up core repository' command: | BAZE="$(cat "${HOME}/2600hz/the_app/.base_branch")" if [ -n "$BAZE" ]; then @@ -43,46 +59,305 @@ jobs: echo "add base branch name of main Monster-UI repo (like origin/master) to '.base_branch' in your application root directory" exit 1 fi - - run: - name: Generating build environment variables + - + run: + name: 'Generating build environment variables' command: | APP=${CIRCLE_PROJECT_REPONAME#monster-ui-} echo -e "export MONSTER_APP=${APP}\n" >> $BASH_ENV echo -e "export APP=${APP}\n" >> $BASH_ENV echo -e "export MONSTER_ROOT=${HOME}/2600hz/monster-ui" >> $BASH_ENV echo -e "export APP_PATH=src/apps/${APP}\n\n" >> $BASH_ENV - - run: - name: Displaying environment information + - + run: + name: 'Displaying environment information' command: | echo ":: behold, running ci tests for application: $MONSTER_APP" echo "MONSTER_ROOT: $MONSTER_ROOT" echo "APP_PATH: $APP_PATH" echo "BASE_BRANCH: $BASE_BRANCH" - - run: - name: Cloning core repository + - + run: + name: 'Cloning core repository' command: | if [ ! -d ${MONSTER_ROOT} ]; then git clone https://github.com/2600hz/monster-ui $MONSTER_ROOT fi - - run: - name: Running core setup script - command: ${MONSTER_ROOT}/scripts/circleci.bash - - restore_cache: - key: dependency-cache-centos-{{ checksum "/home/circleci/2600hz/monster-ui/package-lock.json" }} + - + run: + name: 'Running core setup script' + command: '${MONSTER_ROOT}/scripts/circleci.bash' + - + restore_cache: + key: 'dependency-cache-centos-7-{{ checksum "/home/circleci/2600hz/monster-ui/package-lock.json" }}' + paths: '-/home/circle/2600hz/monster-ui/node_modules' + - + run: + name: 'Making dependencies' + command: | + cd $MONSTER_ROOT + npm install + - + run: + name: 'Building release' + command: | + cd $MONSTER_ROOT + gulp build-app --app=${APP} + - + 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 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 ${MONSTER_ROOT}/dist/apps/${MONSTER_APP} ${BUILD_SOURCES}/ + cp VERSION ${MONSTER_APP}/ + 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 package' + command: | + cd $BUILD_ROOT + ./build + - + store_artifacts: + path: /home/circleci/2600hz/packager/RPMS + - + save_cache: + key: 'dependency-cache-centos-7-{{ checksum "/home/circleci/2600hz/monster-ui/package-lock.json" }}' paths: - -/home/circle/2600hz/monster-ui/node_modules - - run: - name: Making dependencies + - /home/circle/2600hz/monster-ui/node_modules + build_rockylinux8: + docker: + - + image: '2600hz/node-packager:14-rockylinux-8' + 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/monster-ui + 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 Monster-UI repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - + run: + name: 'Generating build environment variables' + command: | + APP=${CIRCLE_PROJECT_REPONAME#monster-ui-} + echo -e "export MONSTER_APP=${APP}\n" >> $BASH_ENV + echo -e "export APP=${APP}\n" >> $BASH_ENV + echo -e "export MONSTER_ROOT=${HOME}/2600hz/monster-ui" >> $BASH_ENV + echo -e "export APP_PATH=src/apps/${APP}\n\n" >> $BASH_ENV + - + run: + name: 'Displaying environment information' + command: | + echo ":: behold, running ci tests for application: $MONSTER_APP" + echo "MONSTER_ROOT: $MONSTER_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - + run: + name: 'Cloning core repository' + command: | + if [ ! -d ${MONSTER_ROOT} ]; then + git clone https://github.com/2600hz/monster-ui $MONSTER_ROOT + fi + - + run: + name: 'Running core setup script' + command: '${MONSTER_ROOT}/scripts/circleci.bash' + - + restore_cache: + key: 'dependency-cache-rockylinux-8-{{ checksum "/home/circleci/2600hz/monster-ui/package-lock.json" }}' + paths: '-/home/circle/2600hz/monster-ui/node_modules' + - + run: + name: 'Making dependencies' + command: | + cd $MONSTER_ROOT + npm install + - + run: + name: 'Building release' + command: | + cd $MONSTER_ROOT + gulp build-app --app=${APP} + - + 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 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 ${MONSTER_ROOT}/dist/apps/${MONSTER_APP} ${BUILD_SOURCES}/ + cp VERSION ${MONSTER_APP}/ + 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 package' + command: | + cd $BUILD_ROOT + ./build + - + store_artifacts: + path: /home/circleci/2600hz/packager/RPMS + - + save_cache: + key: 'dependency-cache-rockylinux-8-{{ checksum "/home/circleci/2600hz/monster-ui/package-lock.json" }}' + paths: + - /home/circle/2600hz/monster-ui/node_modules + build_rockylinux9: + docker: + - + image: '2600hz/node-packager:14-rockylinux-9' + 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/monster-ui + 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 Monster-UI repo (like origin/master) to '.base_branch' in your application root directory" + exit 1 + fi + - + run: + name: 'Generating build environment variables' + command: | + APP=${CIRCLE_PROJECT_REPONAME#monster-ui-} + echo -e "export MONSTER_APP=${APP}\n" >> $BASH_ENV + echo -e "export APP=${APP}\n" >> $BASH_ENV + echo -e "export MONSTER_ROOT=${HOME}/2600hz/monster-ui" >> $BASH_ENV + echo -e "export APP_PATH=src/apps/${APP}\n\n" >> $BASH_ENV + - + run: + name: 'Displaying environment information' + command: | + echo ":: behold, running ci tests for application: $MONSTER_APP" + echo "MONSTER_ROOT: $MONSTER_ROOT" + echo "APP_PATH: $APP_PATH" + echo "BASE_BRANCH: $BASE_BRANCH" + - + run: + name: 'Cloning core repository' + command: | + if [ ! -d ${MONSTER_ROOT} ]; then + git clone https://github.com/2600hz/monster-ui $MONSTER_ROOT + fi + - + run: + name: 'Running core setup script' + command: '${MONSTER_ROOT}/scripts/circleci.bash' + - + restore_cache: + key: 'dependency-cache-rockylinux-9-{{ checksum "/home/circleci/2600hz/monster-ui/package-lock.json" }}' + paths: '-/home/circle/2600hz/monster-ui/node_modules' + - + run: + name: 'Making dependencies' command: | cd $MONSTER_ROOT npm install - - run: - name: Building release + - + run: + name: 'Building release' command: | cd $MONSTER_ROOT gulp build-app --app=${APP} - - run: - name: Generating version info + - + run: + name: 'Generating version info' command: | cd $BUILD_ROOT VERSION=$(./version) @@ -94,14 +369,16 @@ jobs: 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 CHANGELOG and VERSION files + - + run: + name: 'Building CHANGELOG and VERSION files' command: | cd $BUILD_ROOT ./package_docs - - run: - name: Preparing source for packaging - command: | + - + run: + name: 'Preparing source for packaging' + command: |- cd $BUILD_SOURCES echo " - copy build into artifacts" cp -R ${MONSTER_ROOT}/dist/apps/${MONSTER_APP} ${BUILD_SOURCES}/ @@ -117,15 +394,17 @@ jobs: cp -r ${BUILD_SOURCES}/* ${ARTIFACTS_NAME}/. tar -cf ${ARTIFACTS_NAME}.tar ${ARTIFACTS_NAME} cp ${ARTIFACTS_NAME}.tar ${BUILD_SOURCES}/. - - run: - name: Building package + - + run: + name: 'Building package' command: | cd $BUILD_ROOT ./build - - store_artifacts: + - + store_artifacts: path: /home/circleci/2600hz/packager/RPMS - - save_cache: - key: dependency-cache-centos-{{ checksum "/home/circleci/2600hz/monster-ui/package-lock.json" }} + - + save_cache: + key: 'dependency-cache-rockylinux-9-{{ checksum "/home/circleci/2600hz/monster-ui/package-lock.json" }}' paths: - /home/circle/2600hz/monster-ui/node_modules -