[roll] Roll infra/recipes [android] Declare version and artifacts.

This change introduces 2 new steps:
1. `report version history`, which runs *before* package uploads. It
   uses `artifact_versioning` to determine new package versions and
   queries CIPD for the existing (previous) version. Then it registers
   this this version relationship with the update server immediately,
   preventing version tree fragmentation if the upload fails.
2. `register artifact versions", which links the uploaded CIPD packages
   to the bid, running *after* all packages are successfully uploaded.
   This prevents a partial registration state and lessens the impact of
   any artifact registration bugs.
   Dry runs call `register_artifact_preflight` to check for artifact
   name collisions early.

The `artifact_versioning` recipe module is refactored to correctly cache
artifact metadata lookups returned from `ffx product get-version` by
extracting the command into a new private `_ffx_product_get_version`
method decorated with `@functools.cache`, allowing repeat artifact
metadata queries in recipes to be efficient and easier to test.

Original-Bug: 422540705
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/infra/recipes/+/1368996
Original-Revision: 581f1f8b23c89cc152f5ea7426af93d6cefae341
GitOrigin-RevId: c0b920a957349a6d55a8f06bc693bfa0fdfcfb2f
Change-Id: I6754eaf839297add985290183e97b7da6a66e9d8
1 file changed
tree: 3647c990911991d35652c3f4cd96432311609a2f
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. flower
  6. jiri.lock
  7. MILESTONE
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.