{"id":22870889,"url":"https://github.com/percona-lab/percona-version-service","last_synced_at":"2025-07-18T20:32:56.115Z","repository":{"id":38238166,"uuid":"272389925","full_name":"Percona-Lab/percona-version-service","owner":"Percona-Lab","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-29T14:27:13.000Z","size":6822,"stargazers_count":3,"open_issues_count":6,"forks_count":4,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-05-29T15:54:54.383Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Percona-Lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-06-15T08:58:41.000Z","updated_at":"2025-05-29T12:44:35.000Z","dependencies_parsed_at":"2023-02-16T06:30:43.244Z","dependency_job_id":"b71e6448-b250-4949-b71a-41845af75f41","html_url":"https://github.com/Percona-Lab/percona-version-service","commit_stats":{"total_commits":294,"total_committers":33,"mean_commits":8.909090909090908,"dds":0.8027210884353742,"last_synced_commit":"89b9129695c5629b066c52bb5678c84478adf211"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Percona-Lab/percona-version-service","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percona-Lab%2Fpercona-version-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percona-Lab%2Fpercona-version-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percona-Lab%2Fpercona-version-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percona-Lab%2Fpercona-version-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Percona-Lab","download_url":"https://codeload.github.com/Percona-Lab/percona-version-service/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percona-Lab%2Fpercona-version-service/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261263453,"owners_count":23132555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-13T13:16:30.173Z","updated_at":"2025-06-22T08:37:48.907Z","avatar_url":"https://github.com/Percona-Lab.png","language":"Go","readme":"# percona-version-service\n\nPercona version service provides an API to share a support matrix for PMM\nproducts.\n\nFor each product, there are multiple files in the `sources` directory. Each file\ncontains a list of supported components for a specific version of product.  \nFor example `pmm.2.29.0.pmm-server.json` contains the list of supported\ncomponents for PMM Server 2.29.0.\n\n\n## How to add new product version into the list of supported versions\n\nIn this example, we'll use PMM Server which uses PSMDB operator.\n\n### Add new version of PMM\nTo add a new version of PMM to the version service you can copy the\nbody of a file for latest version of PMM with a new name.  \nFor example, if we want to add new version of PMM 2.30.0:\n1. Create create a new file `pmm.2.30.0.pmm-server.json`. \n2. Copy the body of file  `pmm.2.29.0.pmm-server.json` to the newly created\n   file.\n3. Update the version in `operator` field\n\n### Add a new version of PSMDB operator\nTo add a new version of PSMDB operator to PMM, you should update the existing\n`pmm.*.pmm-server.json` file.  \nFor example, if you want to add PSMDB Operator version `1.12.0` to PMM 2.28.0:\n1. Add a new child to the `psmdbOperator` field\n2. This child should have the following format:\n```json lines\n{\n    \"image_path\": \"[docker image name]\",\n    \"image_hash\": \"[docker image hash]\",\n    \"status\": \"recommended\", // or \"available\"\n    \"critical\": false // or true\n}\n```\n3. The values for `image_path` and `image_hash` can be obtained from docker hub\n   or by running `docker inspect`\n4. The `status` can be set to `recommended` or `available`\n\n\n## How to add new metadata for a product\nAdd a file to `sources/metadata/{product_name}/{any-identifier}.yaml`.  \nThe file supports the following format:\n```\nversion: 0.6.0\nrecommended:\n  cli: 0.4.0\n  k8s: 1.27\nsupported:\n  pg: ^2.1.0\n  pxc: 0.0.0 || 1.1.1\n```\n\n`recommended` and `supported` are `map[string]string`.  \n`recommended` field holds a specific version. `supported` hold a semver constraint.\n\nMaking a request to `/metadata/v1/{product}` will return all stored metadata for the given product.\n\n## How to create a new docker image\n`make docker-push` will create and push a docker image with your changes.  \nIf you don't want to push your docker image to DockerHub just run `make\ndocker-build`.  \n\nBy default, the image name is\n`perconalab/version-service:$(GIT_BRANCH)-$(GIT_COMMIT)` but it can be\noverridden by setting the `IMG` environment variable.\n\n## How to publish your changes\nWe use Continuous Integration and Continuous Deployment paradigms to have the latest changes on server.  \nFor that we have 2 main branches for 2 different environments.\n* Development environment is automatically deployed based on sources in `main` branch.  \n* Production environment is automatically deployed based on sources in `production` branch.\n\nThey are independent of each other. Which means that to get your changes on both environments you have to create 2 different branches.\nEach of them should be based on the branch related to the environment you want to deploy and PRs should be created to the same branch. \n\ne.g.: To publish your changes to the `development` environment, you should create new branch from `main` branch and then create a PR to get your changes merged to the `main` branch.  \nOnce your PR is merged, our CI will automatically publish these changes to corresponding environment.\n\n## How to update gRPC API\n\nAdd you're new fields to appropriate messages in the `api/version.proto` file.\n\nIn order to compile the proto file and generate all the necessary code, first run `make init` to ensure all the tooling in installed. After that run `make gen` in order to generate everything.\n\n## How to add new release notes for a product\nAdd a file to `sources/release-notes/{product_name}/{version-tag}.md`.\n\nMaking a request to `/release-notes/v1/{product}/{version-tag}` will return the release notes for that version in raw markdown format.\nRun `make format-release-notes` to format the release notes. This command will:\n- Replace all relative links and image sources with absolute links.\n- Replace custom variables with their corresponding SVG/HTML values.\n- Replace hints and admonitions with a matching markdown header.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpercona-lab%2Fpercona-version-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpercona-lab%2Fpercona-version-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpercona-lab%2Fpercona-version-service/lists"}