Skip to content

Publishing a New Version

Carter McBride edited this page Aug 8, 2023 · 25 revisions

Only Adobe employees are eligible to publish new extension versions.

One week prior

Update Alloy reference

Often, the AEP Web SDK and AEP Web SDK Launch extension will be released in tandem. If changes in the extension require an updated Web SDK version, follow these steps:

  1. Initialize a new release in Alloy. You may have already done these first 3 steps as part of the Alloy release process.
  2. Drag the Alloy release card to either the "Alpha" or "Beta" column.
  3. Wait for the release to complete. The library must be pushed to NPM before the next step.
  4. In the launch extension repo, run the following command: npm install @adobe/alloy@next
  5. Commit the change, open a PR, get reviews, and merge into main.

The automated release process will update this reference whenever a new release occurs. It will update it to the greatest release number that has the same major, minor, and patch number.

Build a prerelease version

  1. Navigate to the Initialize Intended Release Workflow on GitHub. Click "Run workflow". Choose "main" as the branch, and type in the appropriate release type (major, minor, or patch).
  2. Wait for the workflow to complete.
  3. Navigate to the Release Project. Drag the card that was just created from the "New" column to the "Beta" column.

Once the deploy workflow is complete, you should see the new extension version in Launch under the Unified JS org.

Pre-release steps

  1. Check the release notes on GitHub for the alpha and beta releases. Remove anything that shouldn't be user facing by adding the label "ignore-for-release" to the PRs. Update the title of any other PRs with something that is user facing (try to use past tense.) For any releases that should be updated, you can re-generate the release notes by: edit the release, delete the existing notes, click the auto-generate button, click save.
  2. Ping Vlad Falon on the alloy-docs slack channel with a link to the release notes on GitHub, along with the intended release date. Ask him to create a release notes PR.
  3. Test features and fix any bugs with pull requests. New commits on main will trigger a new alpha version automatically.
  4. Notify the Launch team in #launch-runtime of the intended release date so they can schedule time for the manual review. (They need about a week head's up)

Week leading up to release

Any new commits or merges to main will trigger a new release build, and a new version pushed to Launch. Complete any testing and bugs fixes during this time.

Manually trigger new release build

If you made a change to Alloy without a change to the extension, you will need to manually trigger a new release build. Merges and commits to the extension will do this automatically.

  1. Navigate to the Trigger Release Workflow.
  2. Click the Run workflow button, and ensure the "main" branch is selected.

Day of release

  1. If the new extension version depends on a new Alloy version, ensure Alloy has been released.
  2. Drag the release card to the "Release" column.
  3. Wait for the build to complete.

Final release steps

  1. Fill out the Launch Internal Extension Release form requesting that the extension be released to public availability.
  1. Tell the Launch team that the extension is ready to be reviewed.
  2. This is the time to do any last minute testing of the final extension build.
  3. Ensure the release notes pull request has been merged. Launch customers upgrade quickly and like to know what is in the version.
  4. Tell the Launch team in #launch-runtime that the extension is ready to be made publicly available.
  5. Once the extension has been released to public availability, it's time to update JIRA. First, for each JIRA issue listed for the release in the Release Planning wiki, add a fix version of alloy-0.0.1, where 0.0.1 matches the version you just released. If the issue is a customer facing feature, it should be reported to Adobe Experience Platform management and in the Adobe Experience Platform release notes by adding a fix version of AEP20.11, where 20 is the current year and 11 is the month, and adding text to the Public Comment field reflecting what you want displayed as the release note.
  6. After fix versions have been added, go to Releases, click the pertinent Alloy release, and make sure all the relevant issues are included and have been completed. Navigate back to the Releases, click the ... next to the Alloy release, and click the "Release" menu option.

Manual Steps

  1. Ensure you have extension upload rights for the Launch product within the Unified JS Lab Experience Cloud organization. If you need to be given rights or want to make sure you have rights before proceeding, please send a message to the internal alloy-private-engs Slack channel and someone with admin rights can help you.
  2. Go to the Adobe I/O Console and create an integration. Please see these instructions in the Adobe Launch developer documentation on how to create an Adobe I/O integration for uploading Launch extensions. After completing the instructions, you should have a private key somewhere on your hard drive which you will use later to upload and release the extension.
  3. Make sure you're on the main branch and have pulled the latest changes.
  4. Follow the steps above under "Update Alloy Reference".
  5. Run npm ci to ensure you have the latest dependencies.
  6. Run npm version minor replacing minor with major or patch as needed. This will update the extension.json version as well.
  7. Run git push origin main --follow-tags
  8. Run npm run package
  9. Run the following command to upload the zip file to Launch, except replace the arguments to match the Adobe I/O integration you previously created: npx @adobe/reactor-uploader --private-key=/Users/jane/launchkeys/reactor_integration_private.key --org-id=97D1F3F459CE0AD80A495CBE@AdobeOrg --tech-account-id=14A533A72B181CF90A44410D@techacct.adobe.com --api-key=192ce541b1144160941a83vb74e0e74d --client-secret=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. See the reactor-uploader documentation for more information. You may want to create a bash script that you can easily re-run in the future, but don't commit it to the git repository because the argument values will be specific to your Adobe I/O integration and may contain sensitive information. You can add your script's filename to a global .gitignore on your machine if you'd like.
  10. Once the zip file has been uploaded and processed, the new version will be available only to Launch properties configured for extension development within the Unified JS Lab organization. A property is configured for extension development if, during property creation, the creator checked the "Configure for extension development" checkbox found under "advanced options". Within a property configured for extension development within the Unified JS Lab within Launch, install (or upgrade to) the latest extension version, create some rules, create a library containing all the resources, and build the library. Then, place the Launch dev environment's embed code on a test page and test that your rules run properly. These steps are documented in more detail in the Adobe Launch developer documentation. You can continue uploading code changes for the extension without having to increment the extension version as long as the extension is in development availability (we'll promote it to private availability later).
  11. Go to the releases page of this repo, click "Draft New Release". Choose the tag created for the release, and upload the package zip file as an asset. Save the new release.
  12. If there are bug fixes, add them as PRs and merge. Then follow the previous instructions to release another prerelease version (i.e. 0.0.1-beta.1).
  13. Promote the extension to private availability using @adobe/reactor-releaser using the same parameters as @adobe/reactor-uploader except do not include the name of the package.
  14. Follow the steps under "Pre-release steps".
  15. Follow the steps under "Final release steps".