Uploaded image for project: 'Node.js Driver'
  1. Node.js Driver
  2. NODE-4869

improve mongodb-client-encryption release process

    • 2
    • Needed
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?

      We release from the latest master on libmongocrypt.  While this is convenient for libmongocrypt bug fixes, this means that we never pin to a version of libmongocrypt and potentially release mongodb-client-encryption with in-progress changes.  We should instead release from a git tag and pin to particular versions of libmongocrypt.

      While we're making this change, we should consider making our prebuild process explicit.  Currently, the prebuild script runs with every node tasks and makes itself a no-op when there are no changes to release.  It also has hard-coded logic to determine the architecture of the current system and conditionally run prebuild.

      We could instead pipe an environment variable down from the config to control which build variants we want to release from.  This makes our build matrix explicit and easy to control, and removes the potential for multiple build variants to release the same package (our logic currently allows this for tasks run on the same evergreen distro).

      Acceptance Criteria

      • Add tooling to download a prebuilt version of libmongocrypt.
      • Add a task that pulls libmongocrypt from a particular version, compiles mongodb-client-encryption, and tests it.
      • Add a release task that does nothing if the package.json version has not changed (we already do this).  The release task builds and releases from a pinned libmongocrypt version.
        • This can re-use the previous bullet's task.
      • Remove release logic from the existing CI tasks but leave the capability to test against master / a branch.
      • Add a github action that auto-updates the pinned version of libmongocrypt.
        • the action triggers off of a new release tag for libmongocrypt being published
        • the action adjusts the pinned version of libmongocrypt in the Node bindings
        • the action creates a PR and applies any necessary information to trigger an automation that creates a Jira ticket (work with Jess to create the automation)

            Assignee:
            Unassigned Unassigned
            Reporter:
            bailey.pearson@mongodb.com Bailey Pearson
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: