Skip to content

Image Versioning & Deprecation Plan #36

@grayside

Description

@grayside

Node 4 and Bower are both hurtling rapidly towards deprecation, but we have existing projects that will depend on them for awhile yet.

EDIT: We also have the potential to drop Ruby as a default dependency, as a significant majority of projects do not use it and if utilities come up as necessary they could perhaps be implemented as customizations instead.

Deprecation Plan

  1. Introduce a versioning scheme.
  2. Add an s6 script that warns users to update to a specifically tagged version with a recommendation to use if they need bower and/or node 4.
  3. Tag the image with that version.
  4. Make announcements about a B/C break
  5. Cut a 1.x branch of the repo and update any autobuilds to point to that branch instead of master.
  6. Move forward dropping the deprecated stuff.

Versioning Scheme

I propose a versioning scheme of ".-<lang.version>", with the result in projects of outrigger/build:2.0-php71. (Given this pattern, the version we recommend legacy projects switch to will be outrigger/build:1.0-php70 or the like.)

  1. Since we have a flattened repository system, we tag git with "v2.0"
  2. We configure builds by tag in Docker Hub to get the Docker tag 2.0-php71.
  3. We keep in mind we'll have a long tail of projects where teams do not worry about shifting versions of docker images as long as they do not need to edit config, but now we are asking them to edit config.
  4. We might choose to add support for a "dev" tag, which is basically explicitly declared latest but makes it easier to test merged changes ahead of a release.
  5. If we want to support a legacy in addition to the 1.x branch, we would have breathing room to allow projects to disable the warning message with an env var, but only after they switch to deterministic versioning.

This is loosely the pattern I setup with outrigger/keel, without the language-specific extension.

Full Set of Tags

  • php55
  • php56
  • php70
  • php71
  • 1.0-php56
  • 1.0-php70
  • 1.0-php71
  • 2.0-php56
  • 2.0-php71

In this set of tags, I am demonstrating officially unsupporting PHP 5.5 and deprecating PHP 7.0.

EDIT: Added example tags, added a bullet to the bottom of Versioning Scheme about making the warnings disable-able, since warning output on build container operations is maddening and if a project legitimately needs to keep on Node 4 or Bower for a while we should have some mercy.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions