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

Fleet-maintained apps for macOS #18865

Closed
13 of 14 tasks
noahtalerman opened this issue May 9, 2024 · 59 comments
Closed
13 of 14 tasks

Fleet-maintained apps for macOS #18865

noahtalerman opened this issue May 9, 2024 · 59 comments
Assignees
Labels
~apple-mdm-maturity Contributes to maturity in macOS, iOS, or iPadOS MDM product category. ~csa Issue was created by or deemed important by the Customer Solutions Architect. customer-deebradel customer-flacourtia customer-mozartia customer-nortia customer-numa customer-preston customer-reedtimmer ~experimental This feature is experimental, breaking changes may be made. #g-mdm MDM product group P2 Prioritize as urgent :product Product Design department (shows up on 🦢 Drafting board) prospect-vetter ~sc Request is a requirement in a presales opportunity story A user story defining an entire feature
Milestone

Comments

@noahtalerman
Copy link
Member

noahtalerman commented May 9, 2024

Goal

User story
As an IT admin,
I want to select a Fleet-maintained app
so that I can install the app on my macOS hosts w/o having to upload a package on my own.

Context

This is user story applies to this Fleet Q2 OKR:

  • Increase product maturity and fulfill customer promises

Changes

Product

  • Add the 20 apps listed in the public Google doc here to Fleet's app library for macOS.
  • UI changes: Figma link
    • Research
  • Reference documentation changes: WONT(we pushed support for dmg and zip): Check to see if we mention no support of .dmg or .zip in docs. If so, update docs.
  • Redirect: Redirect: Fleet-maintained apps for macOS #22580
  • CLI usage changes: No CLI changes.
  • REST API changes: API design: Fleet-maintained apps for macOS #22552
  • Permissions changes: Maintainers and admins (team and global) can view and add Fleet library app. (Team roles can do specified actions to library apps for their team(s) and can add apps to teams they are assigned to.)
  • Changes to paid features or tiers: Available in Fleet Premium.
  • Other requirements:
    • Bump HTTP request timeout to 15 minutes
    • Support .dmg and .zip for Fleet-maintained apps only in this iteration. Bundle identifier for each app should be hardcoded and used during software title creation

Engineering

  • Database schema migrations: Yes

    • Add new table for Fleet app library apps.
    • May also require adding columns to existing software tables.
  • Load testing: Yes

    • This feature doesn't itself need load testing, but once it's all done we'll want to do another load test on software installs.
  • Documentation changes: Yes

    • We will need a guide written for the Fleet app library (or the existing software library guide is updated to include all options uploads/vpp/library)
    • In the guide, add the definition of "Fleet-maintained": Fleet tests every “Fleet-maintained” app, at the time it's first added to Fleet, to confirm successful install/uninstall using Fleet. Fleet does not actively test each app's new release but will address any bugs when they fail to install/uninstall using Fleet.

ℹ️  Please read this issue carefully and understand it. Pay special attention to UI wireframes, especially "dev notes".

QA

Risk assessment

  • Risk level: Low

Manual testing steps

Test Fleet UI changes -

  • Presence of new tab for FMA in the Fleet UI Software page
  • Confirm empty state and redirect link works
  • Confirm app count and last time updated (tooltip) is accurate
    *Default is 24hrs but you can force by running fleetctl trigger --name maintained_apps
  • Test search functionality
  • Test that you can edit each app after initial upload and save
  • If package already exists on the same team (VPP or custom), ensure that app is not listed as an available FMA

End to End testing -

  • Test that all 20 apps install successfully, including via self-service
  • Test that all 20 app uninstall successfully (including when open on the host)
  • progress was tracked on this spreadsheet

Testing notes

@noahtalerman: We learned that some Microsoft apps (ex. Excel) can point to an XML configuration file at install time to enable/disable certain settings. More info in the "Homebrew format" section in the Google doc here.

We decided to not point to XML in the default install script for these apps because we think the apps can still be installed and used by the end user w/o it. And, we can add Fleet feature for this later.

To be sure, as part of this story, we want to test the following:

  • Can the apps that point to an XML config file be installed and used by the end user w/o pointing to the file?
  • Can an IT admin update the settings remotely that are normally set in the XML config file after install? Maybe by delivering a profile or running a script?

As a result

Confirmation

  1. Engineer (@____): Added comment to user story confirming successful completion of QA.
  2. QA (@PezHub ): Added comment to user story confirming successful completion of QA.
@noahtalerman noahtalerman added story A user story defining an entire feature ~feature fest Will be reviewed at next Feature Fest :product Product Design department (shows up on 🦢 Drafting board) #g-mdm MDM product group and removed ~feature fest Will be reviewed at next Feature Fest labels May 9, 2024
@noahtalerman
Copy link
Member Author

User stories are derived from the workflows and problems we want to solve. These are documented here in the public Google doc: https://docs.google.com/document/d/13_xJzKldKiSbRknsDFADIf3sESNHapj-7D24Hyu4qro/edit

@noahtalerman
Copy link
Member Author

This story is related to the "Automate Zoom updates" story (#18961).

The user story "Automate Zoom updates" story will be addressed by this story.

@marko-lisica
Copy link
Member

Hey @dherder, we're missing customer/prospect labels for this one. Could you please add labels when you get a chance?

@dherder
Copy link
Contributor

dherder commented May 21, 2024

@marko-lisica this looks to be a duplicate of #17129

@marko-lisica
Copy link
Member

Thanks @dherder! I think we should keep both, since this one will be focused on software install in case of policy failure. @noahtalerman What's your take on this?

@noahtalerman
Copy link
Member Author

I think we should keep both

Agreed.

@dherder this story enables this workflow: policy failure => trigger software install (software you've previously uploaded to Fleet). No Tines needed.

I think #17129 is similar but for script: policy failure => trigger script. No Tines needed.

What do you think? Any feedback?

@dherder
Copy link
Contributor

dherder commented May 23, 2024

sounds good to me, @noahtalerman.

@dherder dherder added customer-numa ~sc Request is a requirement in a presales opportunity labels May 24, 2024
@marko-lisica marko-lisica added the ~feature fest Will be reviewed at next Feature Fest label May 30, 2024
@noahtalerman noahtalerman removed the ~feature fest Will be reviewed at next Feature Fest label May 31, 2024
@marko-lisica marko-lisica added the ~feature fest Will be reviewed at next Feature Fest label Jun 20, 2024
@marko-lisica
Copy link
Member

marko-lisica commented Jun 20, 2024

@dherder This one didn't make to estimation. We plan to prioritize this in the next design sprint.

@noahtalerman noahtalerman removed the ~feature fest Will be reviewed at next Feature Fest label Jun 21, 2024
@JoStableford
Copy link
Contributor

@spokanemac
Copy link
Contributor

spokanemac commented Jun 24, 2024

Relying on policies to update software creates a lot of overhead in this process. We should be smart enough to determine the version on disk, and if it's < version Fleet has, then install it. This would enable merely uploading new software versions without updating a related policy. Related: fleetdm/confidential#6916

@noahtalerman
Copy link
Member Author

From @pacamaster:

Include “edit” either package or pre/post-install scripts - currently need to delete and re-add
versioning of packages that already exist/upgrading and management of packages

@noahtalerman noahtalerman added the ~apple-mdm-maturity Contributes to maturity in macOS, iOS, or iPadOS MDM product category. label Jul 1, 2024
@georgekarrv georgekarrv added :demo #g-mdm MDM product group and removed :demo #g-mdm MDM product group labels Oct 4, 2024
roperzh added a commit that referenced this issue Oct 4, 2024
#18865

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] Added/updated tests
- [x] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [x] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [x] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [x] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [x] Manual QA for all new/changed functionality
rachaelshaw added a commit that referenced this issue Oct 8, 2024
Related to: #18865

Co-authored-by: Rachael Shaw <r@rachael.wtf>
rachaelshaw added a commit that referenced this issue Oct 8, 2024
API design for: #18865

Old PR with discussions to remind if necessary: #21801

---------

Co-authored-by: Rachael Shaw <r@rachael.wtf>
Co-authored-by: Roberto Dip <dip.jesusr@gmail.com>
@noahtalerman noahtalerman added the ~experimental This feature is experimental, breaking changes may be made. label Oct 11, 2024
@PezHub
Copy link
Contributor

PezHub commented Oct 15, 2024

QA testing notes can be found here

@lukeheath
Copy link
Member

@PezHub @georgekarrv Would you please make sure to update the manual testing steps for every user story? The manual steps and include a link to the sheet that was used to track software. This way, we have a record of what steps we took to validate each software item. Thanks!

@PezHub
Copy link
Contributor

PezHub commented Oct 17, 2024

Updated manual testing steps

@lukeheath lukeheath added :product Product Design department (shows up on 🦢 Drafting board) and removed :release Ready to write code. Scheduled in a release. See "Making changes" in handbook. labels Oct 17, 2024
@marko-lisica marko-lisica assigned zayhanlon and unassigned jahzielv Oct 24, 2024
@noahtalerman
Copy link
Member Author

Waiting until we bump the server timeout limit to 15 mins to close this story. More context in a separate issue here.

@noahtalerman
Copy link
Member Author

We bumped the timeout to 15 mins for managed cloud customers ✅

PR to update best practice Terraform is here: #23939

@noahtalerman
Copy link
Member Author

PR to update best practice Terraform is here: #23939

PR is merged.

Closing this story.

@fleet-release
Copy link
Contributor

Apps at fingertips,
Fleet eases the macOS tasks,
Cloud city breathes ease.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
~apple-mdm-maturity Contributes to maturity in macOS, iOS, or iPadOS MDM product category. ~csa Issue was created by or deemed important by the Customer Solutions Architect. customer-deebradel customer-flacourtia customer-mozartia customer-nortia customer-numa customer-preston customer-reedtimmer ~experimental This feature is experimental, breaking changes may be made. #g-mdm MDM product group P2 Prioritize as urgent :product Product Design department (shows up on 🦢 Drafting board) prospect-vetter ~sc Request is a requirement in a presales opportunity story A user story defining an entire feature
Projects
None yet
Development

No branches or pull requests