Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Solution to automatically merge upstream changes #22

Open
@cedric-anne

Description

@cedric-anne

I recently worked on a solution to automatize merge of upstream changes and I think I have arrived at something that should make it possible to limit manual interventions as much as possible.

I based my work on a clean fork of docker-library/php repository, applied some patches on Dockerfile-linux.template template and declare -dev versions in versions.json file, in order to be able to automatically update -dev images files using apply-templates.sh script when upstream changes are merged.

Job has been done on the master branch of my cedric-anne/docker-library-php fork that does not yet contains latest upstram commits. It should trigger an automatic merge on midnight and an automatic build of images one hour later.

I did not create a pull request as it would not be easy to read due to a complete rebase on docker-library/php repository.

I splitted my job in 5 commits.

  1. https://github.com/cedric-anne/docker-library-php/commit/c7fc99ac9d99311d41d64d79344eddbd4758d05a
    This commit just disable the initial CI workflow of the docker-library/php repository. Indeed, we cannot reuse it.

  2. https://github.com/cedric-anne/docker-library-php/commit/c2def05326644602330ceface5aa136897b948c1
    This commit contains Dockerfile-linux.template patch, declaration of -dev versions in versions.json file, and the daily build workflow.
    I tried to made as less changes as possible on Dockerfile-linux.template file to prevent conflicts that would require a manual intervention.
    On versions.json file, I had to put versions at the beginning of the file to prevent conflicts. Indeed, *-rc versions are constantly changing from null to a json object (see docker-library/php@b8abf7a and docker-library/php@67c242c), so putting something on previous or on next line will result in conflicts everytime this kind of change will be done. Conversely, putting -dev versions right before the 8.0 version line should not result in any conflict, except when this 8.0 version will be removed.
    I tried to put -dev versions in a dedicated files, but it required too many changes and it finally did not seem like a good solution to me.

  3. https://github.com/cedric-anne/docker-library-php/commit/6ec502c300194ecf4e721838dac812944c85768e
    This commit contains the workflow used to automatically merge upstream changes.
    In order to be able to push on the master branch, that is a protected branch, I had to generate a Personnal Access Token on my account to be identified as an administrator account. The only other solution would be to generate a PR everytime there is something to merge. It is easy to do, but it would result in something less automated.

  4. https://github.com/cedric-anne/docker-library-php/commit/a3085731c75a76e40d25b92b9f37e5b116149f8f
    This commit contains the README file update and corresponding git attributes to prevent any conflict on this file during merge of upstream changes.

  5. https://github.com/cedric-anne/docker-library-php/commit/4c7c5c5571eb4700650e766d07b015829b151d1a
    This commit contains only changes made automatically by apply-templates.sh script.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions