experimenter/.circleci/config.yml

860 строки
31 KiB
YAML
Executable File

version: 2.1
orbs:
gh: circleci/github-cli@2.2
gcp-cli: circleci/gcp-cli@3.1.1
android: circleci/android@2.5.0
macos: circleci/macos@2.5.1
commands:
check_file_paths:
description: "Check file paths"
parameters:
paths:
type: string
default: ""
steps:
- run:
name: Check file paths
command: |
# Check if CIRCLE_BRANCH is "main" and skip the check
if [ "$CIRCLE_BRANCH" == "main" ]; then
echo "On main branch. Skipping path checks."
exit 0
fi
diff_output=$(git diff --name-only main HEAD)
echo "Changed files:"
echo "$diff_output"
if echo "$diff_output" | grep -E '<< parameters.paths >>|^[^/]+$|^.circleci/|application-services/'
then
echo "Changes detected in << parameters.paths >> or .circleci or root directory. Running tests and linting."
else
echo "No changes in << parameters.paths >> or .circleci or root directory. Skipping tests and linting."
circleci-agent step halt
fi
docker_login:
description: "Login to Docker"
parameters:
username:
type: string
password:
type: string
steps:
- run: |
echo "<< parameters.password >>" | docker login --username << parameters.username >> --password-stdin
jobs:
check_experimenter_x86_64:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/experimenter
steps:
- checkout
- check_file_paths:
paths: "experimenter/"
- run:
name: Run tests and linting
command: |
cp .env.sample .env
make check
check_experimenter_aarch64:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: arm.large
working_directory: ~/experimenter
steps:
- checkout
- check_file_paths:
paths: "experimenter/"
- run:
name: Run tests and linting
command: |
cp .env.sample .env
make check
check_cirrus_x86_64:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/cirrus
steps:
- checkout
- check_file_paths:
paths: "cirrus/"
- run:
name: Run Cirrus tests and linting
command: |
make cirrus_check
check_cirrus_aarch64:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: arm.large
working_directory: ~/cirrus
steps:
- checkout
- check_file_paths:
paths: "cirrus/"
- run:
name: Run Cirrus tests and linting
command: |
make cirrus_check
check_schemas:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
steps:
- checkout
- check_file_paths:
paths: "schemas/"
- run:
name: Run Schemas tests and linting
command: |
make schemas_check
integration_nimbus_desktop_release_targeting:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-release
PYTEST_ARGS: -k FIREFOX_DESKTOP -m run_targeting -n 4 --reruns 1
MOZ_REMOTE_SETTINGS_DEVTOOLS: 1 # allows us to override and set the remote settings URL
steps:
- checkout
- check_file_paths:
paths: "experimenter/experimenter/targeting|experimenter/experimenter/experiments|experimenter/tests"
- run:
name: Run integration tests
command: |
cp .env.integration-tests .env
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="$PYTEST_ARGS"
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_nimbus_desktop_beta_targeting:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-beta
PYTEST_ARGS: -k FIREFOX_DESKTOP -m run_targeting -n 4 --reruns 1
FIREFOX_BETA: 1
MOZ_REMOTE_SETTINGS_DEVTOOLS: 1 # allows us to override and set the remote settings URL
steps:
- checkout
- check_file_paths:
paths: "experimenter/tests/firefox-desktop-beta-build.env"
- run:
name: Run integration tests
command: |
cp .env.integration-tests .env
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="$PYTEST_ARGS"
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_nimbus_desktop_nightly_targeting:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-release
PYTEST_ARGS: -k FIREFOX_DESKTOP -m run_targeting -n 2 --reruns 1
UPDATE_FIREFOX_VERSION: true
steps:
- checkout
- check_file_paths:
paths: "experimenter/experimenter/targeting|experimenter/experimenter/experiments|experimenter/tests"
- run:
name: Run integration tests
command: |
cp .env.integration-tests .env
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="$PYTEST_ARGS"
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_nimbus_remote_settings_launch:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-release
PYTEST_ARGS: -m remote_settings_launch --reruns 1
steps:
- checkout
- check_file_paths:
paths: "experimenter/"
- run:
name: Run integration tests
command: |
cp .env.integration-tests .env
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="$PYTEST_ARGS"
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_nimbus_remote_settings_all:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: medium
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-release
PYTEST_ARGS: -k FIREFOX_DESKTOP -m remote_settings_all --reruns 1
steps:
- checkout
- check_file_paths:
paths: "experimenter/"
- run:
name: Run integration tests
command: |
cp .env.integration-tests .env
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="$PYTEST_ARGS"
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_nimbus_desktop_enrollment:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: xlarge
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-release
PYTEST_ARGS: -k FIREFOX_DESKTOP -m desktop_enrollment --reruns 1
UPDATE_FIREFOX_VERSION: true
steps:
- checkout
- check_file_paths:
paths: "experimenter/"
- run:
name: Run integration tests
command: |
cp .env.integration-tests .env
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="$PYTEST_ARGS"
no_output_timeout: 30m
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_nimbus_desktop_ui:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-release
PYTEST_ARGS: -m nimbus_ui -n 2 --reruns 1
steps:
- checkout
- check_file_paths:
paths: "experimenter/"
- run:
name: Run integration tests
command: |
cp .env.integration-tests .env
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="$PYTEST_ARGS"
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_nimbus_sdk_targeting:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: medium
working_directory: ~/experimenter
steps:
- checkout
- check_file_paths:
paths: "experimenter/experimenter/targeting|experimenter/experimenter/experiments|experimenter/tests"
- run:
name: Run rust integration tests
command: |
cp .env.integration-tests .env
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus_rust
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_nimbus_cirrus:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-release
PYTEST_ARGS: -k DEMO_APP -m cirrus_enrollment --reruns 1
steps:
- checkout
- check_file_paths:
paths: "experimenter/"
- run:
name: Run integration tests
command: |
cp .env.integration-tests .env
export CIRRUS=1
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="$PYTEST_ARGS"
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_legacy:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: large
working_directory: ~/experimenter
environment:
FIREFOX_VERSION: nimbus-firefox-release
steps:
- checkout
- check_file_paths:
paths: "experimenter/"
- run:
name: Run integration tests
command: |
cp .env.sample .env
make refresh up_prod_detached integration_test_legacy
- store_artifacts:
path: ~/experimenter/experimenter/tests/integration/test-reports/report.htm
integration_test_android_fenix:
executor:
name: android/android-machine
resource-class: xlarge
tag: default
environment:
PYTEST_ARGS: --reruns 1
steps:
- checkout
- check_file_paths:
paths: "experimenter/tests/firefox-fenix-build.env"
- attach_workspace:
at: /tmp/experimenter
- android/accept-licenses
- android/create-avd:
avd-name: myavd
install: true
system-image: system-images;android-34;google_apis;x86_64
- android/start-emulator:
avd-name: myavd
post-emulator-launch-assemble-command: adb devices
- run:
name: Install APKs
command: |
adb install /tmp/experimenter/tests/integration/nimbus/android/app-fenix-debug-androidTest.apk
adb install /tmp/experimenter/tests/integration/nimbus/android/app-fenix-x86_64-debug.apk
- run:
name: Download test files and run
command: |
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/mozilla/application-services/main/install-nimbus-cli.sh | bash
pip install poetry
make integration_test_nimbus_fenix PYTEST_ARGS="$PYTEST_ARGS"
- android/save-gradle-cache:
cache-prefix: v1a
- store_artifacts:
path: /home/circleci/project/test-reports/report.htm
integration_test_ios_fennec:
macos:
xcode: 15.3.0
steps:
- checkout
- check_file_paths:
paths: "experimenter/tests/firefox-fenix-build.env"
- macos/preboot-simulator:
version: "17.4"
platform: "iOS"
device: "iPhone 15"
- attach_workspace:
at: /tmp/experimenter
- run:
name: Clone Firefox iOS Repo
command: git clone https://github.com/mozilla-mobile/firefox-ios.git
- run:
name: Install nimbus-cli
command: curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/mozilla/application-services/main/install-nimbus-cli.sh | bash
- run:
name: Setup and build Firefox app
command: |
cd firefox-ios
sh ./bootstrap.sh
cd firefox-ios
pip3 install virtualenv poetry
xcodebuild build-for-testing -project Client.xcodeproj -scheme Fennec -configuration Fennec -sdk iphonesimulator -quiet -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.4'
- run:
name: Run Tests
command: |
cd firefox-ios/firefox-ios/firefox-ios-tests/Tests/ExperimentIntegrationTests
export SIMULATOR_UDID=$(python get_specific_device_udid.py)
cp -f ~/project/experimenter/tests/integration/nimbus/ios/test_ios_integration.py ./
poetry install
poetry run pytest -k test_ios_integration.py --feature ios_enrollment
- store_artifacts:
path: ~/project/firefox-ios/firefox-ios/firefox-ios-tests/Tests/ExperimentIntegrationTests/results/index.html
create_fenix_fennec_recipes:
working_directory: ~/experimenter
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
steps:
- checkout
- run:
name: Create experiment on experimenter
command: |
cp .env.integration-tests .env
export CIRRUS=1
make refresh SKIP_DUMMY=1 PYTEST_SENTRY_DSN=$PYTEST_SENTRY_DSN CIRCLECI=$CIRCLECI up_prod_detached integration_test_nimbus PYTEST_ARGS="-k test_create_mobile_experiment_for_integration_test"
- persist_to_workspace:
root: experimenter
paths:
- tests/integration/ios_recipe.json
- tests/integration/fenix_recipe.json
deploy_experimenter:
working_directory: ~/experimenter
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
steps:
- checkout
- docker_login:
username: $DOCKER_USER
password: $DOCKER_PASS
- run:
name: Deploy to Dockerhub
command: |
./scripts/store_git_info.sh
make build_prod
docker tag experimenter:deploy ${DOCKERHUB_REPO}:latest
docker push ${DOCKERHUB_REPO}:latest
GIT_SHA=$(git rev-parse --short HEAD)
docker tag experimenter:deploy ${DOCKERHUB_REPO}:${GIT_SHA}
docker push ${DOCKERHUB_REPO}:${GIT_SHA}
- gcp-cli/setup
- run:
name: Deploy to Google Container Registry
command: |
echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=-
gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}
gcloud auth configure-docker
DOCKER_IMAGE="gcr.io/${GOOGLE_PROJECT_ID}/experimenter"
docker tag experimenter:deploy ${DOCKER_IMAGE}:latest
docker push "${DOCKER_IMAGE}:latest"
GIT_SHA=$(git rev-parse --short HEAD)
docker tag experimenter:deploy ${DOCKERHUB_REPO}:${GIT_SHA}
docker push ${DOCKERHUB_REPO}:${GIT_SHA}
- run:
name: Prepare environment variables for OIDC authentication
command: |
echo 'export GOOGLE_PROJECT_ID="moz-fx-experimenter-prod-6cd5"' >> "$BASH_ENV"
echo "export OIDC_WIP_ID=$GCPV2_WORKLOAD_IDENTITY_POOL_ID" >> "$BASH_ENV"
echo "export OIDC_WIP_PROVIDER_ID=$GCPV2_CIRCLECI_WORKLOAD_IDENTITY_PROVIDER" >> "$BASH_ENV"
echo "export GOOGLE_PROJECT_NUMBER=$GCPV2_WORKLOAD_IDENTITY_POOL_PROJECT_NUMBER" >> "$BASH_ENV"
echo "export OIDC_SERVICE_ACCOUNT_EMAIL=$GCP_SERVICE_ACCOUNT_EMAIL" >> "$BASH_ENV"
- gcp-cli/setup:
use_oidc: true
- run:
name: Deploy to Google Artifact Registry
command: |
gcloud auth configure-docker us-docker.pkg.dev --quiet
DOCKER_IMAGE="us-docker.pkg.dev/moz-fx-experimenter-prod-6cd5/experimenter-prod/experimenter"
docker tag experimenter:deploy ${DOCKER_IMAGE}:latest
docker push "${DOCKER_IMAGE}:latest"
GIT_SHA=$(git rev-parse --short HEAD)
docker tag experimenter:deploy ${DOCKER_IMAGE}:${GIT_SHA}
docker push ${DOCKER_IMAGE}:${GIT_SHA}
deploy_cirrus:
working_directory: ~/cirrus
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
steps:
- checkout
- docker_login:
username: $DOCKERHUB_CIRRUS_USER
password: $DOCKERHUB_CIRRUS_PASS
- run:
name: Deploy to latest
command: |
make cirrus_build
docker tag cirrus:deploy ${DOCKERHUB_CIRRUS_REPO}:latest
docker push ${DOCKERHUB_CIRRUS_REPO}:latest
deploy_schemas:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
steps:
- checkout
- run:
name: Check for package version change in last commit before proceeding.
command: |
if git diff main HEAD~1 schemas/pyproject.toml | grep 'version'
then
echo "Found changes to package version dir, proceeding with deployment."
else
echo "No changes in package version. Skipping mozilla-nimbus-schemas deployment."
circleci-agent step halt
fi
- run:
name: Create the distribution files
command: |
make schemas_dist
- run:
name: Upload to PyPI
command: |
# Relies on the TWINE_USERNAME and TWINE_PASSWORD environment variables configured at:
# https://app.circleci.com/settings/project/github/mozilla/experimenter/environment-variables
# For more on twine, see:
# https://twine.readthedocs.io/en/latest/
make schemas_deploy_pypi SCHEMAS_ENV="-e TWINE_USERNAME=${TWINE_USERNAME} -e TWINE_PASSWORD=${TWINE_PASSWORD}"
- run:
name: NPM Authentication
command: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc
- run:
name: Upload to NPM
command: |
# Relies on the NPM_TOKEN environment variable configured at:
# https://app.circleci.com/settings/project/github/mozilla/experimenter/environment-variables
make schemas_deploy_npm SCHEMAS_ENV="-e NPM_TOKEN=${NPM_TOKEN}"
update_external_configs:
working_directory: ~/experimenter
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
steps:
- add_ssh_keys:
fingerprints:
- "32:8e:72:0b:9a:a1:1c:b8:7e:90:e1:53:a3:73:68:47" # for git pushes from circleci, since relies on ssh
- checkout
- gh/setup:
token: GH_EXTERNAL_CONFIG_TOKEN # for gh commands from circleci, since relies on user token, since por que no los dos?
- run:
name: Setup Git
command: |
git config --local user.name "dataops-ci-bot"
git config --local user.email "dataops+ci-bot@mozilla.com"
gh config set git_protocol https
- run:
name: Check for External Config Update
command: |
git checkout main
git pull origin main
cp .env.sample .env
touch ./experimenter/fetch-summary.txt
env GITHUB_BEARER_TOKEN="${GH_EXTERNAL_CONFIG_TOKEN}" make fetch_external_resources FETCH_ARGS="--summary fetch-summary.txt"
mv ./experimenter/fetch-summary.txt /tmp/pr-body.txt
echo -e "\nCircle CI Task: ${CIRCLE_BUILD_URL}" >> /tmp/pr-body.txt
if python3 ./experimenter/bin/should-pr.py
then
git checkout -B external-config
git add .
git commit -m 'chore(nimbus): Update External Configs'
if (($((git diff external-config origin/external-config || git diff HEAD~1) | wc -c) > 0))
then
git push origin external-config -f
gh pr create -t "chore(nimbus): Update External Configs" -F /tmp/pr-body.txt --base main --head external-config --repo mozilla/experimenter || \
gh pr edit external-config -F /tmp/pr-body.txt
else
echo "Changes already committed, skipping"
fi
else
echo "No config changes, skipping"
fi
update_application_services:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
steps:
- add_ssh_keys:
fingerprints:
- "32:8e:72:0b:9a:a1:1c:b8:7e:90:e1:53:a3:73:68:47" # for git pushes from circleci, since relies on ssh
- checkout
- gh/setup:
token: GH_TOKEN # for gh commands from circleci, since relies on user token, since por que no los dos?
- run:
name: Setup Git
command: |
git config --local user.name "dataops-ci-bot"
git config --local user.email "dataops+ci-bot@mozilla.com"
gh config set git_protocol https
- run:
name: Check for Application Services update
command: |
git checkout main
git pull origin main
make update_application_services
if (($(git status --porcelain | wc -c) > 0)); then
git checkout -B update-application-services
git add .
git commit -m "chore(nimbus): Update application-services"
if (($((git diff update-application-services origin/update-application-services || git diff HEAD~1) | wc -c) > 0)); then
git push origin update-application-services -f
gh pr create -t "chore(nimbus): Update application-services" -b "" --base main --head update-application-services --repo mozilla/experimenter || echo "PR already exists, skipping"
else
echo "Changes already committed, skipping"
fi
else
echo "No config changes, skipping"
fi
check_external_firefox_integrations:
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
working_directory: ~/experimenter
steps:
- add_ssh_keys:
fingerprints:
- "32:8e:72:0b:9a:a1:1c:b8:7e:90:e1:53:a3:73:68:47" # for git pushes from circleci, since relies on ssh
- checkout
- gh/setup:
token: GH_TOKEN # for gh commands from circleci, since relies on user token, since por que no los dos?
- run:
name: Setup Git
command: |
git config --local user.name "dataops-ci-bot"
git config --local user.email "dataops+ci-bot@mozilla.com"
gh config set git_protocol https
- run:
name: Check for external Update
command: |
./scripts/external_integration_updater_script.sh
build_firefox_versions:
working_directory: ~/experimenter
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
steps:
- checkout
- docker_login:
username: $DOCKER_USER
password: $DOCKER_PASS
- run:
name: Build and upload images
command: |
# Clone last working version to ensure compatibility with aarch64 apple silicon machines
git clone --branch selenium-grid-0.27.0 --depth 1 git@github.com:SeleniumHQ/docker-selenium.git
cd docker-selenium
BUILD_ARGS="--build-arg FIREFOX_VERSION=latest" VERSION="firefox" BUILD_DATE="release" make standalone_firefox
BUILD_ARGS="--build-arg FIREFOX_VERSION=devedition-latest" VERSION="firefox" BUILD_DATE="beta" make standalone_firefox
docker tag selenium/standalone-firefox:firefox-release ${DOCKERHUB_REPO}:nimbus-firefox-release
docker tag selenium/standalone-firefox:firefox-beta ${DOCKERHUB_REPO}:nimbus-firefox-beta
docker push ${DOCKERHUB_REPO}:nimbus-firefox-beta
docker push ${DOCKERHUB_REPO}:nimbus-firefox-release
build_firefox_fenix:
working_directory: ~/experimenter
machine:
image: ubuntu-2004:2023.10.1
docker_layer_caching: true
resource_class: xlarge
steps:
- checkout
- check_file_paths:
paths: "experimenter/tests/firefox-fenix-build.env"
- docker_login:
username: $DOCKER_USER
password: $DOCKER_PASS
- run:
name: Build and upload images
command: |
cd experimenter/tests/integration/nimbus/android
docker build -t fenix-builder -f moz-central.test-container.Dockerfile .
docker run -d --name fenix-builder fenix-builder
docker cp fenix-builder:mozilla-central/mobile/android/fenix/app-fenix-debug-androidTest.apk ./
docker cp fenix-builder:mozilla-central/mobile/android/fenix/app-fenix-x86_64-debug.apk ./
no_output_timeout: 60m
- persist_to_workspace:
root: experimenter
paths:
- tests/integration/nimbus/android/app-fenix-debug-androidTest.apk
- tests/integration/nimbus/android/app-fenix-x86_64-debug.apk
workflows:
build_firefox:
triggers:
- schedule:
cron: "0 0 * * *"
filters:
branches:
only:
- main
jobs:
- build_firefox_versions
update_configs:
triggers:
- schedule:
cron: "0 * * * *"
filters:
branches:
only:
- main
jobs:
- update_external_configs
- update_application_services
check_firefox_integrations:
triggers:
- schedule:
cron: "0 12 * * *"
filters:
branches:
only:
- main
jobs:
- check_external_firefox_integrations
build:
jobs:
- check_experimenter_x86_64:
name: Check Experimenter x86_64
- check_experimenter_aarch64:
name: Check Experimenter aarch64
- check_cirrus_x86_64:
name: Check Cirrus x86_64
- check_cirrus_aarch64:
name: Check Cirrus aarch64
- check_schemas:
name: Check Schemas
filters:
branches:
ignore:
- main
- create_fenix_fennec_recipes:
name: Create fenix and fennec recipes
filters:
branches:
only:
- check_external_firefox_integrations
- integration_nimbus_desktop_release_targeting:
name: Test Desktop Targeting (Release Firefox)
filters:
branches:
ignore:
- main
- integration_nimbus_desktop_beta_targeting:
name: Test Desktop Targeting (Beta Firefox)
filters:
branches:
ignore:
- main
- integration_nimbus_desktop_nightly_targeting:
name: Test Desktop Targeting (Nightly Firefox)
filters:
branches:
ignore:
- main
- integration_nimbus_desktop_ui:
name: Test Desktop Nimbus UI (Release Firefox)
filters:
branches:
ignore:
- main
- integration_nimbus_remote_settings_launch:
name: Test Remote Settings Launch (All Applications)
filters:
branches:
ignore:
- main
- integration_nimbus_remote_settings_all:
name: Test Remote Settings All Workflows (Release Firefox Desktop)
filters:
branches:
ignore:
- main
- integration_nimbus_desktop_enrollment:
name: Test Desktop Enrollment (Release Firefox)
filters:
branches:
ignore:
- main
- integration_nimbus_sdk_targeting:
name: Test SDK Targeting (Release Firefox)
filters:
branches:
ignore:
- main
- integration_nimbus_cirrus:
name: Test Demo app with Cirrus
filters:
branches:
ignore:
- main
- integration_legacy:
name: Test Legacy Desktop (Release Firefox)
filters:
branches:
ignore:
- main
- integration_test_android_fenix:
name: Test Firefox for Android (Fenix)
requires:
- Create fenix and fennec recipes
- Build Fenix APKs
filters:
branches:
only:
- check_external_firefox_integrations
- integration_test_ios_fennec:
name: Test Firefox for iOS (Fennec)
requires:
- Create fenix and fennec recipes
filters:
branches:
only:
- check_external_firefox_integrations
- deploy_experimenter:
name: Deploy Experimenter
context:
- gcpv2-workload-identity
filters:
branches:
only: main
requires:
- Check Experimenter x86_64
- Check Experimenter aarch64
- deploy_cirrus:
name: Deploy Cirrus
filters:
branches:
only: main
requires:
- Check Cirrus x86_64
- Check Cirrus aarch64
- deploy_schemas:
name: Deploy Schemas
filters:
branches:
only: main
- build_firefox_fenix:
name: Build Fenix APKs
filters:
branches:
only:
- check_external_firefox_integrations