mirror of
https://github.com/empayre/fleet.git
synced 2024-11-06 00:45:19 +00:00
Update TUF scripts and docs (#16023)
The new script was used for the fleetd v1.20.0 release #15991: ``` /path/to/fleet/tools/tuf/promote_edge_to_stable.sh orbit 1.20.0 /path/to/fleet/tools/tuf/promote_edge_to_stable.sh desktop 1.20.0 ``` And to release osqueryd 5.11.0 to stable the following can be executed: ``` /path/to/fleet/tools/tuf/promote_edge_to_stable.sh osqueryd 5.11.0 ```
This commit is contained in:
parent
e0a40bbacf
commit
0a3131ea2f
@ -142,55 +142,37 @@ The commands show here update the local repository. After you are done running t
|
||||
|
||||
#### orbit
|
||||
|
||||
> The following commands assume you are pushing version `1.15.0`.
|
||||
|
||||
> The following command assumes you are pushing version `1.15.0`:
|
||||
```sh
|
||||
# macOS
|
||||
fleetctl updates add --target ./repository/targets/orbit/macos/edge/orbit --platform macos --name orbit --version 1.15.0 -t 1.15 -t 1 -t stable
|
||||
# Linux
|
||||
fleetctl updates add --target ./repository/targets/orbit/linux/edge/orbit --platform linux --name orbit --version 1.15.0 -t 1.15 -t 1 -t stable
|
||||
# Windows
|
||||
fleetctl updates add --target ./repository/targets/orbit/windows/edge/orbit.exe --platform windows --name orbit --version 1.15.0 -t 1.15 -t 1 -t stable
|
||||
/fleet/repo/tools/tuf/promote_edge_to_stable.sh orbit 1.15.0
|
||||
```
|
||||
|
||||
#### desktop
|
||||
|
||||
> The following commands assume you are pushing version `1.15.0`.
|
||||
|
||||
> The following command assumes you are pushing version `1.15.0`:
|
||||
```sh
|
||||
# macOS
|
||||
fleetctl updates add --target ./repository/targets/desktop/macos/edge/desktop.app.tar.gz --platform macos --name desktop --version 1.15.0 -t 1.15 -t 1 -t stable
|
||||
# Linux
|
||||
fleetctl updates add --target ./repository/targets/desktop/linux/edge/desktop.tar.gz --platform linux --name desktop --version 1.15.0 -t 1.15 -t 1 -t stable
|
||||
# Windows
|
||||
fleetctl updates add --target ./repository/targets/desktop/windows/edge/fleet-desktop.exe --platform windows --name desktop --version 1.15.0 -t 1.15 -t 1 -t stable
|
||||
/fleet/repo/tools/tuf/promote_edge_to_stable.sh desktop 1.15.0
|
||||
```
|
||||
|
||||
#### swiftDialog
|
||||
|
||||
> The following command assumes you are pushing version `2.2.1`:
|
||||
```sh
|
||||
# macOS
|
||||
fleetctl updates add --target ./repository/targets/swiftDialog/macos/edge/swiftDialog.app.tar.gz --platform macos --name swiftDialog --version 2.2.1 -t stable
|
||||
/fleet/repo/tools/tuf/promote_edge_to_stable.sh swiftDialog 2.2.1
|
||||
```
|
||||
|
||||
#### nudge
|
||||
|
||||
> The following command assumes you are pushing version `1.1.10.81462`:
|
||||
```sh
|
||||
# macOS
|
||||
fleetctl updates add --target ./repository/targets/nudge/macos/edge/nudge.app.tar.gz --platform macos --name nudge --version 1.1.10.81462 -t stable
|
||||
/fleet/repo/tools/tuf/promote_edge_to_stable.sh nudge 1.1.10.81462
|
||||
```
|
||||
|
||||
#### osqueryd
|
||||
|
||||
> The following commands assume you are pushing version `5.9.1`.
|
||||
|
||||
> The following command assumes you are pushing version `5.9.1`.
|
||||
```sh
|
||||
# macOS
|
||||
fleetctl updates add --target ./repository/targets/osqueryd/macos-app/edge/osqueryd.app.tar.gz --platform macos-app --name osqueryd --version 5.9.1 -t 5.9 -t 5 -t stable
|
||||
# Linux
|
||||
fleetctl updates add --target ./repository/targets/osqueryd/linux/edge/osqueryd --platform linux --name osqueryd --version 5.9.1 -t 5.9 -t 5 -t stable
|
||||
# Windows
|
||||
fleetctl updates add --target ./repository/targets/osqueryd/windows/edge/osqueryd.exe --platform windows --name osqueryd --version 5.9.1 -t 5.9 -t 5 -t stable
|
||||
/fleet/repo/tools/tuf/promote_edge_to_stable.sh osqueryd 5.9.1
|
||||
```
|
||||
|
||||
#### Push updates
|
||||
@ -213,7 +195,7 @@ If all looks good, run the same command without the `--dryrun` flag.
|
||||
|
||||
> NOTE: Some things to note after the changes are pushed:
|
||||
> - Once pushed you might see some clients failing to upgrade due to some sha256 mismatches. These temporary failures are expected because it takes some time for caches to be invalidated (these errors should go away after a few minutes).
|
||||
> - The auto-update routines in orbit run every one hour, so you might need to wait up to an hour to verify hosts are auto-updating properly.
|
||||
> - The auto-update routines in orbit runs every 15 minutes, so you might need to wait up to 15 minutes to verify online hosts are auto-updating properly.
|
||||
|
||||
## Removing Unused Targets
|
||||
|
||||
|
51
tools/tuf/promote_edge_to_stable.sh
Executable file
51
tools/tuf/promote_edge_to_stable.sh
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
component=$1
|
||||
version=$2
|
||||
|
||||
if [[ -z $component || -z $version ]]; then
|
||||
echo "Usage: $0 <component> <version>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "./repository" ]]; then
|
||||
echo "Directory ./repository doesn't exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version_parts=(${version//./ })
|
||||
major=${version_parts[0]}
|
||||
minor=${version_parts[1]}
|
||||
|
||||
echo "Promoting $component from edge to stable, version='$version'"
|
||||
echo "Press any key to continue..."
|
||||
read -s -n 1
|
||||
|
||||
case $1 in
|
||||
orbit)
|
||||
fleetctl updates add --target ./repository/targets/orbit/macos/edge/orbit --platform macos --name orbit --version $version -t $major.$minor -t $major -t stable
|
||||
fleetctl updates add --target ./repository/targets/orbit/linux/edge/orbit --platform linux --name orbit --version $version -t $major.$minor -t $major -t stable
|
||||
fleetctl updates add --target ./repository/targets/orbit/windows/edge/orbit.exe --platform windows --name orbit --version $version -t $major.$minor -t $major -t stable
|
||||
;;
|
||||
desktop)
|
||||
fleetctl updates add --target ./repository/targets/desktop/macos/edge/desktop.app.tar.gz --platform macos --name desktop --version $version -t $major.$minor -t $major -t stable
|
||||
fleetctl updates add --target ./repository/targets/desktop/linux/edge/desktop.tar.gz --platform linux --name desktop --version $version -t $major.$minor -t $major -t stable
|
||||
fleetctl updates add --target ./repository/targets/desktop/windows/edge/fleet-desktop.exe --platform windows --name desktop --version $version -t $major.$minor -t $major -t stable
|
||||
;;
|
||||
osqueryd)
|
||||
fleetctl updates add --target ./repository/targets/osqueryd/macos-app/edge/osqueryd.app.tar.gz --platform macos-app --name osqueryd --version $version -t $major.$minor -t $major -t stable
|
||||
fleetctl updates add --target ./repository/targets/osqueryd/linux/edge/osqueryd --platform linux --name osqueryd --version $version -t $major.$minor -t $major -t stable
|
||||
fleetctl updates add --target ./repository/targets/osqueryd/windows/edge/osqueryd.exe --platform windows --name osqueryd --version $version -t $major.$minor -t $major -t stable
|
||||
;;
|
||||
nudge)
|
||||
fleetctl updates add --target ./repository/targets/nudge/macos/edge/nudge.app.tar.gz --platform macos --name nudge --version $version -t stable
|
||||
;;
|
||||
swiftDialog)
|
||||
fleetctl updates add --target ./repository/targets/swiftDialog/macos/edge/swiftDialog.app.tar.gz --platform macos --name swiftDialog --version $version -t stable
|
||||
;;
|
||||
*)
|
||||
echo Unknown component $1
|
||||
exit 1
|
||||
;;
|
||||
esac
|
76
tools/tuf/test/Fleetd-auto-update-test-guide.md
Normal file
76
tools/tuf/test/Fleetd-auto-update-test-guide.md
Normal file
@ -0,0 +1,76 @@
|
||||
# Fleetd auto-update N+1 test
|
||||
|
||||
The following guide describes how to test an N+1 upgrade to fleetd components.
|
||||
We need to test that the `main` (to-be-released) version of fleetd has not broken the auto-update mechanism.
|
||||
|
||||
> This guide only supports running from a macOS workstation.
|
||||
|
||||
## Setup
|
||||
|
||||
Follow the setup in the [README.md](./README.md).
|
||||
|
||||
## Build and push fleetd N+1
|
||||
|
||||
### orbit
|
||||
|
||||
Build:
|
||||
```sh
|
||||
GOOS=darwin GOARCH=amd64 go build -ldflags="-X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version=43" -o orbit-darwin ./orbit/cmd/orbit
|
||||
GOOS=linux GOARCH=amd64 go build -ldflags="-X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version=43" -o orbit-linux ./orbit/cmd/orbit
|
||||
GOOS=windows GOARCH=amd64 go build -ldflags="-X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version=43" -o orbit.exe ./orbit/cmd/orbit
|
||||
```
|
||||
Push:
|
||||
```sh
|
||||
./tools/tuf/test/push_target.sh macos orbit orbit-darwin 43
|
||||
./tools/tuf/test/push_target.sh linux orbit orbit-linux 43
|
||||
./tools/tuf/test/push_target.sh windows orbit orbit.exe 43
|
||||
```
|
||||
|
||||
### desktop
|
||||
|
||||
Build:
|
||||
```sh
|
||||
FLEET_DESKTOP_VERSION=43 make desktop-app-tar-gz
|
||||
FLEET_DESKTOP_VERSION=43 make desktop-windows
|
||||
FLEET_DESKTOP_VERSION=43 make desktop-linux
|
||||
```
|
||||
```sh
|
||||
./tools/tuf/test/push_target.sh macos desktop desktop.app.tar.gz 43
|
||||
./tools/tuf/test/push_target.sh linux desktop desktop.tar.gz 43
|
||||
./tools/tuf/test/push_target.sh windows desktop fleet-desktop.exe 43
|
||||
```
|
||||
|
||||
### osqueryd
|
||||
|
||||
Assuming we are upgrading to 5.11.0 (you can also downgrade to a lower version to test the auto-update mechanism)
|
||||
|
||||
Download:
|
||||
```sh
|
||||
# macOS
|
||||
make osqueryd-app-tar-gz version=5.11.0 out-path=.
|
||||
|
||||
# osqueryd
|
||||
curl -L https://github.com/osquery/osquery/releases/download/5.11.0/osquery_5.11.0-1.linux_amd64.deb --output osquery.deb
|
||||
ar x osquery.deb
|
||||
tar xf data.tar.gz
|
||||
chmod +x ./opt/osquery/bin/osqueryd
|
||||
cp ./opt/osquery/bin/osqueryd osqueryd
|
||||
|
||||
# Windows
|
||||
curl -L https://github.com/osquery/osquery/releases/download/5.11.0/osquery-5.11.0.msi --output osquery-5.11.0.msi
|
||||
# Run the following on a Windows device:
|
||||
msiexec /a osquery-${{ env.OSQUERY_VERSION }}.msi /qb TARGETDIR=C:\temp
|
||||
# Copy C:\temp\osquery\osqueryd\osqueryd.exe from the Windows device into the macOS workstation.
|
||||
```
|
||||
Release:
|
||||
```sh
|
||||
./tools/tuf/test/push_target.sh macos-app osqueryd osqueryd.app.tar.gz 5.11.0
|
||||
./tools/tuf/test/push_target.sh linux osqueryd ./osqueryd 5.11.0
|
||||
./tools/tuf/test/push_target.sh windows osqueryd ./osqueryd.exe 5.11.0
|
||||
```
|
||||
|
||||
## Verify auto-update
|
||||
|
||||
1. Run the following live query on the hosts: `SELECT * FROM orbit_info;`. The query should now return `version=43`.
|
||||
2. Run the following live query on the hosts: `SELECT * FROM osquery_info;`. The query should now return `version=5.11.0`.
|
||||
3. Verify all hosts now show "Fleet Desktop v43.0.0" on the Fleet Desktop menu.
|
@ -1,234 +0,0 @@
|
||||
# Orbit auto-update test guide
|
||||
|
||||
## Setup
|
||||
|
||||
To test Orbit we must have a setup for the three OSs where we support Orbit: macOS, Linux and Windows.
|
||||
|
||||
This guide assumes:
|
||||
- A macOS Intel workstation (host), where we'll run most of the commands, TUF server, Orbit and the Fleet server.
|
||||
- Two VMWare VMs, with Windows 10 and Ubuntu 22.04, where we'll run Orbit.
|
||||
- The two guest OSs will connect to the host OS via the `host.docker.internal` hostname.
|
||||
To do this, you can add an entry like `192.168.103.1 host.docker.internal` to the `hosts` file in the VMs
|
||||
(`/etc/hosts` on Linux and `C:\Windows\System32\drivers\etc\hosts` on Windows).
|
||||
- The host OS can share packages with the guest OSs (via VMWare's shared folders feature).
|
||||
|
||||
## Last release
|
||||
|
||||
Head over to https://github.com/fleetdm/fleet/releases and grab the git tag of the last releases for Fleet and Orbit.
|
||||
|
||||
At the time of writing:
|
||||
- Last Orbit release: `orbit-v1.2.0`.
|
||||
- Last Fleet release: `fleet-v4.21.0`.
|
||||
- Last osquery version: `5.8.1`. (In the steps below we will use `5.6.0` and `5.7.0` because we need to test auto-updating two times.)
|
||||
|
||||
## Run Fleet
|
||||
|
||||
```sh
|
||||
git checkout fleet-v4.21.0
|
||||
|
||||
make fleet fleetctl
|
||||
make db-reset
|
||||
./build/fleet serve --logging_debug --dev --dev_license
|
||||
|
||||
./build/fleetctl setup \
|
||||
--email foo@example.com \
|
||||
--name foo \
|
||||
--password p4ssw0rd.123 \
|
||||
--org-name "Fleet Device Management Inc."
|
||||
|
||||
export ENROLL_SECRET=K3lOqio9XKw6Cr24qw1XyCRzydwRZeAv
|
||||
echo "---\napiVersion: v1\nkind: enroll_secret\nspec:\n secrets:\n - secret: $ENROLL_SECRET\n" > secrets.yml
|
||||
./build/fleetctl apply -f secrets.yml
|
||||
```
|
||||
|
||||
## Generate local TUF repository
|
||||
|
||||
1. The following commands will generate the TUF repository with the last released version of Orbit and automatically generate the Orbit packages.
|
||||
|
||||
```sh
|
||||
git checkout orbit-v1.2.0
|
||||
rm -rf test_tuf
|
||||
|
||||
SYSTEMS="macos windows linux" \
|
||||
PKG_FLEET_URL=https://localhost:8080 \
|
||||
PKG_TUF_URL=http://localhost:8081 \
|
||||
DEB_FLEET_URL=https://host.docker.internal:8080 \
|
||||
DEB_TUF_URL=http://host.docker.internal:8081 \
|
||||
RPM_FLEET_URL=https://host.docker.internal:8080 \
|
||||
RPM_TUF_URL=http://host.docker.internal:8081 \
|
||||
MSI_FLEET_URL=https://host.docker.internal:8080 \
|
||||
MSI_TUF_URL=http://host.docker.internal:8081 \
|
||||
GENERATE_PKG=1 \
|
||||
GENERATE_DEB=1 \
|
||||
GENERATE_RPM=1 \
|
||||
GENERATE_MSI=1 \
|
||||
ENROLL_SECRET=$ENROLL_SECRET \
|
||||
FLEET_DESKTOP=1 \
|
||||
USE_FLEET_SERVER_CERTIFICATE=1 \
|
||||
OSQUERY_VERSION=5.6.0 \
|
||||
./tools/tuf/test/main.sh
|
||||
```
|
||||
|
||||
2. Install Orbit on the host (macOS):
|
||||
```sh
|
||||
# (Remove any leftover Orbit from the host.)
|
||||
orbit/tools/cleanup/cleanup_macos.sh
|
||||
|
||||
sudo installer -pkg fleet-osquery.pkg -verbose -target /
|
||||
```
|
||||
|
||||
3. Copy the generated packages into the VMWare shared folders:
|
||||
```sh
|
||||
cp fleet-osquery.msi ~/shared-windows
|
||||
cp fleet-osquery_42.0.0_amd64.deb ~/shared-ubuntu
|
||||
```
|
||||
|
||||
4. Proceed to install Orbit in both VM hosts.
|
||||
- On the Windows VM:
|
||||
- Remove "Fleet osquery" from the installed programs.
|
||||
- Double-click the `fleet-osquery.msi` installer to install the new Orbit.
|
||||
- On Ubuntu:
|
||||
```sh
|
||||
# (Remove any leftover Orbit from the host.)
|
||||
sudo apt remove fleet-osquery -y
|
||||
|
||||
sudo dpkg --install fleet-osquery_42.0.0_amd64.deb
|
||||
```
|
||||
|
||||
5. Verify the three hosts have enrolled (by running `./build/fleetctl get hosts` or using the browser).
|
||||
|
||||
6. Verify the three Fleet Desktop instances are working, by clicking the "My device" menu item on the three OSs.
|
||||
|
||||
## New releases
|
||||
|
||||
1. Now let's "release" a new version of the three fleetd components (orbit, Fleet Desktop and osquery) via auto-update by using latest `main`:
|
||||
|
||||
```sh
|
||||
git checkout main
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
```sh
|
||||
# Compile a new version of Orbit for Windows:
|
||||
GOOS=windows GOARCH=amd64 go build -ldflags="-X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version=43" -o orbit-windows.exe ./orbit/cmd/orbit
|
||||
# Push the compiled Orbit as a new version
|
||||
./tools/tuf/test/push_target.sh windows orbit orbit-windows.exe 43
|
||||
```
|
||||
|
||||
```sh
|
||||
# Compile a new version of fleet-desktop for Windows:
|
||||
FLEET_DESKTOP_VERBOSE=1 FLEET_DESKTOP_VERSION=43.0.0 make desktop-windows
|
||||
# Push the desktop target as a new version
|
||||
./tools/tuf/test/push_target.sh windows desktop fleet-desktop.exe 43
|
||||
```
|
||||
|
||||
```sh
|
||||
# Download version from our main TUF:
|
||||
curl https://tuf.fleetctl.com/targets/osqueryd/windows/5.7.0/osqueryd.exe --output osqueryd.exe
|
||||
|
||||
# Push the osqueryd target as a new version
|
||||
./tools/tuf/test/push_target.sh windows osqueryd osqueryd.exe 5.7.0
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
```sh
|
||||
# Compile a new version of Orbit for Linux:
|
||||
GOOS=linux GOARCH=amd64 go build -ldflags="-X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version=43" -o orbit-linux ./orbit/cmd/orbit
|
||||
# Push the compiled Orbit as a new version
|
||||
./tools/tuf/test/push_target.sh linux orbit orbit-linux 43
|
||||
```
|
||||
|
||||
```sh
|
||||
# Compile a new version of fleet-desktop for Linux:
|
||||
FLEET_DESKTOP_VERBOSE=1 FLEET_DESKTOP_VERSION=43.0.0 make desktop-linux
|
||||
# Push the desktop target as a new version
|
||||
./tools/tuf/test/push_target.sh linux desktop desktop.tar.gz 43
|
||||
```
|
||||
|
||||
```sh
|
||||
# Download version from our main TUF:
|
||||
curl https://tuf.fleetctl.com/targets/osqueryd/linux/5.7.0/osqueryd --output osqueryd-linux
|
||||
|
||||
# Push the osqueryd target as a new version
|
||||
./tools/tuf/test/push_target.sh linux osqueryd osqueryd-linux 5.7.0
|
||||
```
|
||||
|
||||
### macOS
|
||||
|
||||
```sh
|
||||
# Compile a new version of Orbit for macOS:
|
||||
GOOS=darwin GOARCH=amd64 go build -ldflags="-X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version=43" -o orbit-darwin ./orbit/cmd/orbit
|
||||
# Push the compiled Orbit as a new version
|
||||
./tools/tuf/test/push_target.sh macos orbit orbit-darwin 43
|
||||
```
|
||||
|
||||
```sh
|
||||
# Compile a new version of fleet-desktop for macOS:
|
||||
FLEET_DESKTOP_VERBOSE=1 FLEET_DESKTOP_VERSION=43.0.0 make desktop-app-tar-gz
|
||||
# Push the desktop target as a new version
|
||||
./tools/tuf/test/push_target.sh macos desktop desktop.app.tar.gz 43
|
||||
```
|
||||
|
||||
```sh
|
||||
# Download version from our main TUF.
|
||||
curl https://tuf.fleetctl.com/targets/osqueryd/macos-app/5.7.0/osqueryd.app.tar.gz --output osqueryd.app.tar.gz
|
||||
|
||||
# Push the osqueryd target as a new version
|
||||
./tools/tuf/test/push_target.sh macos-app osqueryd osqueryd.app.tar.gz 5.7.0
|
||||
```
|
||||
|
||||
2. Wait for ~1m for all hosts to fully auto-update.
|
||||
|
||||
3. Run the following live query on all hosts: `SELECT * FROM orbit_info;`. The query should return `version=43`.
|
||||
|
||||
4. Verify all hosts now show "Fleet Desktop v43.0.0" on the Fleet Desktop menu.
|
||||
|
||||
5. Verify the Fleet Desktop instances are working, by visiting "My device", and hit "Refresh" in the "My device" page.
|
||||
|
||||
6. Run the following live query on all hosts: `SELECT * FROM osquery_info;`. The query should return `version=5.7.0`.
|
||||
|
||||
## Test Orbit N + 1
|
||||
|
||||
We need to test that the `main` (to-be-released) version of Orbit has not broken the auto-update mechanism. So we'll test upgrading to a new hypothetical future version "44".
|
||||
Run the above tests again on the three OSs but by compiling orbit and Fleet Desktop differently:
|
||||
|
||||
- When compiling Orbit, change the following, from:
|
||||
```sh
|
||||
-ldflags="-X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version=43"
|
||||
```
|
||||
to
|
||||
```sh
|
||||
-ldflags="-X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version=44"
|
||||
```
|
||||
- When compiling Fleet Desktop, change the following, from:
|
||||
```sh
|
||||
FLEET_DESKTOP_VERSION=43.0.0
|
||||
```
|
||||
to
|
||||
```sh
|
||||
FLEET_DESKTOP_VERSION=44.0.0
|
||||
```
|
||||
- When pushing osquery, change `5.7.0` to `5.8.1`.
|
||||
|
||||
|
||||
1. Run the following live query on the hosts: `SELECT * FROM orbit_info;`. The query should now return `version=44`.
|
||||
2. Run the following live query on the hosts: `SELECT * FROM osquery_info;`. The query should now return `version=5.8.1`.
|
||||
3. Verify all hosts now show "Fleet Desktop v44.0.0" on the Fleet Desktop menu.
|
||||
|
||||
## New Fleet release
|
||||
|
||||
1. Kill currently running fleet server instance.
|
||||
|
||||
2. Now let's build and "release" latest version of Fleet.
|
||||
```sh
|
||||
git checkout main
|
||||
make fleet fleetctl
|
||||
./build/fleet prepare db --dev --logging_debug
|
||||
./build/fleet serve --logging_debug --dev --dev_license
|
||||
```
|
||||
|
||||
3. Run smoke testing like running a live query on the three hosts to smoke test new Fleet version.
|
||||
|
||||
4. Test any new Orbit features added in the release.
|
Loading…
Reference in New Issue
Block a user