blob: 1c6642c9db948ce18a9f908898ecdb94245e4759 [file] [log] [blame] [view]
# Official Solr Dockerfile Management
In general most interactions with this repository should be done via the Solr Release Wizard, not manually.
## How an Official Solr Dockerfile is released
1. In the Solr Release Wizard, an **official** Dockerfile will be created as a part of the release candidate.
The official Dockerfile is tested as a part of the release candidate.
1. But importantly, the official Dockerfile is not voted on because small changes _may_ be requested by the Official Images team.
We need to be able to make changes for these requests **after** a vote succeeds.
2. If the vote succeeds:
1. As a part of the artifact-uploading steps, the Release Wizard will clone this repo (`apache/solr-docker`) locally.
2. It will then add the successfully voted on `Dockerfile` to the respective folder for the released version (`<major>.<minor>`).
3. If it is a patch release, the existing `Dockerfile` for that version will be over-written.
4. It will commit this `Dockerfile`, and push to the `main` branch of this repo. No PR or reviews required.
3. Now that this repo has the new `Dockerfile` committed to main, the [Github Actions Workflow](../.github/workflows/pr-for-official-repo.yml) will kick-off.
1. It will use [`generate-stackbrew-library.sh`](../generate-stackbrew-library.sh) to build the [Solr metadata](https://github.com/docker-library/official-images/blob/master/library/solr) for the latest `main` branch commit.
2. After generating a new version of this file, it will create a PR in [docker-library/official-images](https://github.com/docker-library/official-images) to update the official image.
3. This PR will have to be reviewed and merged by the Docker Official Images team before the release will be available.
1. If a change to the Dockerfile/metadata is required by the maintainers, make further PRs/commits to this repo.
Refer to the [section on making fixes for an open PR](#make-fixes-for-an-open-automated-pr) for more information.
4. Before the PR can be approved, one of the listed Solr maintainers must comment their approval of the PR.
4. The Official Docker image should now be available
## How does the automated PR work?
The [Github Actions Workflow](../.github/workflows/pr-for-official-repo.yml) is triggered on commits to the `main` branch that touch the following files:
- `generate-stackbrew-library.sh`
- `*.*/Dockerfile`
The PR in [docker-library/official-images](https://github.com/docker-library/official-images) is generated through:
- Creating a branch in the [docker-solr/official-images](https://github.com/docker-solr/official-images).
- We have to use this repo, because Apache does not allow forks in their organization.
- This commit is made by the [@docker-solr-builder](https://github.com/docker-solr-builder), which has credentials saved in this repo.
- These credentials were added by emailing them to the Apache infra-team (`root@`)
- If you need access to this account or credentials, reach out to the private mailing list.
- Once the commit and branch are created, the Github Action will create a PR in the official repo.
### Make fixes for an open automated PR
If the PR in [docker-library/official-images](https://github.com/docker-library/official-images) is already created & open,
any commit you make to this repo will auto-update the existing PR.
The commit has to change the files that the Github Actions Workflow is listening on, which are [listed above](#how-does-the-automated-pr-work).
The PR name will change to reflect the most recent commit message, and the pr description will link to this commit instead.
The PR contents will be updated to reflect the generated solr image metadata made from the latest commit.
There is no need to close an existing PR to make further changes.
**Make sure that all changes to Dockerfiles are reflected in the official source of these dockerfiles, [apache/solr](https://github.com/apache/solr).
This will ensure that the official-images team does not ask for the same changes in future releases.
This speeds up the release process and ensures that the Dockerfile provided in the binary-release is as similar as possible to the official Solr Dockerfile.**