Skip to content

feature request: add metadata to software on a release package #1383

@kendallgoto

Description

@kendallgoto

it is useful to track additional metadata (text, links, etc) related to software installed on a release on the balena-cloud dashboard / within the API. for example, a call to /V6/release(XXXXX) may look like:

{
    "d": [
        {
            "release_image": [
                {
                    "image": [
                        {
                            "is_a_build_of__service": [
                                {
                                    "service_name": "app1"
                                }
                            ],
                            "id": 6896259,
                            "is_stored_at__image_location": "registry2.balena-cloud.com/v2/--",
                            "build_log": "Build skipped; image for service already exists.",
                            "image_size": 6944673,
                            "start_timestamp": "2023-07-14T21:00:06.047Z",
                            "end_timestamp": null,
                            "push_timestamp": "2023-07-14T21:00:17.456Z",
                            "error_message": null,
                            "dockerfile": null
                        }
                    ],
                    "id": 0
                },
                {
                    "image": [
                        {
                            "is_a_build_of__service": [
                                {
                                    "service_name": "app2"
                                }
                            ],
                            "id": 6896260,
                            "is_stored_at__image_location": "registry2.balena-cloud.com/v2/--",
                            "build_log": "Build skipped; image for service already exists.",
                            "image_size": 85593720,
                            "start_timestamp": "2023-07-14T21:00:06.085Z",
                            "end_timestamp": null,
                            "push_timestamp": "2023-07-14T21:00:16.486Z",
                            "error_message": null,
                            "dockerfile": null
                        }
                    ],
                    "id": 0
                }
            ],
            "source": "local",
            "build_log": null,
            "status": "success",
            "note": null,
            "known_issue_list": null,
        }
    ]
}

In this, we can only see a few main places for storing UGC (build notes, etc.) -- "known issues", "notes" and release tags. All of these correlate to the release overall, but don't provide metadata for the individual software components. Being able to track this metadata can help users track software details end-to-end thru the dashboard.

A real world example:

  • CI/CD may build an updated balena release, generating a release like the above payload.
  • When a user opens this release on the balena dashboard, it isn't trivial to determine what the actual software is. It may involve parsing the docker-compose.yml view to find the related image URL, then correlating that software with a git repo, then navigating to that repo and finding the correlated software version (by ref, etc).
  • Instead, the CI/CD can tag the software in the release with an API call after it generates the updated balena release, such as:
curl -X PATCH \
"https://api.balena-cloud.com/v6/release(1234567)" \
-H  "Content-Type: application/json"  \
-H "Authorization: Bearer <AUTH_TOKEN>" \
--data '{
    "release_image": { "myapp": { label: 'v1.0.2 (abcdef)', url: "https://github.com/balena-io/myapp/commit/abcdef" } } }
}'
  • Now, that metadata (a label/url in this case) can be reflected on the dashboard to provide better end-to-end understanding of what exact software a release has:
balena-release-demo

For my team, tracking a balena release with multiple different services becomes a tricky day-to-day process, especially since we have separate versioning for the individual services plus the balena release itself. Being able to add this metadata would help our team better understand + more quickly determine the exact version and info of software running within a release.

cc @rosswesleyporter

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions