{"id":17604282,"url":"https://github.com/lsst/qserv-operator","last_synced_at":"2025-04-30T10:10:12.952Z","repository":{"id":37475319,"uuid":"192512259","full_name":"lsst/qserv-operator","owner":"lsst","description":"Qserv Operator creates/configures/manages Qserv clusters atop Kubernetes","archived":false,"fork":false,"pushed_at":"2025-01-15T19:36:24.000Z","size":9401,"stargazers_count":6,"open_issues_count":7,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-25T06:43:27.791Z","etag":null,"topics":["kubernetes","lsst","operator-sdk"],"latest_commit_sha":null,"homepage":"http://dm.lsst.org/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lsst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2019-06-18T09:49:32.000Z","updated_at":"2024-05-16T17:05:39.000Z","dependencies_parsed_at":"2024-06-19T05:15:26.585Z","dependency_job_id":"e3e51726-9c65-484c-bbfb-fa1ecd61fe57","html_url":"https://github.com/lsst/qserv-operator","commit_stats":null,"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsst%2Fqserv-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsst%2Fqserv-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsst%2Fqserv-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsst%2Fqserv-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lsst","download_url":"https://codeload.github.com/lsst/qserv-operator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242635331,"owners_count":20161437,"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":["kubernetes","lsst","operator-sdk"],"created_at":"2024-10-22T14:08:21.120Z","updated_at":"2025-03-09T02:30:41.524Z","avatar_url":"https://github.com/lsst.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qserv-operator\n\nA qserv operator for Kubernetes based on [operator-framework](https://github.com/operator-framework). An Operator is a method of packaging, deploying and managing a Kubernetes application.\n\n## Continuous integration for master branch\n\nBuild Qserv-operator and run Qserv multi-node integration tests (using a fixed Qserv version)\n\n| CI       | Status                                                                                                                                                           | Image build  | e2e tests | Documentation generation        | Static code analysis  | Image security scan |\n|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|-----------|---------------------------------|-----------------------|---------------------|\n| Gihub    | [![Qserv CI](https://github.com/lsst/qserv-operator/workflows/CI/badge.svg?branch=main)](https://github.com/lsst/qserv-operator/actions?query=workflow%3A\"CI\") | Yes          | Yes        | https://qserv-operator.lsst.io/ | Yes                   | Yes                 |\n\n## Documentation\n\nAccess to [Qserv-operator documentation](https://qserv-operator.lsst.io/)\n\n# Code analysis\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/xrootd/xrootd-k8s-operator)](https://goreportcard.com/report/github.com/xrootd/xrootd-k8s-operator)\n\n[Security overview](https://github.com/lsst/qserv-operator/security)\n\n## How to publish a new release for the whole Qserv stack\n\n### Qserv (and _worker, _master flavor containers), qserv_distrib, qserv_testdata\n\nThese are built and published by running the two jenkins jobs  [rebuild-publish-qserv-dev](https://ci.lsst.codes/blue/organizations/jenkins/dax%2Frelease%2Frebuild_publish_qserv-dev/activity) and [build-dev](https://ci.lsst.codes/blue/organizations/jenkins/dax%2Fdocker%2Fbuild-dev/activity), after pushing tags to all the involved repositories. Then release tags must be added to the resulting containers on docker hub.\n\n### qserv-operator\n\nValidate the integration of `qserv-operator` with the release in CI (i.e. GHA), using a dedicated branch\n\n```\ncd \u003cproject_directory\u003e\n# RELEASE format is \"\u003cYYYY\u003e.\u003cM\u003e.\u003ci\u003e-rc\u003cj\u003e\"\nRELEASE=\"2024.5.1-rc5\"\ngit checkout -b $RELEASE\n# Script below edit `qserv` image name in `manifests/image.yaml`, and prepare operatorHub packaging\n./publish-release.sh \"$RELEASE\"\n```\n\nThen edit `qserv-ingest` version in `tests/e2e/integration.sh`, to validate the release component altogether.\nOnce the release CI pass, merge the release branch to `main` branch.\n\nIn `main` branch, create the release tag and the image\n```\ngit tag -a \"$RELEASE\" -m \"Version $RELEASE\"\ngit push --follow-tags\n\n./push-image.sh\n```\n\nThis will automatically push the release tag to the repositories, and push the tagged container images to docker hub.\n\n## How to publish a new release to operatorHub\n\nThe above step (i.e. release publishing) must have been completed before doing this one.\n\n```\nmake bundle\nRELEASE=\"2024.5.1-rc5\"\nOPERATOR_SRC_DIR=\"$PWD\"\n# Clone community-operators and create a branch\ngh repo clone https://github.com/lsst/community-operators.git /tmp/community-operators\ncd /tmp/community-operators\n# Synchronize with upstream repository\ngit fetch upstream\ngit checkout main\ngit merge upstream/main\ngit push origin main\n# Prepare a Pull-Request\ngit checkout -b \"$RELEASE\"\ncp -r $OPERATOR_SRC_DIR/bundle /tmp/community-operators/operators/qserv-operator/\"$RELEASE\"\n# WARNING: Edit manually 'version' and 'replaceVersion' fields at the end of file qserv-operator.clusterserviceversion.yaml\ngit add .\ngit commit --signoff -m \"Release $RELEASE for qserv-operator\"\ngit push --set-upstream origin \"$RELEASE\"\ngh repo view --web\n# Then make a PR: https://github.com/lsst/community-operators/compare\n```\n---\n**NOTE**\n\nIf a CI test fail in PR for [community-operators](https://github.com/k8s-operatorhub/community-operators) official repository, it is possible to run it locally on a workstation using:\n```\nRELEASE=\"2024.5.1-rc5\"\nOPP_PRODUCTION_TYPE=k8s bash \u003c(curl -sL https://raw.githubusercontent.com/redhat-openshift-ecosystem/community-operators-pipeline/ci/latest/ci/scripts/opp.sh) \\\nkiwi operators/qserv-operator/$RELEASE\n```\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsst%2Fqserv-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flsst%2Fqserv-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsst%2Fqserv-operator/lists"}