[ 
https://issues.apache.org/jira/browse/FLINK-16260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17164315#comment-17164315
 ] 

Chesnay Schepler commented on FLINK-16260:
------------------------------------------

Before we add this I'd first like to rework the bashbrew scripts a bit first. 
IMO we have to encode too much release-specific information on the master 
branch:

h3. What is a release?

A release consists of 1 or more images, where each image consists of:
- a DOCKERFILE file, describing the contents of the image
- a docker-entrypoint.sh, the script that is called to start processes

The files are contained in a directory following this pattern: 
<short-major-version>/scala_<scala-version>-<linux-distribution>, e.g., 
1.11/scala_2.12-debian

For each image, we publish a meta-data entry to 
https://github.com/docker-library/official-images, that looks like this:

Tags: 1.11.0-scala_2.12, 1.11-scala_2.12, scala_2.12, 1.11.0, 1.11, latest
Architectures: amd64
GitCommit: 949e445006c4fc288813900c264847d23d3e33d4
Directory: 1.11/scala_2.12-debian


h3. How does a release work?

The files are generated on the respective dev-<short-major-version> branch, 
copied over to the master branch (which serves as a publishing area), and a 
script is run to generate the manifest containing the meta-data for all 
releases.


h3. What is the problem?

In order to generate the meta-data entry, the scripts on the master branch need 
to know a few things; like which Flink version it is, what scala version it was 
built for, which java version it supports...

This information is not readily provided by the release files; some of them are 
hard-coded into the master scripts (like scala versions or used linux 
distributions), others are parsed from the DOCKERFILE (like the Flink version), 
and others are derived via docker magic (supported architectures, which are 
dependent on the base image we are using).

The issue is that a) several version-specific information is defined in the 
master scripts and b) parsing data from the DOCKERFILE implies that this 
information must be able to be parsed from the DOCKERFILE, although there might 
not be a technical reason for this information to be present.

The problem is ultimately that when we create a new variant of a release for 
some Flink version (like a new scala version), we have to touch something in 
the master scripts.

h3. What is the proposal?

Generate a meta-data file on the dev-X branches, that is used by the master 
scripts to assemble the meta-data entry.

This file would contain the:
- Flink version
- Scala version
- Java version
- linux distribution
- tags (except latest)

These bits are already readily available when the release files are assembled.

The architecture will still have to be derived via docker magic.

The master scripts parse the information from this file, and assemble the final 
entry. The only release-specific information that should remain is which 
release should be tagged as latest.

The goal is ultimately that we can create a new variant of a release for some 
Flink version, without having to touch anything in the master scripts.

> Add docker images based on Java 11
> ----------------------------------
>
>                 Key: FLINK-16260
>                 URL: https://issues.apache.org/jira/browse/FLINK-16260
>             Project: Flink
>          Issue Type: New Feature
>          Components: Dockerfiles
>            Reporter: Ismaël Mejía
>            Assignee: Ismaël Mejía
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Since 1.10.0 supports Java 11, we can add a version of the docker image based 
> on Java 11
> Feature [requested in our old issue 
> tracker|https://github.com/docker-flink/docker-flink/issues/97] and moved here



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to