Test stability has dropped with the change to node 16. Until we can resolve it we're reverting to 14. Local dev will continue on 16 in order to be able to fix the problems.
As part of updating to node v16 we found the "normal" upgrade path for mozilla/fxa-circleci to be problematic.
CircleCI has also changed their recommended base image to be cimg/node.
Our mozilla/fxa-circleci image has shrunk over time to now be a thin wrapper over circleci/node that adds firefox esr. Instead of maintaining our own image the recommended circleci/browser-tools orb can take care of firefox version for us.
Because:
* Having a toggle to deactivate use of Firestore drastically increases
code complexity.
This commit:
* Requires Firestore for running auth-server and uses the emulator for
local running.
Closes#10710
This eliminates the runtime dependency of auth-server on auth-db-mysql. It's no longer required to run the auth-db-mysql process in production for the auth-server. This change doesn't completely remove the need for auth-db-mysql, email-service still needs it, and in dev a portion of it is required to run migrations, but it should now be considered deprecated and we should continue working to remove it completely.
Because
* We want to publish Storybook builds to preview component work
This commit
* Integrates [mozilla-fxa/storybook-gcp-publisher](github.com/mozilla-fxa/storybook-gcp-publisher) into the CircleCI flow so that Storybooks are built and published to a Google Cloud static site for every test run
EXP-281
- We have two clients for the auth-server API, one in `content-server/app/scripts/lib/auth` and `fxa-js-client`. The content-server one was meant to replace fxa-js-client but I didn't finish the work to get it running on nodejs.
- Extracts the content-server implementation into `fxa-auth-client`
- Wraps the implementation with shims to work with nodejs in `server.ts`
- Updates references to fxa-js-client to use fxa-auth-client
- Removes fxa-js-client
In dev we want to be able to go from a `yarn install` to
running code but we also want to keep typescript as a
devDependency for production builds where we have an
explicit build phase then --production install. To keep the
production install from failing on the postinstall we need
it to succeed even if tsc is missing, hence the `|| true`.
When a password change is required the lockedAt flag is set, currently by an external script. Until the password is changed all sessions for such an account must be verified. The 'password-change' verificationReason is returned in the response to tell the frontend to show the change password ui. The resetAccount db procedure resets the lockedAt value to null when the password is changed.
In order to keep the typescript shared modules up to date for their dependents to use while running locally this adds them to pm2 so that a `tsc --watch` can run alongside the other services.
Note, this DOES NOT automatically restart dependent javascript service processes.
This change refactors pm2-all.sh in order to start processes in dependency topological order. This requires an update to most pm2.config.js files in order to set PATH correctly while running under yarn.
with hoisted eslint dependency `npm run lint` can't find
eslint on the path. We've got linting globally as a precommit
hook, it doesn't need to run on tests.
Because:
- MX record validation was a successful experiment
This commit:
- Remove the experiment code around the feature
- Add a config to enable/disable the feature
- Add a config to exclude some domains
fxa-shared is a mix of typescript and javascript. When we started using workspace:* references I converted all of our require paths for fxa-shared to remove the ../../ relative paths. In doing so I also changed some requires that looked like require('fxa-shared').l10n.localizeTimestamps to require('fxa-shared/l10n/localizeTimestamps'). The problem with that isn't immediately clear because in local development and CI it works fine because of ts-node/register. The problem is that localizeTimestamps is typescript and production doesn't use ts-node so it has no idea how to load it. Going through the object chain on require('fxa-shared') works because 'fxa-shared' resolves to the compiled 'dist/index.js'. The other way resolves to the source directory where there is no js file. Ok, so we should always do require('fxa-shared').whatever, well, no. There's currently cases where we have to go the other way. It's inconsistent, and we should fix it.
This commit fixes those require paths.
It also fixes a runtime path issue with our docker images. Our current production configuration expects each app to be located at /app, but now after switching to yarn most of our dependencies live two directories up from the app code, and the way that our internal dependencies, like fxa-shared, are accessed is via a relative symlink setup by yarn. So there's not room for these paths without changes. Instead of copying things like before, this change creates a root /fxa directory with the whole project and creates a symlink to /app for whichever service it's for.
- post a comment on PRs for storybook deploy when relevant
- tweaks to CircleCi config to build & deploy storybooks for pull
requests and master merges
- try to avoid building storybooks if the packages are not in
packages/test.list generated by base-install
- updates for yarn
- tweaks to use github personal access token
- refactor storybook webpack customizations to use shared function in
fxa-react, along with fixes to module resolution
- add fxa-content-server as dependency for fxa-react, since it seems to
reuse content server styles that, in turn, need photon-colors
issue #5385
Because:
We need to begin sharing at least hooks and images alongside components. Components should live in fxa-react/components/ instead of root-level fxa-components.
Functional tests have grown increasingly unstable on medium size
and sometimes require multiple retries to pass. Increasing to
medium+ seems to have helped stability.
Including fxa-circleci in the /packages folder was awkward
since it isn't part of the deployment and needed some special
handling in the test/build process.
This attempts to make that better.
This reduces the boilerplate when all your package
needs is to copy the contents of it's own directory to /app
and a pm2.config.js file exists
To allow more packages to use the default, /fxa-geodb and
/fxa-shared are included in the fxa-node base image.
Custom images can still be made by having a Dockerfile as before.
This adds a base node image and builder image so
that all our service images can share the same
common base, be smaller, and require less customization.
Because:
* New graphql-api server doesn't exist yet.
This commit:
* Duplicates the admin-server project, with admin-server specific bits
removed.
* Links in necessary build portions to circleci.
Closes#4812