Skip to content

Commit 0d1c771

Browse files
committed
Merge branch '5-gitlab-ci-configuration' into 'dev'
Resolve "GitLab CI configuration" Closes #5 See merge request objectbox/objectbox-generator!3
2 parents 050f106 + ccb561a commit 0d1c771

3 files changed

Lines changed: 80 additions & 0 deletions

File tree

.gitlab-ci.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# https://docs.gitlab.com/ce/ci/yaml/
2+
3+
build:
4+
tags: [ x64, linux, docker ]
5+
image:
6+
name: objectboxio/buildenv-generator-ubuntu:2024-02-22
7+
pull_policy: [always, if-not-present]
8+
script:
9+
- make
10+
- make test-depend
11+
- make test

ci/docker/Dockerfile.ubuntu

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
FROM ubuntu:22.04
2+
RUN apt-get update && \
3+
apt-get install -y make cmake golang git curl ccache && \
4+
apt-get clean && \
5+
rm -rf /var/lib/apt/lists/*

scripts/docker-build.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/usr/bin/env python3
2+
3+
# Front-end Python script for managing docker image builds.
4+
#
5+
# Images are
6+
# .. defined as ci/docker/Dockerfile.<image-name>
7+
# .. built via `docker-build.py -i <image-name>`.
8+
# .. published using `-p` flag.
9+
#
10+
11+
from os import system, listdir
12+
from fnmatch import fnmatch
13+
from os.path import realpath, dirname, abspath, relpath
14+
from datetime import date
15+
import glob
16+
import argparse
17+
18+
topdir=relpath(dirname(realpath(__file__))+"/..")
19+
docker_dir=topdir+"/ci/docker"
20+
21+
# Constants:
22+
group="buildenv-generator"
23+
24+
# Defaults:
25+
version=date.today()
26+
image="ubuntu"
27+
28+
# CLI:
29+
parser = argparse.ArgumentParser(
30+
prog='docker-build',
31+
description='Docker build shell',
32+
epilog=f'See {docker_dir}')
33+
parser.add_argument('-n','--dry-run', help='do not run', action='store_true')
34+
parser.add_argument('-p','--push', help='push to repository', action='store_true')
35+
parser.add_argument('--version', help=f"specify version (default: {version})", default=version)
36+
parser.add_argument('-l','--list', help='list available docker images', action='store_true')
37+
parser.add_argument('-i','--image', help=f"select image (default: {image})", default=image)
38+
args = parser.parse_args()
39+
40+
# Dry-run helper:
41+
def exec(cmd):
42+
if args.dry_run:
43+
print("DRY: "+cmd)
44+
else:
45+
system(cmd)
46+
47+
# Action: List
48+
if args.list:
49+
images = [file[11:] for file in listdir(docker_dir) if fnmatch(file, 'Dockerfile.*')]
50+
print(f"Available images: {','.join(images)}")
51+
exit(0)
52+
53+
# Evaluate full image
54+
full=f"objectboxio/{group}-{args.image}"
55+
56+
print(f"Building image: {full}")
57+
58+
# Build
59+
exec(f"docker build -f {docker_dir}/Dockerfile.{args.image} -t {full}:{version} -t {full}:latest {topdir}")
60+
61+
# Push
62+
if args.push:
63+
exec(f"docker push {full}:{version}")
64+
exec(f"docker push {full}:latest")

0 commit comments

Comments
 (0)