summaryrefslogtreecommitdiffstats
path: root/.circleci/config.yml
diff options
context:
space:
mode:
Diffstat (limited to '.circleci/config.yml')
-rw-r--r--.circleci/config.yml289
1 files changed, 0 insertions, 289 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
deleted file mode 100644
index 225ed9470..000000000
--- a/.circleci/config.yml
+++ /dev/null
@@ -1,289 +0,0 @@
-# References:
-# 1. https://circleci.com/blog/how-to-build-a-docker-image-on-circleci-2-0/
-# 2. https://circleci.com/docs/2.0/building-docker-images/
-#
-
-version: 2
-
-defaults:
- bmo_slim_image: &bmo_slim_image
- image: mozillabteam/bmo-slim:20180801.1
- user: app
-
- mysql_image: &mysql_image
- image: mozillabteam/bmo-mysql:5.6
-
- store_log: &store_log
- store_artifacts:
- path: /app/bugzilla.log
- destination: bugzilla.log
-
- main_filters: &main_filters
- branches:
- ignore:
- - /^(?:release|test)-20\d\d\d\d\d\d\.\d+/
- - /\//
- - production
-
- bmo_env: &bmo_env
- PORT: 8000
- LOGGING_PORT: 5880
- LOCALCONFIG_ENV: 1
- LOG4PERL_CONFIG_FILE: log4perl-test.conf
- BMO_db_user: bugs
- BMO_db_host: 127.0.0.1
- BMO_db_pass: bugs
- BMO_db_name: bugs
- BMO_memcached_servers: localhost:11211
- BMO_memcached_namespace: "bugzilla:"
- BMO_urlbase: AUTOMATIC
-
- mysql_env: &mysql_env
- MYSQL_DATABASE: bugs
- MYSQL_USER: bugs
- MYSQL_PASSWORD: bugs
- MYSQL_ALLOW_EMPTY_PASSWORD: 1
-
- docker_oldtests: &docker_oldtests
- - <<: *bmo_slim_image
- environment:
- <<: *bmo_env
- BZ_QA_CONF_FILE: /app/.circleci/selenium_test.conf
- BZ_QA_ANSWERS_FILE: /app/.circleci/checksetup_answers.legacy.txt
- BZ_QA_LEGACY_MODE: 1
- - <<: *mysql_image
- environment: *mysql_env
- - image: selenium/standalone-firefox:2.53.1
- - image: memcached:latest
-
- default_qa_setup: &default_qa_setup
- run:
- name: default qa setup
- command: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- mv /opt/bmo/local /app/local
- perl -MSys::Hostname -i -pE 's/bmo.test/hostname() . ":$ENV{PORT}"/ges' $BZ_QA_CONF_FILE
- perl checksetup.pl --no-database --default-localconfig
- mkdir artifacts
-
-jobs:
- build_info:
- parallelism: 1
- working_directory: /app
- docker:
- - <<: *bmo_slim_image
- environment:
- <<: *bmo_env
- steps:
- - checkout
- - run:
- name: build push data
- command: |
- mv /opt/bmo/local /app/local
- perl Makefile.PL
- perl -I/app -I/app/local/lib/perl5 -MBugzilla -e 1
- perl checksetup.pl --no-database --no-templates --no-permissions
- perl scripts/build-bmo-push-data.pl
- - run:
- name: only publish if tag exists
- command: |
- tag="$(cat build_info/tag.txt)"
- git fetch --tags
- if git tag | fgrep -q "$tag"; then
- echo "tag $tag exists!"
- else
- echo "tag $tag does not exist"
- echo yes > build_info/publish.txt
- fi
- - run:
- name: check if only version changed
- command: |
- if git diff 'HEAD~..HEAD' --name-only | grep -qv '^Bugzilla.pm'; then
- echo "more files than just Bugzilla.pm changed."
- exit 0
- fi
- if git diff 'HEAD~..HEAD' |grep '^[+-][^+-]' | grep -qv '^[+-]our $VERSION'; then
- echo "Something other than the version number changed."
- exit 0
- fi
- if [[ "$CIRCLE_BRANCH" == "master" ]]; then
- echo "Can't cut corners on the master branch"
- exit 0
- fi
- echo yes > build_info/only_version_changed.txt
- - persist_to_workspace:
- root: /app/build_info
- paths: ["*.txt"]
- - store_artifacts:
- path: /app/build_info
- - *store_log
-
- build:
- working_directory: /app
- docker:
- - image: docker:17.06.1-ce
- steps:
- - setup_remote_docker
- - run:
- name: install git and ssh
- command: apk update && apk add git openssh-client
- - checkout
- - run: |
- docker build \
- --build-arg CI="$CI" \
- --build-arg CIRCLE_SHA1="$CIRCLE_SHA1" \
- --build-arg CIRCLE_BUILD_URL="$CIRCLE_BUILD_URL" \
- -t bmo .
- - attach_workspace:
- at: /app/build_info
- - run: "docker run --name bmo --entrypoint true bmo"
- - run: "docker cp bmo:/app/version.json build_info/version.json"
- - store_artifacts:
- path: /app/build_info
- - *store_log
- - deploy:
- command: |
- TAG="$(cat /app/build_info/tag.txt)"
- [[ "$CIRCLE_BRANCH" == "master" ]] || exit 0
- [[ -n "$DOCKERHUB_REPO" && -n "$DOCKER_USER" && -n "$DOCKER_PASS" ]] || exit 0
- [[ -n "$GITHUB_PERSONAL_TOKEN" ]] || exit 0
- docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
- if [[ -n "$TAG" && -f build_info/publish.txt ]]; then
- git config credential.helper "cache --timeout 120"
- git config user.email "$GITHUB_EMAIL"
- git config user.name "$GITHUB_NAME"
- git tag $TAG
- git push https://${GITHUB_PERSONAL_TOKEN}:x-oauth-basic@github.com/$GITHUB_REPO.git $TAG
- docker tag bmo "$DOCKERHUB_REPO:$TAG"
- docker push "$DOCKERHUB_REPO:$TAG"
- fi
- docker tag bmo "$DOCKERHUB_REPO:latest"
- docker push "$DOCKERHUB_REPO:latest"
-
- test_sanity:
- parallelism: 1
- working_directory: /app
- docker:
- - <<: *bmo_slim_image
- environment: *bmo_env
- steps:
- - checkout
- - attach_workspace:
- at: /app/build_info
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- mv /opt/bmo/local /app/local
- mkdir artifacts
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- perl -I/app -I/app/local/lib/perl5 -c -E 'use Bugzilla; BEGIN { Bugzilla->extensions }'
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- perl Makefile.PL
- - run:
- name: run sanity tests
- command: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- /app/scripts/entrypoint.pl prove -qf $(circleci tests glob 't/*.t' | circleci tests split) | tee artifacts/$CIRCLE_JOB.txt
- - store_artifacts:
- path: /app/artifacts
- - *store_log
-
- test_webservices:
- parallelism: 1
- working_directory: /app
- docker: *docker_oldtests
- steps:
- - checkout
- - attach_workspace:
- at: /app/build_info
- - *default_qa_setup
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- /app/scripts/entrypoint.pl load_test_data
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- /app/scripts/entrypoint.pl test_webservices | tee artifacts/$CIRCLE_JOB.txt
- - store_artifacts:
- path: /app/artifacts
- - *store_log
-
- test_selenium:
- parallelism: 1
- working_directory: /app
- docker: *docker_oldtests
- steps:
- - checkout
- - attach_workspace:
- at: /app/build_info
- - *default_qa_setup
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- /app/scripts/entrypoint.pl load_test_data --legacy
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- /app/scripts/entrypoint.pl test_selenium | tee artifacts/$CIRCLE_JOB.txt
- - store_artifacts:
- path: /app/artifacts
- - *store_log
-
- test_bmo:
- parallelism: 1
- working_directory: /app
- docker:
- - <<: *bmo_slim_image
- environment:
- <<: *bmo_env
- BZ_QA_ANSWERS_FILE: /app/.circleci/checksetup_answers.txt
- TWD_HOST: localhost
- TWD_PORT: 4444
- TWD_BROWSER: firefox
- - <<: *mysql_image
- environment: *mysql_env
- - image: memcached:latest
- - image: selenium/standalone-firefox:2.53.1
- steps:
- - checkout
- - attach_workspace:
- at: /app/build_info
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- mv /opt/bmo/local /app/local
- perl checksetup.pl --no-database
- /app/scripts/entrypoint.pl load_test_data
- mkdir artifacts
- - run: |
- [[ -f build_info/only_version_changed.txt ]] && exit 0
- /app/scripts/entrypoint.pl test_bmo -q -f t/bmo/*.t
- - *store_log
-
-workflows:
- version: 2
- main:
- jobs:
- - build_info:
- filters: *main_filters
- - build:
- filters: *main_filters
- requires:
- - build_info
- - test_sanity
- - test_bmo
- - test_webservices
- - test_selenium
- - test_sanity:
- filters: *main_filters
- requires:
- - build_info
- - test_bmo:
- filters: *main_filters
- requires:
- - build_info
- - test_webservices:
- filters: *main_filters
- requires:
- - build_info
- - test_selenium:
- filters: *main_filters
- requires:
- - build_info