|
24 | 24 | && gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys CACB9FE09150307D1D22D82962754C3B3ABCFE23 \\ |
25 | 25 | && gpg --batch --export --armor 'CACB 9FE0 9150 307D 1D22 D829 6275 4C3B 3ABC FE23' > /etc/apt/trusted.gpg.d/sapmachine.gpg.asc \\ |
26 | 26 | && gpgconf --kill all && rm -rf "$$GNUPGHOME" \\ |
27 | | - && echo "deb http://dist.sapmachine.io/debian/amd64/ ./" > /etc/apt/sources.list.d/sapmachine.list \\ |
| 27 | + && echo "deb http://dist.sapmachine.io/debian/${architecture}/ ./" > /etc/apt/sources.list.d/sapmachine.list \\ |
28 | 28 | && apt-get update \\ |
29 | 29 | && apt-get -y --no-install-recommends install ${version} \\ |
30 | 30 | && rm -rf /var/lib/apt/lists/* |
|
41 | 41 |
|
42 | 42 | For more information see the [SapMachine website](https://sapmachine.io). |
43 | 43 |
|
44 | | -The SapMachine image supports the x86/64 architecture. |
| 44 | +The SapMachine image supports the x86/64, aarch64 and ppc64le architectures. |
45 | 45 |
|
46 | 46 | Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. |
47 | 47 |
|
|
71 | 71 | ``` |
72 | 72 | ''' |
73 | 73 |
|
74 | | -def process_release(release, infrastructure_tags, git_dir): |
| 74 | +architectures = ["amd64", "arm64", "ppc64el"] |
| 75 | + |
| 76 | +def process_release(release, infrastructure_tags, git_dir, args): |
75 | 77 | tag = SapMachineTag.from_string(release['name']) |
76 | 78 | version_string = tag.get_version_string() |
77 | 79 | major = str(tag.get_major()) |
78 | 80 | skip_tag = False |
79 | | - dockerfile_dir = join(git_dir, 'dockerfiles', 'official', major) |
| 81 | + dockerfile_base_dir = join(git_dir, 'dockerfiles', 'official', major) |
80 | 82 |
|
81 | 83 | for infrastructure_tag in infrastructure_tags: |
82 | 84 | if infrastructure_tag['name'] == version_string: |
83 | 85 | print(str.format('tag "{0}" already exists for release "{1}"', version_string, release['name'])) |
84 | | - skip_tag = True |
85 | | - break |
| 86 | + if not args.force: |
| 87 | + skip_tag = True |
| 88 | + break |
86 | 89 |
|
87 | 90 | if not skip_tag: |
88 | | - utils.remove_if_exists(dockerfile_dir) |
89 | | - os.makedirs(dockerfile_dir) |
90 | | - |
91 | | - dockerfile_path = join(dockerfile_dir, 'Dockerfile') |
92 | | - with open(dockerfile_path, 'w+') as dockerfile: |
93 | | - dockerfile.write(Template(dockerfile_template).substitute( |
94 | | - version=str.format('sapmachine-{0}-jdk={1}', major, version_string), |
95 | | - major=major |
96 | | - )) |
97 | | - |
98 | | - if utils.sapmachine_is_lts(major): |
99 | | - what = 'long term support' |
100 | | - docker_tag = major |
101 | | - else: |
102 | | - what = 'stable' |
103 | | - docker_tag = 'stable' |
104 | | - readme_path = join(dockerfile_dir, 'README.md') |
105 | | - with open(readme_path, 'w+') as readmefile: |
106 | | - readmefile.write(Template(readmefile_template).substitute( |
107 | | - docker_tag=docker_tag, |
108 | | - what=what, |
109 | | - major=major, |
110 | | - version=version_string |
111 | | - )) |
| 91 | + utils.remove_if_exists(dockerfile_base_dir) |
| 92 | + os.makedirs(dockerfile_base_dir) |
| 93 | + |
| 94 | + for architecture in architectures: |
| 95 | + os.makedirs(join(dockerfile_base_dir, architecture)) |
| 96 | + dockerfile_path = join(dockerfile_base_dir, architecture, 'Dockerfile') |
| 97 | + with open(dockerfile_path, 'w+') as dockerfile: |
| 98 | + dockerfile.write(Template(dockerfile_template).substitute( |
| 99 | + architecture=architecture, |
| 100 | + version=str.format('sapmachine-{0}-jdk={1}', major, version_string), |
| 101 | + major=major |
| 102 | + )) |
| 103 | + |
| 104 | + if utils.sapmachine_is_lts(major): |
| 105 | + what = 'long term support' |
| 106 | + docker_tag = major |
| 107 | + else: |
| 108 | + what = 'stable' |
| 109 | + docker_tag = 'stable' |
| 110 | + readme_path = join(dockerfile_base_dir, architecture, 'README.md') |
| 111 | + with open(readme_path, 'w+') as readmefile: |
| 112 | + readmefile.write(Template(readmefile_template).substitute( |
| 113 | + docker_tag=docker_tag, |
| 114 | + what=what, |
| 115 | + major=major, |
| 116 | + version=version_string |
| 117 | + )) |
112 | 118 |
|
113 | 119 | utils.git_commit(git_dir, 'updated Dockerfile', [dockerfile_path, readme_path]) |
114 | | - utils.git_tag(git_dir, version_string) |
115 | | - utils.git_push(git_dir) |
116 | | - utils.git_push_tag(git_dir, version_string) |
| 120 | + if not args.dry: |
| 121 | + utils.git_tag(git_dir, version_string) |
| 122 | + utils.git_push(git_dir) |
| 123 | + utils.git_push_tag(git_dir, version_string) |
| 124 | + |
117 | 125 |
|
118 | 126 | def main(argv=None): |
119 | 127 | parser = argparse.ArgumentParser() |
120 | 128 | parser.add_argument('--workdir', help='specify the working directory', metavar='DIR', default='docker_work', required=False) |
| 129 | + parser.add_argument('--force', help='upload new content even if the the release tags already exist', action='store_true', required=False) |
| 130 | + parser.add_argument('--dry', help='only test execution but don\'t upload any new content. Also don\'t delete the work_dir before exiting', action='store_true', required=False) |
121 | 131 | args = parser.parse_args() |
122 | 132 |
|
123 | 133 | workdir = os.path.realpath(args.workdir) |
@@ -180,9 +190,10 @@ def main(argv=None): |
180 | 190 | utils.git_commit(git_dir, 'remove discontinued versions', removed) |
181 | 191 |
|
182 | 192 | for release in docker_releases: |
183 | | - process_release(docker_releases[release], infrastructure_tags, git_dir) |
| 193 | + process_release(docker_releases[release], infrastructure_tags, git_dir, args) |
184 | 194 |
|
185 | | - utils.remove_if_exists(workdir) |
| 195 | + if not args.dry: |
| 196 | + utils.remove_if_exists(workdir) |
186 | 197 |
|
187 | 198 | return 0 |
188 | 199 |
|
|
0 commit comments