{"id":14987990,"url":"https://github.com/apache/cassandra-builds","last_synced_at":"2025-05-08T21:08:22.366Z","repository":{"id":14442443,"uuid":"74950507","full_name":"apache/cassandra-builds","owner":"apache","description":"Infrastructure build scripts for Apache Cassandra®","archived":false,"fork":false,"pushed_at":"2025-01-16T15:00:18.000Z","size":581,"stargazers_count":7,"open_issues_count":11,"forks_count":43,"subscribers_count":21,"default_branch":"trunk","last_synced_at":"2025-02-02T02:54:10.873Z","etag":null,"topics":["cassandra","database","java"],"latest_commit_sha":null,"homepage":"https://cassandra.apache.org/","language":"Shell","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/apache.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}},"created_at":"2016-11-28T08:00:08.000Z","updated_at":"2025-01-16T15:00:20.000Z","dependencies_parsed_at":"2023-02-13T16:46:01.211Z","dependency_job_id":"776b77ff-0e51-400c-85e2-e04d013f28a4","html_url":"https://github.com/apache/cassandra-builds","commit_stats":{"total_commits":422,"total_committers":27,"mean_commits":15.62962962962963,"dds":"0.39336492890995256","last_synced_commit":"8ea262ac34d2505f045aa764de47ac15ea426908"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcassandra-builds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcassandra-builds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcassandra-builds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcassandra-builds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/cassandra-builds/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238044093,"owners_count":19407128,"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":["cassandra","database","java"],"created_at":"2024-09-24T14:15:55.143Z","updated_at":"2025-02-10T02:04:24.435Z","avatar_url":"https://github.com/apache.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Apache Cassandra Build Tools\n\n* Jenkins Job DSL scripts to create CI jobs:\n    * `jenkins-dsl/`\n* Jenkins Job build/test runtime scripts:\n    * `build-scripts/`\n* Apache Cassandra packaging utilities:\n    * `cassandra-release/`\n    * `docker/`\n\n## Releasing Cassanda\n\nPlease refer to the following documents for more details about releases:\n\n  * [Release Process](https://cassandra.apache.org/doc/latest/development/release_process.html)\n  * [Release Managers Onboarding](https://cwiki.apache.org/confluence/display/CASSANDRA/Release+Managers+Onboarding)\n\nPrior to release, make sure to edit:\n  * `cassandra-release/finish_release.sh` to set `ARTIFACTORY_API_KEY`\n  * `cassandra-release/prepare_release.sh` to set `gpg_key`\n\n## Building packages\n\n1. Create build images containing the build tool-chain, Java and an Apache Cassandra git working directory\n   * Debian:\n   ```docker build -t cass-build-debs -f docker/bullseye-image.docker docker/```\n   * RPM:\n   ```docker build -t cass-build-rpms -f docker/almalinux-image.docker docker/```\n   The image will contain a clone of the Apache git repository by default. Using a different repository is possible by adding the `--build-arg CASSANDRA_GIT_URL=https://github.com/myuser/cassandra.git` parameter. All successive builds will be executed based on the repository cloned during docker image creation.\n2. Run build script through docker (specify branch, e.g. cassandra-3.0 and version, e.g. 3.0.11):\n   * Debian Bullseye\n    ```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=bullseye -q` /home/build/build-debs.sh \u003cbranch/tag\u003e```\n   * RPM:\n    ```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=almalinux -q` /home/build/build-rpms.sh \u003cbranch/tag\u003e```\n\nFor the build by Debian Bullseye, you have the possibility to build Cassandra either by Java 8 (default) or by Java 11. You control the Java version like following. If you want to build with Java 8, just omit that last option.\n\n```docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=bullseye -q` /home/build/build-debs.sh \u003cbranch/tag\u003e 11```\n\nYou should find newly created Debian and RPM packages in the `dist` directory.\n\n### Note about versioning\n\nPackages for official releases can only be build from tags. In this case, the tag must match the known versioning scheme. A number of sanity checks will be run to make sure the version matches any version defined in `build.xml` and `debian/changes`. But you'll have to manually keep these values in sync for every release.\n\nBuilds based on any branch will use the version defined in either `build.xml` (RPM) or `debian/changes` (deb). Afterwards a snapshot indicator will be appended.\n\n##  Signing packages\n\n### RPM\n\nSignatures can be used for both yum repository integrity protection and end-to-end package verification.\n\nProviding a signature ([repomd.xml.asc](https://www.apache.org/dist/cassandra/redhat/311x/repodata/repomd.xml.asc)) for [repomd.xml](https://www.apache.org/dist/cassandra/redhat/311x/repodata/repomd.xml) allows clients to verify the repository's meta-data, as enabled by `repo_gpgcheck=1` in the yum config.\n\nIndividual package files can also contain a signature in the RPM header. This can be done either during the build process (`rpmbuild --sign`) or afterwards on the final artifact. As the RPMs should be build using docker without any user intervention, we have to go with the later option here. One solution for this is to use the rpmsign wrapper (`yum install rpm-sign`) and use it on the package, e.g.:\n```rpmsign -D '%_gpg_name MyAlias' --addsign cassandra-3.0.13-1.noarch.rpm```\n\nVerifying package signatures requires to import the public keys first:\n\n```\nrpm --import https://www.apache.org/dist/cassandra/KEYS\n```\n\nAfterwards the following command should report \"OK\" for included hashes and gpg signatures:\n\n```\nrpm -K cassandra-3.0.13-1.noarch.rpm\n```\n\nOnce the RPM is signed, both the import key and verification steps should take place automatically during installation from the yum repo (see `gpgcheck=1`).\n\n### Debian\n\nSee use of `debsign` in `cassandra-release/prepare_release.sh`.\n\n## Updating package repositories\n\n### Prerequisites\n\nArtifacts for RPM and Debian package repositories, as well as tar archives, are keept in a single SVN repository. You need to have your own local copy for adding new packages:\n\n```\nsvn co --config-option 'config:miscellany:use-commit-times=yes' https://dist.apache.org/repos/dist/release/cassandra\n```\n\n(you may also want to set `use-commit-times = yes` in your local svn config)\n\nWe'll further refer to the local directory created by the svn command as `$artifacts_svn_dir`.\n\nRequired build tools:\n* [createrepo](https://packages.ubuntu.com/bionic/createrepo) (RPMs)\n* [reprepro](https://packages.ubuntu.com/bionic/reprepro) (Debian)\n\n### RPM\n\nAdding new packages to the official repository starts by copying the RPMs to `$artifacts_svn_dir/redhat/\u003cversion\u003e`. Afterwards, recreate the metadata by executing `createrepo -v .` in that directory. Finally, sign the generated meta data files in the `repodata` sub-directory:\n\n```\nfor i in `ls *.bz2 *.gz *.xml`; do gpg -sba --local-user MyAlias $i; done;\n```\n\n### Debian\n\nSee `finish_release.sh`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fcassandra-builds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fcassandra-builds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fcassandra-builds/lists"}