Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: internal release 0.14.0 #13155

Merged
merged 173 commits into from
Aug 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
173 commits
Select commit Hold shift + click to select a range
a150b55
chore(hardware): format time in sensor logs (#12984)
anuwrag Jun 27, 2023
4b2cd5c
fix(api, hardware-testing): update plunger speed/currents (#12987)
andySigler Jun 27, 2023
ce5c4b5
fix(shared-data): remove deprecated 'ot3' tip rack defs (#12947)
b-cooper Jun 27, 2023
b4e8604
chore: `make push` in dependency order (#12977)
SyntaxColoring Jun 27, 2023
1741d29
fix(app): Labware Setup DQA fixes (#12980)
jgbowser Jun 27, 2023
8459197
fix(app): center align run failed splash screen text (#12989)
jgbowser Jun 27, 2023
397842a
fix(hardware): stop ot3 controller tests hanging (#12994)
fsinapi Jun 27, 2023
87bff1b
feat(protocol-designer, step-generation, components): pipette edit, m…
jerader Jun 27, 2023
dd8efa6
add delay before caching instruments (#12996)
andySigler Jun 28, 2023
e12ff88
fix(hardware-testing): Actually use increment protocols so correct la…
andySigler Jun 28, 2023
fc667aa
feat(robot-server): Present error codes in error responses (#12969)
sfoster1 Jun 28, 2023
5d47a9c
fix(app): DQA for pipette detach flow [RAUT-420] (#12974)
ewagoner Jun 28, 2023
4a5d856
fix(app): Fix protocol setup screen dqa3 (#12950)
koji Jun 28, 2023
5fe3f13
refactor(protocol-designer): module tags for OT-2 (#12993)
jerader Jun 28, 2023
84b46d8
fix(shared-data): exclude module calibration adapters from being rend…
vegano1 Jun 28, 2023
8259fc6
fix(app): fix Touchscreen Sleep scrolling issue (#12992)
koji Jun 28, 2023
d5647db
fix(app): Dashboard DQA [round 2] (#13002)
jgbowser Jun 28, 2023
cba2f3c
refactor(api): Refactors ahead of ProtocolEngine-based opentrons.exec…
SyntaxColoring Jun 28, 2023
93dfb87
fix(app): round 1 DQA on LPC in ODD (#12967)
b-cooper Jun 28, 2023
3c7a8d1
update after building hcapi (#13014)
andySigler Jun 29, 2023
a92474d
change all tipracks names to use flex instead of ot3 (#13012)
andySigler Jun 29, 2023
4142bdd
feat(step-generation, protocol-designer): add timeline error for off …
jerader Jun 29, 2023
7c2cd22
fix(app): add box shadow to sticky header on ODD settings page (#13013)
jgbowser Jun 29, 2023
3bfe77d
fix(app): add box shadow to sticky header on ODD settings page (#13013)
jgbowser Jun 29, 2023
8b395aa
fix(hardware-testing): Bug in checking reservoir volume and tip-rack …
andySigler Jun 29, 2023
5ddc196
fix(app): update ODD unfinished route path when update not necessary …
shlokamin Jun 29, 2023
b1c956f
feat(app): send fatal ODD browser logs to electron layer (#13017)
shlokamin Jun 29, 2023
c9e15b7
feat(app): add a new type for red frame (#13011)
koji Jun 29, 2023
d02dc6f
feat(hardware-testing): 96ch working on scale (#13019)
andySigler Jun 30, 2023
c02954a
fix(app): labware setup modal updates to match designs (#13018)
jgbowser Jun 30, 2023
c93aa42
Add go back button to still attached modal [RAUT-420] (#13020)
ewagoner Jun 30, 2023
6ecbd96
feat(app): add instructional animations to manual move labware interv…
b-cooper Jun 30, 2023
14eb873
feat(app, components): add a new const to spacing constants (#13029)
koji Jun 30, 2023
645eafc
adds make get-latest-tag (#13027)
andySigler Jul 3, 2023
006cf95
chore(hardware): can motion log analyzer (#13032)
sfoster1 Jul 3, 2023
2f52256
chore(hardware): plot z and gripper (#13034)
sfoster1 Jul 3, 2023
8f3a979
fix(hardware-testing): Retract farther away from scale (#13031)
andySigler Jul 3, 2023
a247d51
chore(hardware): analyze older serial logs (#13037)
sfoster1 Jul 3, 2023
c968f72
bring back tip-presence detection (#13035)
andySigler Jul 4, 2023
56f74e1
fix(hardware): make the error message from move group runner include …
ryanthecoder Jul 5, 2023
87d1e0a
fix(app): fix ui components (#13039)
koji Jul 5, 2023
476aeea
fix(app): change overflow-wrap for a long name protocol (#13036)
koji Jul 5, 2023
68514d2
fix(app): toast and snackbar tweaks [RAUT-379] (#13030)
ewagoner Jul 5, 2023
8ed3cbd
feat(app,components): add deck map SlotLabels component (#13024)
brenthagen Jul 5, 2023
f6131ab
fix(hardware-testing): 96ch photometric confirm volume at beginning (…
andySigler Jul 5, 2023
9ac2908
feat(protocol-designer, components): some more misc things for trash …
jerader Jul 5, 2023
fc94a4f
share labware offsets between all tip-rack adapters (#13044)
andySigler Jul 5, 2023
8280fb0
feat(app): add e-stop screen (#13010)
koji Jul 5, 2023
f524c66
feat(protocol-designer): add flex slot labels to protocol designer de…
brenthagen Jul 5, 2023
2249c7a
refactor(app): update buttonType prop in smallbutton and largebutton …
koji Jul 5, 2023
0c787ba
feat(hardware-testing): measure evaporation loss and update liquid he…
andySigler Jul 6, 2023
4becec5
fix(api): Position plunger to bottom before picking up a tip (#13049)
andySigler Jul 6, 2023
f3655d8
feat(app): add heater-shaker confirmation modal (#13023)
koji Jul 6, 2023
9d0c60f
refactor(shared-data): allow all flex tipracks (#13051)
jerader Jul 6, 2023
84c0a0e
fix(app): prevent longpress to analysis failed protocol (#13050)
koji Jul 6, 2023
4635318
fix(api): fix thread manager definition (#12948)
pmoegenburg Jul 6, 2023
7f99ed9
feat(api): support overpressure monitoring for multiple mounts (#13021)
Laura-Danielle Jul 7, 2023
434168a
feat(api): add retract_axis to OT-2 and FLEX hardware-control api (#1…
ahiuchingau Jul 7, 2023
056bdcf
feat(hardware): Added a driver to read and write data from the Flex e…
vegano1 Jul 7, 2023
70db99d
chore: Clarify RELEASING.md (#13059)
SyntaxColoring Jul 7, 2023
8fb3d31
feat(hardware): added a script write and interact with data on the Fl…
vegano1 Jul 7, 2023
d7b8e50
feat(protocol-designer, step-generation): createFileWizard and moveLa…
jerader Jul 7, 2023
47f4263
refactor(app): zAxis error occurs during Mounting plate step (#12911)
jerader Jul 7, 2023
03bb475
feat(api, app): add engine command for retracting axes and retract a…
sanni-t Jul 7, 2023
6d9fe99
feat(app): run cancelling modal for odd (#12939)
jerader Jul 7, 2023
0cb497e
feat(hardware-testing): Option to isolate specific channels on 8ch pi…
andySigler Jul 7, 2023
7341efe
feat(app): update device reset for gripper calibration (#13033)
koji Jul 8, 2023
4884dea
fix(app): fix InterventionModal's error on Storybook (#13061)
koji Jul 10, 2023
965f02d
support resupplying tipracks during a 96ch increment test run (#13065)
andySigler Jul 10, 2023
cc0f509
fix(hardware-testing): Remove tips using them for finding liquid heig…
andySigler Jul 10, 2023
ce24501
chore: Merge branch 'internal-release' into edge
sfoster1 Jul 10, 2023
b41f276
fix(app): subtler merge conflicts (#13069)
sfoster1 Jul 10, 2023
f3b14eb
feat(api): load adapter and load/move labware onto adapters in PAPI (…
jbleon95 Jul 10, 2023
96c4dcf
fix(api): change Flex front USB port number to 9 to disambiguate (#12…
pmoegenburg Jul 10, 2023
39bce25
docs(api): tutorial.rst revisions for Flex (#13046)
jwwojak Jul 10, 2023
b411304
feat(hardware): Hardware error codes (#13009)
sfoster1 Jul 10, 2023
40d81f2
fix(hardware): specify nodes when clearing move groups (#13072)
fsinapi Jul 10, 2023
bc32ab3
feat(hardware-testing): Configurable plunger acceleration per liquid-…
andySigler Jul 11, 2023
9e7c35c
feat(shared-data): Support quirks, mount and mutable configs in v2 pi…
Laura-Danielle Jul 11, 2023
11b4775
fix(api): Switch plunger backlash to pre-load for aspirations (#13076)
andySigler Jul 11, 2023
b059fe3
fix(api): Fix opentrons_execute ignoring args for custom labware and …
SyntaxColoring Jul 11, 2023
d0950e7
refactor(shared-data): group slot clips in deck def rendering
shlokamin Jul 11, 2023
0ad357f
fix(shared_data): allow gen3 pipette load names
ryanthecoder Jul 11, 2023
40d84e3
fix(build): Don't sync version file after make push for now (#13080)
vegano1 Jul 11, 2023
5394203
fix(update-server): persist the machine-id after writing the rootfs t…
vegano1 Jul 11, 2023
0f1e0bb
refactor(app): Gripper Flow DQA, Error Handling (#13056)
smb2268 Jul 11, 2023
869b992
feat(robot-server): add e-stop state query & acknowledge-disengage en…
fsinapi Jul 12, 2023
d0eb5bb
refactor(protocol-engine): Delete AbstractSyncTransport (#13060)
SyntaxColoring Jul 12, 2023
33103ac
docs(protocol-engine): Document basic instance lifetime (#12965)
SyntaxColoring Jul 12, 2023
5aab331
feat(app): Always apply historic offset data setting [RAUT-437] (#13025)
ewagoner Jul 12, 2023
92ce671
fix(app): send custom labware files to flex with protocol (#13089)
b-cooper Jul 12, 2023
6bf91db
feat(robot-server): fw version for instrs (#13094)
sfoster1 Jul 13, 2023
c670b17
refactor(app): update error boundary design and add trackEvent (#13068)
koji Jul 13, 2023
23870fe
feat(app): add e-stop modals for desktop app (#13078)
koji Jul 13, 2023
662cd8c
feat(app): multiple modules modal on device display (#13090)
jerader Jul 13, 2023
2d085d9
fix(update-server): clean up the downloaded update files after an upd…
vegano1 Jul 13, 2023
a930685
fix(hardware): additional changes to the eeprom provisioning script (…
vegano1 Jul 13, 2023
cb2a7be
feat(api, app, shared-data, pd): use new flex pipette names in backen…
sanni-t Jul 13, 2023
3b743c0
fix(labware-library): fix ssr hydration bug, module product links, ne…
b-cooper Jul 13, 2023
e8e62ff
feat(app,components): add flex trash deck map object and slot base fi…
brenthagen Jul 13, 2023
b14b0b2
use new force-pwm polynomial (#13057)
ahiuchingau Jul 13, 2023
b59c20d
fix(api): raise Estop exception when Estop is pressed (#13008)
TamarZanzouri Jul 13, 2023
773b8a4
Merge latest volumetric changes (#13100)
andySigler Jul 14, 2023
0630f70
docs(api): new and updated Tutorial protocol files (#13075)
ecormany Jul 14, 2023
46690d8
feat(app, api-client): usbPort type to match what robot server return…
jerader Jul 14, 2023
1a3fc3c
feat(protocol-designer): add flex trash (#13102)
jerader Jul 17, 2023
eb85343
fix(app): fix run failed modal styling (#13103)
koji Jul 17, 2023
61bbe0a
refactor(api): merge OT3Axis into Axis (#12834)
sanni-t Jul 17, 2023
349aede
chore(hardware): more opts for motion_analyzer (#13105)
sfoster1 Jul 17, 2023
2d9df73
feat(protocol-designer): fixed trash id in correct slot depending on …
jerader Jul 17, 2023
4186bb2
refactor(app): remove red-stroke from modal components (#13113)
koji Jul 18, 2023
c7190b9
remove gpio from can control (#13115)
andySigler Jul 18, 2023
03c61e8
multi protocols only need 4x tipracks, not 9x (#13116)
andySigler Jul 18, 2023
6e60d18
docs(api): Clean up custom/extra labware in opentrons.simulate and op…
SyntaxColoring Jul 18, 2023
623561c
feat(app): add e-stop modals for odd (#13093)
koji Jul 18, 2023
15fcb0e
feat(shared-data): add definition for nest 1 well reservoir with 290m…
b-cooper Jul 19, 2023
d8e9d55
feat(app): add ListItem component (#13128)
koji Jul 19, 2023
a211d08
refactor(protocol-designer): properly disable correct StepList button…
jerader Jul 19, 2023
8efc586
feat(app): never hide module/liquid setup (#13134)
jerader Jul 20, 2023
44bcbed
docs(api): MagneticBlockContext in API reference (#13136)
ecormany Jul 20, 2023
fc2ffdb
feat(engine): support loading offsets for labware with OnLabwareLocat…
jbleon95 Jul 20, 2023
11fa4eb
feat(api): Support V2 pipette configs in the OT-2 and Protocol Engine…
Laura-Danielle Jul 20, 2023
ca9e73e
fix(app): fix duplicated scrollbars on Windows and Slideout (#13081)
koji Jul 21, 2023
98f191d
feat(api, robot-server): add estop state machine (#13146)
fsinapi Jul 21, 2023
e1da55c
feat(api): remove use of LPC offsets during labware movement (#13144)
sanni-t Jul 21, 2023
159ec95
fix(app): fix failed error details modal styling and long protocol me…
koji Jul 21, 2023
0b7f943
chore(docs): update styling of admonition blocks (#13145)
ecormany Jul 21, 2023
268a8b0
chore: add ot-2 build starting (#13148)
sfoster1 Jul 24, 2023
76c7022
refactor(api): update OT3 default speeds, accelerations and run curre…
ahiuchingau Jul 24, 2023
41ecca7
feat(app): oDD firmware update modal for pipettes and gripper (#13062)
smb2268 Jul 24, 2023
8380fb7
refactor(hardware-testing): Use new force-gauge fixture for PVT Gripp…
andySigler Jul 24, 2023
6584665
fix(app, labware library): prevent white screen when opening adapter …
shlokamin Jul 24, 2023
6267e73
feat(hardware-testing): Added hardware testing usb package (#13140)
vegano1 Jul 24, 2023
b3aef85
fix(app): Add gripper error handling and fix bugs (#13129)
smb2268 Jul 24, 2023
1cff090
fix(app): make update flow copy robot agnostic (#13131)
b-cooper Jul 24, 2023
ae317ed
fix(api): add yocto to architectures that observe the disabledLogAggr…
b-cooper Jul 24, 2023
4d819b1
chore: internal-release->edge for 0.13.0
sfoster1 Jul 24, 2023
57b7c9b
fix(app): redirect to run summary screen based on run endpoint (#13125)
shlokamin Jul 24, 2023
bd13403
fix(api): do not open jaw after gripper cal (#13165)
ahiuchingau Jul 26, 2023
a8ecf08
chore(hardware): starting points for moves in plot (#13164)
sfoster1 Jul 26, 2023
b985fc1
feat(api): Support changing return tip height by tip size type (#13157)
Laura-Danielle Jul 26, 2023
a87555f
chore(shared_data): add the v1.2 defs for gripper (#13172)
ryanthecoder Jul 26, 2023
9f29c9d
feat(shared-data, app, protocol-designer, api-client, api, robot-serv…
jerader Jul 26, 2023
c1cb8bc
chore: release notes for 0.14.0 (#13175)
sfoster1 Jul 27, 2023
6c38267
feat(hardware): add acceleration to pick up tip for 96 channel (#12944)
caila-marashaj Jul 27, 2023
01c1b02
refactor(api): improve labware movement code (#13174)
sanni-t Jul 27, 2023
74448b1
chore: allow override of OPENTRONS_PROJECT in br (#13176)
sfoster1 Jul 27, 2023
b0f5fa6
fix(app): filter for duplicate defUri after filtering for tipracks us…
smb2268 Jul 27, 2023
1388e25
fix(robot-server): do not save calibration offsets if an error occurs…
Laura-Danielle Jul 28, 2023
8916a70
fix(api): update estimation before homing if encoder pos is good, reg…
ahiuchingau Jul 28, 2023
31fdcce
fix(shared-data): update flex tip rack definitions with DVT/PVT measu…
jbleon95 Jul 28, 2023
fcab19c
fix(app-shell): remove usb-detection build process special casing (#1…
brenthagen Jul 31, 2023
534f0f9
feat(api, shared-data): add location-based gripper offsets to final l…
sanni-t Aug 1, 2023
30c54da
searpate disengage and stop (#13185)
ahiuchingau Aug 1, 2023
441bb40
fix(app): do not call direction control handlers if disabled (#13205)
shlokamin Aug 1, 2023
a8bf9c0
fix(api): handle unknown working volumes (#13204)
Laura-Danielle Aug 1, 2023
914c567
fix(api, shared-data): raise error when using gripper in ot2 protocol…
sanni-t Aug 1, 2023
015f744
feat(shared-data): aluminum block split adapter definition (#13209)
jbleon95 Aug 1, 2023
9f7e1b5
feat(app): add gripper calibration to device settings (#13196)
smb2268 Aug 1, 2023
8377788
fix(protocol-engine): Propagate errors during cleanup phase (#13207)
SyntaxColoring Aug 2, 2023
1eb456a
chore(release): Add release notes for PR #13207 (#13216)
SyntaxColoring Aug 2, 2023
008cae1
fix(app): show robot network connection in app if able to communicate…
brenthagen Aug 2, 2023
e8a656b
fix(app): fix app whitescreen issue (#13220)
koji Aug 2, 2023
35edf78
feat(gripper): specify whether or not a gripper move should stay eng…
ahiuchingau Aug 2, 2023
b20561c
feat(shared-data): add grip force and grip height to labware definiti…
sanni-t Aug 4, 2023
a43a58a
fix(api, hardware): Only monitor overpressure if plunger axis is actu…
fsinapi Aug 4, 2023
0ad7167
fix(app): generify update robot message (#13236)
shlokamin Aug 4, 2023
34a1f33
fix(app): poll instrument info for desktop protocol setup (#13192)
b-cooper Aug 4, 2023
5cfb86d
fix(app): show network ip info if it exists (#13238)
brenthagen Aug 4, 2023
a5303d1
feat(engine): use grip force and height from definitions in pe (#13233)
sanni-t Aug 4, 2023
3c5753c
fix(app): change desktop network icon priority (#13240)
brenthagen Aug 7, 2023
3fd73a2
feat(app-shell-odd,robot-server): Allow resetting on-device display c…
SyntaxColoring Aug 7, 2023
d145fbb
fix(app): Update i18n keyword for firmware update treatment (#13249)
smb2268 Aug 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
59 changes: 59 additions & 0 deletions .github/workflows/start-internal-release-ot2-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: 'Start Internal-Release OT-2 build'
on:
push:
branches:
- edge
- '*internal-release*'
tags:
- ot3@*
pull_request:
types:
- opened
- synchronize
- labeled

jobs:
handle-push:
runs-on: 'ubuntu-latest'
if: github.event_name == 'push'
name: "Start an OT-2 build for a branch/tag push"
steps:
- name: 'start build'
uses: octokit/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.OT2_BUILD_CROSSREPO_ACCESS }}
with:
route: POST /repos/{owner}/{repo}/actions/workflows/{workflow-id}/dispatches
owner: opentrons
repo: buildroot
workflow-id: build.yml
ref: opentrons-develop
inputs: |
{
"buildroot-ref": "-",
"monorepo-ref": "${{ github.ref }}",
"infra-stage": "stage-prod"
}


handle-pr:
runs-on: 'ubuntu-latest'
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == 'Opentrons/opentrons' && contains(github.event.pull_request.labels.*.name, 'ot2-build')
name: "Start an OT-2 build for a requested PR"
steps:
- name: 'start build'
uses: octokit/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.OT2_BUILD_CROSSREPO_ACCESS }}
with:
route: POST /repos/{owner}/{repo}/actions/workflows/{workflow-id}/dispatches
owner: opentrons
repo: buildroot
workflow-id: build.yml
ref: opentrons-develop
inputs: |
{
"buildroot-ref": "-",
"monorepo-ref": "refs/heads/${{ github.head_ref }}",
"infra-stage": "stage-prod"
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
name: 'Start OT-3 build'
name: 'Start Internal-Release OT-3 build'
on:
push:
branches:
- edge
- chore_bump-*
- chore_release-*
- release*
- '*internal-release*'
tags:
- v*
- ot3@*
pull_request:
types:
Expand Down
23 changes: 10 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -131,33 +131,30 @@ push-update-server:
push: export host=$(usb_host)
push:
$(if $(host),@echo "Pushing to $(host)",$(error host variable required))
# TODO (amit, 2021-09-28): re-enable when opentrons-hardware is worth deploying.
# $(MAKE) -C $(HARDWARE_DIR) push-no-restart
# sleep 1
$(MAKE) -C $(API_DIR) push-no-restart
sleep 1
$(MAKE) -C $(SHARED_DATA_DIR) push-no-restart
sleep 1
$(MAKE) -C $(UPDATE_SERVER_DIR) push
$(MAKE) -C $(API_DIR) push-no-restart
sleep 1
$(MAKE) -C $(SERVER_UTILS_DIR) push
sleep 1
$(MAKE) -C $(NOTIFY_SERVER_DIR) push
sleep 1
$(MAKE) -C $(ROBOT_SERVER_DIR) push
$(MAKE) -C $(SYSTEM_SERVER_DIR) push
sleep 1
$(MAKE) -C $(SERVER_UTILS_DIR) push
$(MAKE) -C $(ROBOT_SERVER_DIR) push
sleep 1
$(MAKE) -C $(SYSTEM_SERVER_DIR) push
$(MAKE) -C $(UPDATE_SERVER_DIR) push


.PHONY: push-ot3
push-ot3:
$(if $(host),@echo "Pushing to $(host)",$(error host variable required))
$(MAKE) -C $(API_DIR) push-no-restart-ot3
$(MAKE) -C $(HARDWARE_DIR) push-no-restart-ot3
$(MAKE) -C $(SHARED_DATA_DIR) push-no-restart-ot3
$(MAKE) -C $(NOTIFY_SERVER_DIR) push-no-restart-ot3
$(MAKE) -C $(ROBOT_SERVER_DIR) push-ot3
$(MAKE) -C $(HARDWARE_DIR) push-no-restart-ot3
$(MAKE) -C $(API_DIR) push-no-restart-ot3
$(MAKE) -C $(SERVER_UTILS_DIR) push-ot3
$(MAKE) -C $(NOTIFY_SERVER_DIR) push-ot3
$(MAKE) -C $(ROBOT_SERVER_DIR) push-ot3
$(MAKE) -C $(SYSTEM_SERVER_DIR) push-ot3
$(MAKE) -C $(UPDATE_SERVER_DIR) push-ot3
$(MAKE) -C $(USB_BRIDGE_DIR) push-ot3
Expand Down
207 changes: 113 additions & 94 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,160 +5,179 @@ neatly document any changes that may happen during QA, such as bug fixes, and se

## Releasing Robot Software Stacks

Our release process is still a work-in-progress. The app and API projects are currently versioned together to ensure interoperability.
The app and API projects are currently versioned together to ensure interoperability.

1. Ensure you have a release created in GitHub for the robot stack you're releasing - buildroot for ot-2, oe-core for ot-3 - with all the changes you want in this release, if any. If there are no system changes, you don't have to create a new release; the last tag in the system repo is used for release builds.

2. Checkout `edge` and make a release branch, without any new changes. The branch name should match `release_*` to make it clear this is a release.

```shell
git checkout edge
git pull
git checkout -b release_${version}
git push --set-upstream origin release_${version}
```
```shell
git checkout edge
git pull
git checkout -b release_${version}
git push --set-upstream origin release_${version}
```

3. Open a PR into `release` for your release branch; this should contain all the changes that were in edge and not yet release. This PR will stick around for the duration of the release process, as QA-discovered bugs will have their fixes merged to this PR.
3. Open a PR into `release` for your release branch; this should contain all the changes that were in `edge` and not yet `release`. This PR will stick around for the duration of the release process, as QA-discovered bugs will have their fixes merged to this PR.

Part of what should happen in this branch is soliciting input and changes for the user-facing release notes at `app-shell/build/release-notes.md` for the app and `api/release-notes.md` for the robot software. Any changes should be done in a PR just like a QA bug. You should have final approval before the alpha process concludes.
Part of what should happen in this branch is soliciting input and changes for the user-facing release notes at `app-shell/build/release-notes.md` for the app and `api/release-notes.md` for the robot software. Any changes should be done in a PR just like a QA bug. You should have final approval before the alpha process concludes.

4. Check out and pull your release branch locally and create a tag for a new alpha version (since this is in QA). The alpha version should end with an `-alpha.N` prerelease tag, where `N` goes from 0 up over the course of the QA process. You don't need a PR or a commit to create a new version; the presence of the tag is all that you need. Let's call the alpha version you're about to create `${alphaVersion}`:

```shell
git checkout release_${version}
git pull
git tag -a v${alphaVersion} -m 'chore(release): ${alphaVersion}'
```
```shell
git checkout release_${version}
git pull
git tag -a v${alphaVersion} -m 'chore(release): ${alphaVersion}'
```

5. Review the tag with `git show v${alphaVersion}`. Double check that the commit displayed is the one you want - it should probably be the latest commit in your release branch, and you should double check that with the Github web UI. If the tag looks good, push it - this starts the build process. This is a release candidate that will undergo QA.

```shell
git push origin v${alphaVersion}
```
```shell
git push origin v${alphaVersion}
```

Changelogs for the release are automatically generated when the tag is pushed and sent to the release page in github.
Changelogs for the release are automatically generated when the tag is pushed and sent to the release page in github.

6. Run QA on this release. If issues are found, create PRs targeted on the release branch. To create new alpha releases, repeat steps 4-6.

7. Once QA is a pass, do a final check that the release notes are good and wordsmithed, and then do a NORMAL MERGE into `release`. Do NOT squash or rebase; do NOT yet push a tag. This should be done from your local command line (and will succeed as long as the release PR is reviewed and status checks have passed):

```shell
# note: make sure you have pulled the latest changes for branch
# release_${version} locally before merging into release
git checkout release_${version}
git pull
git checkout release
git pull

git merge --ff-only release_${version}
git push origin release
```
```shell
# note: make sure you have pulled the latest changes for branch
# release_${version} locally before merging into release
git checkout release_${version}
git pull
git checkout release
git pull

git merge --ff-only release_${version}
git push origin release
```

8. Make a tag for the release. This tag will have the actual target release version, no alpha prerelease tags involved. It should be the same as the `${version}` part of your release branch:

```shell
git tag -a v${version} -m 'chore(release): ${version}'
git show v${version}
```
```shell
git tag -a v${version} -m 'chore(release): ${version}'
git show v${version}
```

The `git show` should reveal that the tag is on what was, pre-merge, the last commit of your release branch and is, post-merge, the last commit of `release`. You should double-check this with the github web UI.
The `git show` should reveal that the tag is on what was, pre-merge, the last commit of your release branch and is, post-merge, the last commit of `release`. You should double-check this with the github web UI.

Once the tag looks good, you can push it:
Once the tag looks good, you can push it:

```shell
git push origin v${version}
```
```shell
git push origin v${version}
```

The tag push will kick off release builds and deploy the results to customers. It will also create a release page where those builds and automatically generated in-depth changelogs will be posted.
The tag push will kick off release builds and deploy the results to customers. It will also create a release page where those builds and automatically generated in-depth changelogs will be posted.

9. Open a PR of `release` into `edge`. Give the PR a name like `chore(release): Merge changes from ${version} into edge`. Once it passes, on the command line merge it into `edge`:
9. Ensure all deploy jobs succeeded:

```shell
git checkout edge
git pull
git merge --no-ff release
```
- The Opentrons App should be prompting people to update to the new version.
- https://pypi.org/project/opentrons/ should be showing the new version.

10. Use the PR title for the merge commit title. You can then `git push origin edge`, which will succeed as long as the PR is approved and status checks pass.
11. Release the docs for this version (see below under Releasing Web Projects)
10. Release the Python Protocol API docs for this version (see below under Releasing Web Projects).

11. Update the download links on https://opentrons.com/ot-app/. That page is defined in an Opentrons private repository.

12. Open a PR of `release` into `edge`. Give the PR a name like `chore(release): Merge changes from ${version} into edge`. Once it passes, on the command line merge it into `edge`:

```shell
git checkout edge
git pull
git merge --no-ff release
```

13. Use the PR title for the merge commit title. You can then `git push origin edge`, which will succeed as long as the PR is approved and status checks pass.

## Releasing Robot Software Stack Hotfixes

1. Ensure you have a system release created in GitHub (buildroot for OT2, oe-core for OT3) with all the changes you want to see, if any. If there aren't any, you don't have to create a new release; by default, the last tag is used for release builds.

2. Checkout `release` and make a release branch, without any new changes. The branch name should be `hotfix_${version}` to make it clear this is a hotfix.

```shell
git checkout release
git pull
git checkout -b hotfix_${version}
git push --set-upstream origin hotfix_${version}
```
```shell
git checkout release
git pull
git checkout -b hotfix_${version}
git push --set-upstream origin hotfix_${version}
```

3. Target the hotfix PRs on this branch.

4. Wordsmith the release notes in `app-shell/build/release-notes.md` and `api/release-notes.md` in a PR that uses the `chore` commit type.

5. Once the fixes and release notes have been merged into the hotfix branch, bump to an alpha version to begin qa by creating and pushing a tag. Let's call the new alpha version `${alphaVersion}`:

```shell
git checkout hotfix_${version}
git pull
git tag -a v${alphaVersion} -m 'chore(release): ${alphaVersion}'
git show v${alphaVersion}
```
```shell
git checkout hotfix_${version}
git pull
git tag -a v${alphaVersion} -m 'chore(release): ${alphaVersion}'
git show v${alphaVersion}
```

6. Inspect the created tag and then push it:

```shell
git show v${alphaVersion}
```
```shell
git show v${alphaVersion}
```

The `git show` command should reveal that the tag points to the latest commit of the hotfix branch. You should verify this with the github web UI.
The `git show` command should reveal that the tag points to the latest commit of the hotfix branch. You should verify this with the github web UI.

```shell
git push v${alphaVersion}
```
```shell
git push v${alphaVersion}
```

7. QA the release build. If there are problems discovered, do normal PR processes to merge the further changes into the hotfix branch. Once issues are fixed, repeat steps 5-7 with a new alpha version.

8. Once QA is a pass, do a NORMAL MERGE into `release`. Do NOT squash or rebase. This should be done from your local command line (and will succeed as long as the release PR is reviewed and status checks have passed):

```shell
# note: make sure you have pulled the latest changes for branch
# release_${version} locally before merging into release
git checkout hotfix_${version}
git pull
git checkout release
git pull
git merge --ff-only release_${version}
git push origin release
```
```shell
# note: make sure you have pulled the latest changes for branch
# release_${version} locally before merging into release
git checkout hotfix_${version}
git pull
git checkout release
git pull
git merge --ff-only release_${version}
git push origin release
```

9. Tag the release with its full target version, which we'll call `${version}` since it's no longer an alpha:

```shell
git tag -a v${version} -m 'chore(release): ${version}'
git show v${version}
```
```shell
git tag -a v${version} -m 'chore(release): ${version}'
git show v${version}
```

The `git show` command should reveal that the tag points to the most recent commit of the `release` branch, which should be the most recent commit on the hotfix branch you just merged. You should verify this with the Github web UI.
The `git show` command should reveal that the tag points to the most recent commit of the `release` branch, which should be the most recent commit on the hotfix branch you just merged. You should verify this with the Github web UI.

Once the tag looks good, push it:
Once the tag looks good, push it:

```shell
```shell
git push origin v${version}
```

git push origin v${version}
```
Pushing the tag will create release builds and a github release page with the in-depth changelogs.

Pushing the tag will create release builds and a github release page with the in-depth changelogs.
10. Ensure all deploy jobs succeeded:

10. Open a PR of `release` into `edge`. Give the PR a name like `chore(release): Merge changes from ${version} into edge`. Once it passes, on the command line merge it into `edge`:
- The Opentrons App should be prompting people to update to the new version.
- https://pypi.org/project/opentrons/ should be showing the new version.

```shell
git checkout edge
git pull
git merge --no-ff release
```
11. Update the download links on https://opentrons.com/ot-app/. That page is defined in an Opentrons private repository.

12. Release the Python Protocol API docs for this version (see below under Releasing Web Projects)

13. Open a PR of `release` into `edge`. Give the PR a name like `chore(release): Merge changes from ${version} into edge`. Once it passes, on the command line merge it into `edge`:

```shell
git checkout edge
git pull
git merge --no-ff release
```

11. Use the PR title for the merge commit title. You can then `git push origin edge`, which will succeed as long as the PR is approved and status checks pass.
12. Release the docs for this version (see below under Releasing Web Projects)
14. Use the PR title for the merge commit title. You can then `git push origin edge`, which will succeed as long as the PR is approved and status checks pass.

### tag usage

Expand Down
Loading
Loading