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

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

Open
kendallgoto opened this issue Jul 20, 2023 · 0 comments
Open

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

kendallgoto opened this issue Jul 20, 2023 · 0 comments

Comments

@kendallgoto
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant