Граф коммитов

132 Коммитов

Автор SHA1 Сообщение Дата
Jared Lockhart 03c57708ad
chore(project): remove duplicate test deploy (#10298)
Becuase

* We added a second deploy to a test tag as part of debugging dockerhub
deploy issues
* The deploy issues are resolved now and it is safe to remove this
duplicate deploy

This commit

* Removes duplicate deploy

fixes #10297
2024-02-21 17:03:22 +00:00
Yashika Khurana 29b4452c94
chore(nimbus):Update gh token for external config (#10274)
Because

- Currently token `GH_USER` on CI has limited scope associated with it,
and we want to fetch resources from private repo. We have added new
token `GH_EXTERNAL_CONFIG_TOKEN` with the required scope

This commit

- Update external config job to use new token value

Fixes #10273
2024-02-12 21:49:17 +00:00
Jared Lockhart b4ebc431db
bug(project): crash in application services megazord build (#10271)
Because

* In the Dockerfile for application services we call apt-get upgrade
* We were implicitly using the debian:bullseye build dated 20240130
* Calling apt-get upgrade would silently pass becuase no packages had
been updated
* On Feb 12 some package updated and so the call to apt-get upgrade
produced a prompt to continue
* We had not included the -y flag to accept that prompt
* This caused Docker to abort the build with a spectacularly unhelpful
stack trace

This commit
* Locks the application services Dockerfile to a specific tag of
debian:bullseye
* Adds the -y flag to apt-get upgrade
* Forces all tests to run on changes to `application-services/`

fixes #10270
2024-02-12 17:58:17 +00:00
Barret Rennie 38f43fc693
feat(nimbus): auto-update application-services (#10182)
Because:

- we have standardized on using a single version of application-services
  across all Experimenter, Cirrus, and integration tests; and
- we do not want to manually manage updating this version

This commit:

- adds a CI task to open a new PR for new application-services
  nightlies.

Fixes https://github.com/mozilla/experimenter/issues/9688
2024-01-31 22:19:56 +00:00
Barret Rennie a4f33e5ebf
bug(cirrus): Revert "Run cirrus pytest command in verbose mode (#10084)" (#10175)
Because:

- #10084 stopped Cirrus tests from running in CI

This commit:

-  reverts commit aad815110c (#10084).

Fixes #10174.
2024-01-31 01:44:46 +00:00
Barret Rennie a9cceb323c
feat(nimbus): Upgrade sdk integration tests to modern application-services (#10148)
Because

- The sdk integration test image was stuck on application-services
  v97.5.1 due to build system changes, which prevented landing any new
  targeting using new targeting attributes from v98 onwards.
- The current system of periodically pushing a integration test image
  and pulling that pre-built image in tests lead to headaches and
  issues.
- I discovered several oddities in the current
  integration-test-nimbus-rust setup (specifying a webdriver driver,
  sudo commands that never ran because sudo was not installed).
- The new application services has a very different NimbusClient
  interface from the one currently used in tests.

This commit

- Adds a `experimenter:megazords` container, which is responsible for
  downloading a tagged nightly of the Cirrus and Nimbus-Experimenter
  megazords.
- Adds a new `experimenter:integration-tests` container, which takes the
  place of the old "nimbus-rust-image" container. This container is very
  barebones, and only includes the application services megazord (copied
  from the other container) and tox.
- Removes the old `Dockerfile-rust-image` and its publishing steps from
  CI.
- Configures our integration tests to build the image on the fly instead
  of pulling a pre-built image from a registry.
- Cleans up a few things in the `test_mobile_targeting.py` suite and
  updates the code to match the new interfaces.
- Updates the `integration_test_nimbus_rust` task to run tox with `-vv`,
  which includes the output of any commands issued.

Fixes #9820
2024-01-26 19:16:00 +00:00
Priyanshi Gaur aad815110c
Run cirrus pytest command in verbose mode (#10084)
This commit
- runs `make cirrus_check` in verbose mode.

Fixes #9148

Signed-off-by: Priyanshi Gaur <noxdot1134@gmail.com>
2024-01-22 18:50:25 +00:00
Jared Lockhart cc0228eeec
chore(project): add a flag to disable/enable cirrus (#9916)
Because

* Building Cirrus can be time consuming
* Cirrus is not necessary for many integration tests or local workflows
* We can add a flag to enable/disable cirrus to speed up the integration
tests or local workflows that don't involve Cirrus

This commit

* Adds a flag to enable/disable Cirrus in the Makefile
* Sets the flag automatically for all Cirrus make commands
* Sets the flag for Cirrus integration tests

fixes #9910
2023-12-07 19:50:36 +00:00
Barret Rennie 9c9fd6d687
feat(nimbus): Include fetch summary in update_external_resources PR (#9816)
Because

- fetching feature manifests can fail (see #9804 for an example);
- the fetch command does not hard fail when an individual fetch fails;
and
- we are generating a summary of all the fetches

This commit

- updates the fetch command to hard fail if there are fetch failures and
no
  successes (i.e., in the case where it would not open or update a PR);
- adds a flag to the fetch command to write the summary to a file; and
- opens and updates PRs with a summary of the fetches in the PR
description

Fixes #9815
2023-11-24 19:41:42 +00:00
Barret Rennie ce675297c1
bug(nimbus): Run should-pr.py with Python 3 (#9826)
Because:

- should-pr.py is written in Python 3; and
- the default Python on Ubuntu 20.04 is Python 2.7

This commit:

- explicitly runs should-pr.py with Python 3 in CI.

Fixes #9825
2023-11-24 17:57:22 +00:00
Jared Lockhart 3985384ade
chore(nimbus): only run integration tests for a single app (#9762)
Because

* We run many integration tests against many applications for coverage
* As we add more applications, we don't want to disrupt the existing
tests
* Some integration tests were specifying applications by excluding other
applications becuase IOS and FOCUS_IOS would both match the same string
IOS
* This was resulting in some test runs running against multiple
applications which is slowing down CI and PRs

This commit

* Renames applications to have unique names
* Updates all the config references to use those names

Fixes #9718
2023-11-23 20:48:41 +00:00
Barret Rennie 0def0132ae
feat(nimbus): don't open PRs for just ref-cache changes (#9807)
Because

- we only want to merge PRs that have feature configuration changes

this commit

- adds a script to check if there are only `.ref-cache` changes;
- updates the `update_external_configs` CI job to call that script and;
- only push to the `external-config` branch and open PRs if that script
reports changes.

Fixes #9806
2023-11-22 18:46:35 +00:00
Barret Rennie 10be90af41
feat(nimbus): Fetch features from FML apps going back 5 versions (#9686)
Because

- we want to keep track of features on individual product versions

This commit

- fetches features from releases going back 5 versions in FML apps; and
- does not do an initial import for the FML apps because it is a very
  large change (see #9751).

Fixes #9685
2023-11-16 20:44:53 +00:00
Jared Lockhart 3d2146b67d
chore(project): push to a new dockerhub tag (#9753)
Because

* We have seen failures while pulling from dockerhub tags
* This may be caused by the tag being corrupted after being in use for
so long
* Let's try pushing to a new tag to see if we see the same failures

This commit

* Pushes to a new experimenter tag in dockerhub

fixes #9752
2023-11-15 22:27:05 +00:00
Barret Rennie 46b177f87e
bug(nimbus): hardcode dockerhub repo when pulling integration test image (#9717)
Because:
- #9712 broke integration tests on fork PRs by referencing
$DOCKERHUB_REPO, which is not available in fork PRs

this commit:
- hardcodes the dockerhub repo (mozilla/experimenter) for pulling the
image, which will allow fork PRs to run integration tests.

Fixes #9716
2023-11-09 22:59:01 +00:00
Barret Rennie ba85d17570
bug(nimbus): Fix integration tests by reverting #9694 (#9712)
Because:

- #9694 broke integration tests;

This commit

- reverts #9694; and
- adds an explicit pull of our integration test image in our CI
workflow.

Fixes #9707
2023-11-09 21:23:19 +00:00
Barret Rennie 338dc7bdd6
feat(nimbus): Fetch A-S megazords from Taskcluster (#9694)
Because

- we don't want to manually build application-services megazords
  ourselves for each container; and
- application-services publishes megazord artifacts on Taskcluster

This commit

- adds a new as-builder docker container to download cirrus and nimbus
  megazords with the appropriate binaries for the platform as Python
  packages;
- updates the cirrus and experimenter containers to copy the megazords
  from the as-builder container;
- updates cirrus and experimenter to refer to the new megazord packages;
- updates cirrus to be based on Debian Bullseye so it can use the
  generated binaries; and
- updates the Dockerfile-rust-image container to be built on top of
  as-builder in CI.
2023-11-08 18:40:54 +00:00
Barret Rennie aed924f210
bug(nimbus): don't use multiplatform builds in CI (#9697)
Because

- the default docker builder does not support multi-platform builds

This commit

- removes multi-platform build support from our Makefile.
2023-11-08 16:37:48 +00:00
Barret Rennie 0efd80acea
bug(nimbus): don't use cloud builder in CI (#9693)
Because

- we just disabled HydroBuild in CI (#9680)

This commit

- configures our CI to not use cloud builders.
2023-11-08 00:24:47 +00:00
Jared Lockhart ca44c60e73
fix #9679 chore(project): remove hydrobuild (#9680)
Becuase

* We were evaluating Docker Hydrobuild as part of its beta program
* We did not find that it improved CI times

This commit

* Removes Docker Hydrobuild from CI

Co-authored-by: Yashika Khurana <yashikakhuranayashika@gmail.com>
2023-11-07 22:04:05 +00:00
Yashika Khurana 51e43b776a
fix #9387 feat(cirrus): Cirrus demo app integration tests (#9658)
Because

- We have a demo app that can test the integration end to end, it has
the frontend and backend.
- We could stand up the experimenter, launch the experiment or rollout,
and push to RS, Cirrus can sync to RS and then the frontend can send a
request to the backend and then backend can reach out to Cirrus and can
ask for the feature config
- When the backend receives the response, can send the response back to
the frontend

This commit

- Tests end-to-end integration between the experimenter, RS, Cirrus, and
Demo app
- Test both the experiment and rollout end to end

fixes #9387
2023-11-03 19:47:01 +00:00
Jared Lockhart bba7fd789b
fix #9271 chore(project): dockerize schemas (#9616)
Because

* As we add a wider variety of elements to the Nimbus project including
binary packages it becomes increasingly important to have a consistent
environment for each of our modules
* Using Docker allows us to control the environment each module runs in
and use a consistent base layer
* Dockerizing the schemas package will allow us to use identical Python,
Node, and Rust environments as the other modules in Nimbus

This commit

* Wraps the schemas module in a Dockerfile that is consistent with the
other modules in Nimbus
2023-10-24 20:30:55 +00:00
Jared Lockhart 7a6274cdef
fix #9633 feat(project): push docker images to gcr (#9634)
Because

* We've been seeing consistent intermittent failures with pulling images
from dockerhub
* An alternative is to use the Google Container Registry instead of
Dockerhub
* If we have better luck with Google Container Registry then we can use
that and deprecate Dockerhub

This commit

* Pushes to Google Container Registry in addition to Dockerhub
2023-10-24 20:08:24 +00:00
Jared Lockhart 7d99a49089
fix #9536 chore(project): enable hydrobuild (#9580)
Because

* We enabled the experimental Docker Hydrobuild remote builder for our
CI jobs
* Hydrobuild experienced an outage that prevented our CI jobs from
running
* We disabled Hydrobuild until it could be rectified by the Docker team
* Fixes have been deployed and it should now be safe to re enable

This commit

* Re enables Docker Hydrobuild in CI
2023-10-16 17:20:47 +00:00
Jared Lockhart 612b09d474
fix #9545 bug(project): docker login necessary for deploy (#9546)
Because

* When we disabled hydrobuild we also disabled logging into docker
* Logging into docker is necessary at the deploy step

This commit

* Logs into docker if possible but disables hydrobuild
2023-10-03 23:35:25 +00:00
Jared Lockhart 52f59e2d75
fix #9543 bug(project): disable multiplatform builds (#9544)
Because

* We disabled Hydrobuild in #9535
* We must also disable the multiplatform builds in the deploy step if
Hydrobuild is unavailable

This commit

* Disables multiplatform builds in the deploy steps of Experimenter and
Cirrus
2023-10-03 22:10:12 +00:00
Jared Lockhart dae523a00d
fix #9535 bug(project): disable hydrobuild (#9537)
Because

* Docker Hydrobuild has stopped functioning and is blocking our CI tasks

This commit

* Disables Docker Hydrobuild until it is functioning and we can re
enable it
2023-10-03 20:47:05 +00:00
Jared Lockhart fffb23d3b2
fix #9509 bug(nimbus): add env file to fetch external configs in circle (#9510)
Because

* We recently moved the FML parsing into the Experimenter container as
part of fetching external configs
* The Experimenter container requires an environment file to start

This commit

* Uses the .env.sample file as part of the fetch_external_configs circle
task
2023-09-27 19:27:02 +00:00
Jared Lockhart b2bc1a8e47
fix #9472 chore(project): add arm64 support in circle (#9473)
Because
    
* We now include binary assets that must target both amd64 and arm64
* We must verify that these are available and functioning in CI
    
This commit
    
* Adds an arm64 instance for cirrus and experimenter check to verify
that our containers will build and run on both platforms
* Disables path checks for changes in the root project dir or .circleci
folder or on main branch so that we run all tests if anything project
wide changes
* Removes now redundant branch/main copies of experimenter since path
checks will be disabled on main
2023-09-22 17:12:30 +00:00
Jared Lockhart bca4573b9d
fix #9461 chore(project): parameterize setup docker in circle (#9462)
Because

* We have many tasks in Circle that depend on a Docker account
* The docker account depends on which module is being tested ie
Experimenter, Cirrus
* We should explicitly parameterize the Docker setup step with the
credentials needed for that module

This commit

* Parameterizes the setup_docker step in circle
* Uses the appropriate credentials for each of Experimenter and Cirrus
in each circle task
2023-09-21 15:29:12 +00:00
Jared Lockhart 2e26b7eb8e
fix #9458 bug(cirrus): use cirrus credentials to log into dockerhub (#9459)
Because

* The docker login step for deploying cirrus was removed in a previous
pr
* This login step is necessary becuase cirrus uses different credentials
than experimenter to deploy to dockerhub

This commit

* Restores the docker login command to the cirrus deploy step
2023-09-20 20:55:51 +00:00
Jared Lockhart 42db38a9a3
fix #9451 chore(project): build multiple docker platforms in circle (#9452)
Because

* We can now target multiple platforms in our Docker builds in Circle

This commit

* Enables multiplatform builds for Docker in Circle
2023-09-20 20:30:37 +00:00
Jared Lockhart bc27ee215a
fix #9443 bug(project): disable hydrobuild for prs (#9446)
Because

* Docker Hydrobuild requires access to environment secrets
* PRs from forks will not have access to environment secrets

This commit

* Disables hydrobuild for PRs that do not have access to secrets
* Re enables Circle docker layer caching

---------

Co-authored-by: Mike Williams <102263964+mikewilli@users.noreply.github.com>
2023-09-19 19:13:51 +00:00
Jared Lockhart c44fb70587
fix #9391 chore(project): use docker hydrobuild (#9392)
Because

* We now have access to Docker Hydrobuild
* This allows us to use a shared cloud builder for our docker images so
we can share a build cache between CI and local dev

This commit

* Updates the makefile to explicitly use docker buildx
* Updates the circle config to install the latest docker client and
setup a cloud builder
2023-09-15 20:17:24 +00:00
Mike Williams 60d6c69389
fix #9156 feat(schemas): typescript schema generation and npm publish (#9157)
Because

- we want to use the population sizing schemas for graphql and UI

This commit

- sets up generation of typescript schemas from the pydantic schemas
- sets up publishing the typescript schemas to npm
2023-08-11 20:56:49 +00:00
Charlie 52817e4ba1
Fix #9073 feat(cirrus): Record enrollment metrics (#9140)
Because

- Enrollment metrics are necessary for experiment analysis

This commit

- Defines the method by which the Cirrus container records enrollment
metrics

---------

Co-authored-by: yashikakhurana <yashikakhuranayashika@gmail.com>
2023-07-21 20:04:47 +00:00
Jared Lockhart d6543f7209
fix #9133 chore(project): fix make check schemas command in circle (#9134)
Because

* We recently renamed some commands in the circle config for consistency
* We accidentally broke the make command for checking the schemas
* It was missed because they didn't run becuase they failed the path
check

This commit

* Fixes the make check schemas command in the circle config
2023-07-17 15:22:52 +00:00
Jared Lockhart bdac24c367
fix #9107 chore(cirrus): Push to dockerhub (#9118)
Because
    
* Now that the cirrus container is ready for use we need to deploy it to
dockerhub
    
This commit
    
* Adds a circle step to build and deploy the cirrus container to
dockerhub

Co-authored-by: yashikakhurana <yashikakhuranayashika@gmail.com>
2023-07-14 14:13:27 +00:00
Mike Williams 843d31722d
fix #8983 fix(schemas): make schemas deploy dependent on install and build (#8984)
Because

- twine isn't installed until poetry installs dependencies
- `poetry build` doesn't install dependencies

This commit

- adds the `schemas_install` to the deploy's prereqs
2023-06-15 20:29:52 +00:00
Mike Williams 850ae9327f
fix #8981 fix(schemas): use make commands for schemas deploy (#8982)
Because

- the circle config was assuming package directory
- the circle working dir was not set
- the circle image could not find the package to build/deploy

This commit

- uses make commands that drop into the correct directory before
building and deploying
2023-06-15 18:12:45 +00:00
Mike Williams 6024f10d82
fix #8848 feat(nimbus): add pypi publishing of schemas package (#8939)
Because

- we want to use the new schemas in various places

This commit

- sets up automatic publishing to PyPI
2023-06-15 17:38:01 +00:00
Jared Lockhart 72783b9313
fix #8958 bug(project): run experimenter unit tests in circle (#8959)
Because

* We recently refactored the circleci config to update the path checks
* In the course of doing so we removed the command to actually run the
experimenter unit tests. Whoops!

This commit

* Restores the make check command to the experimenter unit tests in
circle
2023-06-13 06:23:09 +00:00
Jared Lockhart 487392b7c3
fix #8306 chore(project): update circle file path checks (#8949)
Becuase

* The experimenter repo now hosts many projects
* Not all tests will be related to changes in all of those folders
* We can conditionally check which tests to run based on the paths of
changes in a PR

This commit

* Updates all of the file path checks on all of the circleci tasks so we
don't run unnecessary tests in PRs
2023-06-12 19:13:07 +00:00
Mike Williams a2de3aebd3
fix #8842: add jetstream/analysis schemas (#8847)
Because

- We want to have a better data contract between Jetstream and
Experimenter

This commit

- Creates schemas for the data products that Jetstream produces
- Adds a general python package structure with basic schema tests
2023-06-09 20:12:34 +00:00
Jared Lockhart 453255c31f
fix #8839 chore(project): update circleci images (#8905)
Because

* We haven't updated our circle images in 2 years

This commit

* Updates to the latest circleci images
2023-06-06 14:50:47 +00:00
Benjamin Forehand Jr 1c3f002612
fix #8827 chore(ci): Enable reruns for integration tests on CI (#8840)
Because:
* We disabled reruns locally and on CI

This commit:
* Re-enables reruns on CI
2023-05-18 17:30:05 +00:00
Jared Lockhart aeeae52d7e
fix #8707 bug(project): check not running on main (#8838)
Because

* We run make check on each branch but also on main before deploys
* This last check is to make sure that main is still in a healthy state
before it is deployed
* We added path filters to prevent certain circle tasks from running
depending on which files were changed
* This path filter was preventing make check from running on main

This commit

* Splits the check job into two, one for branches that includes the path
check, and one for main that excludes it
2023-05-16 16:57:55 +00:00
Jared Lockhart fb1123c751
fix #8767 bug(nimbus): disable parallel for enrollment tests (#8768)
Because

* We've been seeing intermittent failures in the enrollment integration
tests
* It may be caused by parallel tests colliding when they reset the ping
server cache

This commit

* Disables parallel runs for the enrollment integration tests
2023-05-02 21:35:30 +00:00
Benjamin Forehand Jr 9e155c49e1
fixes #8744 chore(Nimbus): Add HTML report generation and gathering for integration tests (#8745)
Because:

* Diagnosing errors on CI can be hard without seeing what the page looks
like

This Commit:

* Adds HTML reporting which will include screenshots for debugging
errors.
2023-04-24 18:44:36 +00:00
Jared Lockhart 2acefcedda
fix #8705 chore(project): check file paths in nightly targeting tests (#8706)
Because

* We only need to run the targeting tests for changes in the experiments
or targeting apps
* We were checking those file paths in the release and beta circle runs
but not nightly

This commit

* Adds the correct file path checks to the nightly targeting run
2023-04-18 18:50:57 +00:00