# 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: bugzilla/harmony-slim:20180318.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 HTTPD_StartServers: 1 HTTPD_MinSpareServers: 1 HTTPD_MaxSpareServers: 1 HTTPD_ServerLimit: 1 HTTPD_MaxClients: 1 HTTPD_MaxRequestsPerChild: 4000 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: | mv /opt/bmo/local /app/local perl -MSys::Hostname -i -pE 's/bmo.test/hostname() . ":$ENV{PORT}"/ges' $BZ_QA_CONF_FILE /app/scripts/entrypoint.pl checksetup_gen_files --default-localconfig mkdir artifacts jobs: 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: | exit 0 test_sanity: parallelism: 1 working_directory: /app docker: - <<: *bmo_slim_image environment: *bmo_env steps: - checkout - run: | mv /opt/bmo/local /app/local mkdir artifacts - run: | perl Makefile.PL - run: name: run sanity tests command: | /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 - *default_qa_setup - run: | /app/scripts/entrypoint.pl load_test_data - run: | /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 - *default_qa_setup - run: | /app/scripts/entrypoint.pl load_test_data --legacy - run: | /app/scripts/entrypoint.pl test_selenium | tee artifacts/$CIRCLE_JOB.txt - store_artifacts: path: /app/artifacts - *store_log migrate_4.2_mysql: parallelism: 1 working_directory: /app docker: - <<: *bmo_slim_image environment: <<: *bmo_env BMO_urlbase: http://localhost/ DB_DUMP_URL: "https://github.com/bugzilla/harmony-test-fixtures/blob/master/db-dumps/bugzilla-4.2_mysql.sql.gz?raw=true" DB_DUMP_FILE: "bugzilla-4.2_mysql.sql" - <<: *mysql_image environment: *mysql_env steps: - checkout - run: | mv /opt/bmo/local /app/local /app/scripts/entrypoint.pl wait_for_db curl -L "$DB_DUMP_URL" > "$DB_DUMP_FILE" zcat "$DB_DUMP_FILE" | mysql -u$BMO_db_user -p$BMO_db_pass -h $BMO_db_host $BMO_db_name perl checksetup.pl 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 - run: | mv /opt/bmo/local /app/local /app/scripts/entrypoint.pl checksetup_gen_files /app/scripts/entrypoint.pl load_test_data mkdir artifacts - run: | /app/scripts/entrypoint.pl test_bmo -q -f t/bmo/*.t - *store_log workflows: version: 2 main: jobs: - build: filters: *main_filters requires: - test_sanity - test_bmo - test_webservices - test_selenium - test_sanity: filters: *main_filters - migrate_4.2_mysql: filters: *main_filters - test_bmo: filters: *main_filters - test_webservices: filters: *main_filters - test_selenium: filters: *main_filters requires: - test_sanity - migrate_4.2_mysql - build: filters: *main_filters requires: - test_sanity - test_bmo - test_webservices