Skip to content

Commit 977cffe

Browse files
authored
Merge pull request #31 from chalstrick/master
generate_dockerfiles.py should generate for 3 architectures
2 parents 32c61d4 + acf313e commit 977cffe

File tree

1 file changed

+46
-35
lines changed

1 file changed

+46
-35
lines changed

lib/generate_dockerfiles.py

Lines changed: 46 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
&& gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys CACB9FE09150307D1D22D82962754C3B3ABCFE23 \\
2525
&& gpg --batch --export --armor 'CACB 9FE0 9150 307D 1D22 D829 6275 4C3B 3ABC FE23' > /etc/apt/trusted.gpg.d/sapmachine.gpg.asc \\
2626
&& 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 \\
2828
&& apt-get update \\
2929
&& apt-get -y --no-install-recommends install ${version} \\
3030
&& rm -rf /var/lib/apt/lists/*
@@ -41,7 +41,7 @@
4141
4242
For more information see the [SapMachine website](https://sapmachine.io).
4343
44-
The SapMachine image supports the x86/64 architecture.
44+
The SapMachine image supports the x86/64, aarch64 and ppc64le architectures.
4545
4646
Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.
4747
@@ -71,53 +71,63 @@
7171
```
7272
'''
7373

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):
7577
tag = SapMachineTag.from_string(release['name'])
7678
version_string = tag.get_version_string()
7779
major = str(tag.get_major())
7880
skip_tag = False
79-
dockerfile_dir = join(git_dir, 'dockerfiles', 'official', major)
81+
dockerfile_base_dir = join(git_dir, 'dockerfiles', 'official', major)
8082

8183
for infrastructure_tag in infrastructure_tags:
8284
if infrastructure_tag['name'] == version_string:
8385
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
8689

8790
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+
))
112118

113119
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+
117125

118126
def main(argv=None):
119127
parser = argparse.ArgumentParser()
120128
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)
121131
args = parser.parse_args()
122132

123133
workdir = os.path.realpath(args.workdir)
@@ -180,9 +190,10 @@ def main(argv=None):
180190
utils.git_commit(git_dir, 'remove discontinued versions', removed)
181191

182192
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)
184194

185-
utils.remove_if_exists(workdir)
195+
if not args.dry:
196+
utils.remove_if_exists(workdir)
186197

187198
return 0
188199

0 commit comments

Comments
 (0)