gitlab-runner-tart-driver 0.1.2__tar.gz → 0.1.3__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/PKG-INFO +23 -2
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/README.md +22 -1
- gitlab-runner-tart-driver-0.1.3/gitlab_runner_tart_driver/__init__.py +1 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/commands/prepare.py +29 -23
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/modules/tart.py +28 -6
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver.egg-info/PKG-INFO +23 -2
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/setup.py +1 -1
- gitlab-runner-tart-driver-0.1.2/gitlab_runner_tart_driver/__init__.py +0 -1
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/LICENSE.txt +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/__main__.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/cli.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/commands/__init__.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/commands/cleanup.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/commands/config.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/commands/run.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/modules/__init__.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/modules/gitlab_custom_command_config.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/modules/gitlab_custom_driver_config.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/modules/utils.py +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver.egg-info/SOURCES.txt +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver.egg-info/dependency_links.txt +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver.egg-info/entry_points.txt +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver.egg-info/not-zip-safe +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver.egg-info/requires.txt +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver.egg-info/top_level.txt +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/pyproject.toml +0 -0
- {gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: gitlab-runner-tart-driver
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.3
|
4
4
|
Home-page: https://gitlab.com/schmieder.matthias/gitlab-runner-tart-driver
|
5
5
|
Author: Matthias Schmieder
|
6
6
|
Author-email: schmieder.matthias@gmail.com
|
@@ -114,15 +114,18 @@ The `config.toml` should be located at `~/.gitlab-runner/config.toml`. Open it a
|
|
114
114
|
[runners.custom]
|
115
115
|
config_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
116
116
|
config_args = [ "config", '-x', '/opt/homebrew/bin/tart' ]
|
117
|
+
config_exec_timeout = 200
|
117
118
|
|
118
119
|
prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
119
120
|
prepare_args = [ "prepare", '-x', '/opt/homebrew/bin/tart' ]
|
121
|
+
prepare_exec_timeout = 200
|
120
122
|
|
121
123
|
run_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
122
124
|
run_args = [ "run", '-x', '/opt/homebrew/bin/tart' ]
|
123
125
|
|
124
126
|
cleanup_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
125
127
|
cleanup_args = [ "cleanup", '-x', '/opt/homebrew/bin/tart' ]
|
128
|
+
cleanup_exec_timeout = 200
|
126
129
|
```
|
127
130
|
|
128
131
|
Now restart the gitlab-runner with `gitlab-runner restart`
|
@@ -276,6 +279,22 @@ prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
|
276
279
|
prepare_args = [ "prepare", '-x', '/opt/homebrew/bin/tart', '--concurrency', '2', '--auto-resources', '--cache-dir', '/Users/gitlab/gitlab-runner/cache', '--builds-dir', '/Users/gitlab/gitlab-runner/builds']
|
277
280
|
```
|
278
281
|
|
282
|
+
### Volume Mounts
|
283
|
+
|
284
|
+
Just like with `docker` the `gitlab-runner-tart-driver` allows you to mount any arbitrary host path into your VM. This can be especially useful if you have to mount runner-local resources like shared test-data or additional caches into the executor. You can follow the standard docker syntax for *volume mounts* `--volume /my/local/dir:/opt/remote/dir`. Additionally you can also pass the `ro` flag to make the mount *read-only* i.e. `--volume /my/local/dir:/opt/remote/dir:ro`.
|
285
|
+
|
286
|
+
```ini
|
287
|
+
[runners.custom]
|
288
|
+
config_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
289
|
+
config_args = [ "config" ]
|
290
|
+
|
291
|
+
prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
292
|
+
prepare_args = [ "prepare",
|
293
|
+
'-x', '/opt/homebrew/bin/tart',
|
294
|
+
'--concurrency', '2',
|
295
|
+
'--auto-resources',
|
296
|
+
'--volume /data/models/:/opt/data/models:ro']
|
297
|
+
```
|
279
298
|
### Auto Host Resource Distribution
|
280
299
|
|
281
300
|
`tart` images come with a pre-defined number of CPUs and Memory allocation. Typical numbers for default images are `cpu_count=4` and `memory=8192`. With the concurrency limitation of two VMs/images running at the same time this might not utilize your host system completely.
|
@@ -356,8 +375,10 @@ Options:
|
|
356
375
|
--builds-dir TEXT Path to the builds directory.
|
357
376
|
--timeout INTEGER Timeout in seconds for the VM to be
|
358
377
|
reachable via SSH.
|
378
|
+
--volume TEXT Volume mount definition with docker syntax.
|
379
|
+
<host_dir>:<vm_dir>[:ro]
|
359
380
|
-x, --tart-executable TEXT Path to the tart executable.
|
360
|
-
--help Show this message and exit.
|
381
|
+
--help Show this message and exit. Show this message and exit.
|
361
382
|
```
|
362
383
|
|
363
384
|
### Command `run`
|
@@ -99,15 +99,18 @@ The `config.toml` should be located at `~/.gitlab-runner/config.toml`. Open it a
|
|
99
99
|
[runners.custom]
|
100
100
|
config_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
101
101
|
config_args = [ "config", '-x', '/opt/homebrew/bin/tart' ]
|
102
|
+
config_exec_timeout = 200
|
102
103
|
|
103
104
|
prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
104
105
|
prepare_args = [ "prepare", '-x', '/opt/homebrew/bin/tart' ]
|
106
|
+
prepare_exec_timeout = 200
|
105
107
|
|
106
108
|
run_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
107
109
|
run_args = [ "run", '-x', '/opt/homebrew/bin/tart' ]
|
108
110
|
|
109
111
|
cleanup_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
110
112
|
cleanup_args = [ "cleanup", '-x', '/opt/homebrew/bin/tart' ]
|
113
|
+
cleanup_exec_timeout = 200
|
111
114
|
```
|
112
115
|
|
113
116
|
Now restart the gitlab-runner with `gitlab-runner restart`
|
@@ -261,6 +264,22 @@ prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
|
261
264
|
prepare_args = [ "prepare", '-x', '/opt/homebrew/bin/tart', '--concurrency', '2', '--auto-resources', '--cache-dir', '/Users/gitlab/gitlab-runner/cache', '--builds-dir', '/Users/gitlab/gitlab-runner/builds']
|
262
265
|
```
|
263
266
|
|
267
|
+
### Volume Mounts
|
268
|
+
|
269
|
+
Just like with `docker` the `gitlab-runner-tart-driver` allows you to mount any arbitrary host path into your VM. This can be especially useful if you have to mount runner-local resources like shared test-data or additional caches into the executor. You can follow the standard docker syntax for *volume mounts* `--volume /my/local/dir:/opt/remote/dir`. Additionally you can also pass the `ro` flag to make the mount *read-only* i.e. `--volume /my/local/dir:/opt/remote/dir:ro`.
|
270
|
+
|
271
|
+
```ini
|
272
|
+
[runners.custom]
|
273
|
+
config_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
274
|
+
config_args = [ "config" ]
|
275
|
+
|
276
|
+
prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
277
|
+
prepare_args = [ "prepare",
|
278
|
+
'-x', '/opt/homebrew/bin/tart',
|
279
|
+
'--concurrency', '2',
|
280
|
+
'--auto-resources',
|
281
|
+
'--volume /data/models/:/opt/data/models:ro']
|
282
|
+
```
|
264
283
|
### Auto Host Resource Distribution
|
265
284
|
|
266
285
|
`tart` images come with a pre-defined number of CPUs and Memory allocation. Typical numbers for default images are `cpu_count=4` and `memory=8192`. With the concurrency limitation of two VMs/images running at the same time this might not utilize your host system completely.
|
@@ -341,8 +360,10 @@ Options:
|
|
341
360
|
--builds-dir TEXT Path to the builds directory.
|
342
361
|
--timeout INTEGER Timeout in seconds for the VM to be
|
343
362
|
reachable via SSH.
|
363
|
+
--volume TEXT Volume mount definition with docker syntax.
|
364
|
+
<host_dir>:<vm_dir>[:ro]
|
344
365
|
-x, --tart-executable TEXT Path to the tart executable.
|
345
|
-
--help Show this message and exit.
|
366
|
+
--help Show this message and exit. Show this message and exit.
|
346
367
|
```
|
347
368
|
|
348
369
|
### Command `run`
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.1.3"
|
@@ -5,7 +5,7 @@ import click
|
|
5
5
|
|
6
6
|
from gitlab_runner_tart_driver.modules.gitlab_custom_command_config import GitLabCustomCommandConfig
|
7
7
|
from gitlab_runner_tart_driver.modules.tart import Tart
|
8
|
-
from gitlab_runner_tart_driver.modules.tart import
|
8
|
+
from gitlab_runner_tart_driver.modules.tart import TartVolume
|
9
9
|
from gitlab_runner_tart_driver.modules.utils import get_host_spec
|
10
10
|
from gitlab_runner_tart_driver.modules.utils import print_host_spec
|
11
11
|
|
@@ -71,6 +71,15 @@ from gitlab_runner_tart_driver.modules.utils import print_host_spec
|
|
71
71
|
type=int,
|
72
72
|
help="Timeout in seconds for the VM to be reachable via SSH.",
|
73
73
|
)
|
74
|
+
@click.option(
|
75
|
+
"--volume",
|
76
|
+
"volumes",
|
77
|
+
required=False,
|
78
|
+
default=[],
|
79
|
+
type=str,
|
80
|
+
multiple=True,
|
81
|
+
help="Volume mount definition with docker syntax. <host_dir>:<vm_dir>[:ro]",
|
82
|
+
)
|
74
83
|
@click.option("-x", "--tart-executable", required=False, default="tart", type=str, help="Path to the tart executable.")
|
75
84
|
def prepare(
|
76
85
|
default_ssh_username,
|
@@ -87,6 +96,7 @@ def prepare(
|
|
87
96
|
cache_dir,
|
88
97
|
builds_dir,
|
89
98
|
timeout,
|
99
|
+
volumes,
|
90
100
|
tart_executable,
|
91
101
|
):
|
92
102
|
"""Prepare the environment and start the tart VM."""
|
@@ -117,7 +127,6 @@ def prepare(
|
|
117
127
|
tart.login(username=p.ci_registry_user, password=p.ci_registry_password, host=p.ci_registry)
|
118
128
|
except:
|
119
129
|
click.secho(f"[ERROR] Failed to login to '{p.ci_registry}'", fg="red")
|
120
|
-
sys.exit(1)
|
121
130
|
|
122
131
|
if registry_username and registry_password and registry:
|
123
132
|
click.echo(f"[INFO] Logging into OCI Registry '{registry}'")
|
@@ -125,7 +134,6 @@ def prepare(
|
|
125
134
|
tart.login(username=registry_username, password=registry_password, host=registry)
|
126
135
|
except:
|
127
136
|
click.secho(f"[ERROR] Failed to login to '{registry}'", fg="red")
|
128
|
-
sys.exit(1)
|
129
137
|
|
130
138
|
if p.tart_registry_username and p.tart_registry_password and p.tart_registry:
|
131
139
|
click.echo(f"[INFO] Logging into custom OCI Registry '{p.tart_registry}'")
|
@@ -133,7 +141,6 @@ def prepare(
|
|
133
141
|
tart.login(username=p.tart_registry_username, password=p.tart_registry_password, host=p.tart_registry)
|
134
142
|
except:
|
135
143
|
click.secho(f"[ERROR] Failed to login to '{p.tart_registry}'", fg="red")
|
136
|
-
sys.exit(1)
|
137
144
|
|
138
145
|
######################################################################
|
139
146
|
# PULL
|
@@ -179,12 +186,16 @@ def prepare(
|
|
179
186
|
|
180
187
|
click.echo(f"[INFO] Starting VM instance '{tart_vm_name}'")
|
181
188
|
|
182
|
-
|
189
|
+
remote_build_dir = "/opt/builds"
|
190
|
+
remote_script_dir = "/opt/temp"
|
191
|
+
remote_cache_dir = "/opt/cache"
|
192
|
+
|
193
|
+
volume_mounts = []
|
183
194
|
if cache_dir:
|
184
195
|
cache_dir = os.path.abspath(os.path.expanduser(cache_dir))
|
185
196
|
os.makedirs(cache_dir, exist_ok=True)
|
186
197
|
click.echo(f"[INFO] Cache directory set to '{cache_dir}'")
|
187
|
-
|
198
|
+
volume_mounts.append(TartVolume(source=cache_dir, dest=remote_cache_dir, name="cache", ro=False))
|
188
199
|
if builds_dir:
|
189
200
|
# Concurrency compatible builds directory
|
190
201
|
# see https://docs.gitlab.com/runner/executors/shell.html#run-scripts-as-a-privileged-user
|
@@ -194,40 +205,35 @@ def prepare(
|
|
194
205
|
)
|
195
206
|
os.makedirs(builds_dir, exist_ok=True)
|
196
207
|
click.echo(f"[INFO] Builds directory set to '{builds_dir}'")
|
197
|
-
|
208
|
+
volume_mounts.append(TartVolume(source=builds_dir, dest=remote_build_dir, name="builds", ro=False))
|
209
|
+
|
210
|
+
for v in volumes:
|
211
|
+
volume_mounts.append(TartVolume.from_string(v))
|
198
212
|
|
199
|
-
tart.run(tart_vm_name,
|
213
|
+
tart.run(tart_vm_name, volume_mounts)
|
200
214
|
ip = tart.ip(tart_vm_name, timeout=timeout)
|
201
215
|
if not ip:
|
202
216
|
click.echo(f"[ERROR] Error, VM was not reacheable after '{timeout}' seconds")
|
203
217
|
sys.exit(1)
|
204
218
|
|
205
219
|
ssh_session = tart.ssh_session(name=p.vm_name(), username=p.tart_ssh_username, password=p.tart_ssh_password)
|
206
|
-
|
207
|
-
remote_build_dir = "/opt/builds"
|
208
|
-
remote_script_dir = "/opt/temp"
|
209
|
-
remote_cache_dir = "/opt/cache"
|
210
|
-
|
211
220
|
ssh_session.exec_ssh_command(
|
212
221
|
f"sudo mkdir -p {remote_script_dir} && sudo chown {p.tart_ssh_username}:{p.tart_ssh_username} {remote_script_dir}",
|
213
222
|
)
|
214
223
|
|
215
|
-
|
216
|
-
click.echo("[INFO]
|
224
|
+
for volume in volume_mounts:
|
225
|
+
click.echo("[INFO] Setting up volume mount '{volume.name}'")
|
217
226
|
ssh_session.exec_ssh_command(
|
218
|
-
f"sudo ln -sf '/Volumes/My Shared Files/
|
227
|
+
f"sudo mkdir -p $(dirname {volume.dest}); sudo ln -sf '/Volumes/My Shared Files/{volume.name}' {volume.dest}",
|
219
228
|
)
|
220
|
-
|
229
|
+
|
230
|
+
# if cache and builds volumes are not mounted, make sure to create them locally inside the VM
|
231
|
+
if not cache_dir:
|
221
232
|
ssh_session.exec_ssh_command(
|
222
233
|
f"sudo mkdir -p {remote_cache_dir} && sudo chown {p.tart_ssh_username}:{p.tart_ssh_username} {remote_cache_dir}",
|
223
234
|
)
|
224
235
|
|
225
|
-
if builds_dir:
|
226
|
-
click.echo("[INFO] Bootstrapping builds directory")
|
227
|
-
ssh_session.exec_ssh_command(
|
228
|
-
f"sudo ln -sf '/Volumes/My Shared Files/builds' {remote_build_dir}",
|
229
|
-
)
|
230
|
-
else:
|
236
|
+
if not builds_dir:
|
231
237
|
ssh_session.exec_ssh_command(
|
232
238
|
f"sudo mkdir -p {remote_build_dir} && sudo chown {p.tart_ssh_username}:{p.tart_ssh_username} {remote_build_dir}",
|
233
239
|
)
|
@@ -26,9 +26,29 @@ class TartVmSpec(BaseModel):
|
|
26
26
|
ip_address: str
|
27
27
|
|
28
28
|
|
29
|
-
class
|
29
|
+
class TartVolume(BaseModel):
|
30
|
+
name: str
|
30
31
|
source: str
|
31
32
|
dest: str
|
33
|
+
ro: bool = Field(default=False)
|
34
|
+
|
35
|
+
@classmethod
|
36
|
+
def from_string(cls, value):
|
37
|
+
components = value.split(":")
|
38
|
+
if len(components) < 2:
|
39
|
+
raise ValueError(f"'{value}' is not a valid volume mount definition")
|
40
|
+
|
41
|
+
source = os.path.abspath(os.path.expanduser(components[0])).rstrip("/")
|
42
|
+
dest = components[1].rstrip("/")
|
43
|
+
name = dest.strip("/").replace("/", "__")
|
44
|
+
ro = False
|
45
|
+
if len(components) > 2:
|
46
|
+
if "ro" == components[2]:
|
47
|
+
ro = True
|
48
|
+
else:
|
49
|
+
raise ValueError(f"'{components[2]}' flag unknown")
|
50
|
+
|
51
|
+
return cls(name=name, source=source, dest=dest, ro=ro)
|
32
52
|
|
33
53
|
|
34
54
|
class TartSshSession:
|
@@ -130,16 +150,18 @@ class Tart(object):
|
|
130
150
|
"""stops a given tart VM"""
|
131
151
|
self.exec(["stop", name])
|
132
152
|
|
133
|
-
def run(self, name: str,
|
153
|
+
def run(self, name: str, volumes: list[TartVolume] = [], no_graphics=True) -> None:
|
134
154
|
"""starts a given tart VM"""
|
135
155
|
args = ["run", name]
|
136
156
|
if no_graphics:
|
137
157
|
args.append("--no-graphics")
|
138
158
|
|
139
|
-
if
|
140
|
-
for d in
|
141
|
-
|
142
|
-
|
159
|
+
if volumes:
|
160
|
+
for d in volumes:
|
161
|
+
source_path = os.path.abspath(os.path.expanduser(d.source))
|
162
|
+
if d.ro:
|
163
|
+
source_path = f"{source_path}:ro"
|
164
|
+
args.extend(["--dir", f"{d.name}:{source_path}"])
|
143
165
|
try:
|
144
166
|
self.spawn_exec(args)
|
145
167
|
except Exception as e:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: gitlab-runner-tart-driver
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.3
|
4
4
|
Home-page: https://gitlab.com/schmieder.matthias/gitlab-runner-tart-driver
|
5
5
|
Author: Matthias Schmieder
|
6
6
|
Author-email: schmieder.matthias@gmail.com
|
@@ -114,15 +114,18 @@ The `config.toml` should be located at `~/.gitlab-runner/config.toml`. Open it a
|
|
114
114
|
[runners.custom]
|
115
115
|
config_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
116
116
|
config_args = [ "config", '-x', '/opt/homebrew/bin/tart' ]
|
117
|
+
config_exec_timeout = 200
|
117
118
|
|
118
119
|
prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
119
120
|
prepare_args = [ "prepare", '-x', '/opt/homebrew/bin/tart' ]
|
121
|
+
prepare_exec_timeout = 200
|
120
122
|
|
121
123
|
run_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
122
124
|
run_args = [ "run", '-x', '/opt/homebrew/bin/tart' ]
|
123
125
|
|
124
126
|
cleanup_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
125
127
|
cleanup_args = [ "cleanup", '-x', '/opt/homebrew/bin/tart' ]
|
128
|
+
cleanup_exec_timeout = 200
|
126
129
|
```
|
127
130
|
|
128
131
|
Now restart the gitlab-runner with `gitlab-runner restart`
|
@@ -276,6 +279,22 @@ prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
|
276
279
|
prepare_args = [ "prepare", '-x', '/opt/homebrew/bin/tart', '--concurrency', '2', '--auto-resources', '--cache-dir', '/Users/gitlab/gitlab-runner/cache', '--builds-dir', '/Users/gitlab/gitlab-runner/builds']
|
277
280
|
```
|
278
281
|
|
282
|
+
### Volume Mounts
|
283
|
+
|
284
|
+
Just like with `docker` the `gitlab-runner-tart-driver` allows you to mount any arbitrary host path into your VM. This can be especially useful if you have to mount runner-local resources like shared test-data or additional caches into the executor. You can follow the standard docker syntax for *volume mounts* `--volume /my/local/dir:/opt/remote/dir`. Additionally you can also pass the `ro` flag to make the mount *read-only* i.e. `--volume /my/local/dir:/opt/remote/dir:ro`.
|
285
|
+
|
286
|
+
```ini
|
287
|
+
[runners.custom]
|
288
|
+
config_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
289
|
+
config_args = [ "config" ]
|
290
|
+
|
291
|
+
prepare_exec = "/opt/homebrew/bin/gitlab-runner-tart-driver"
|
292
|
+
prepare_args = [ "prepare",
|
293
|
+
'-x', '/opt/homebrew/bin/tart',
|
294
|
+
'--concurrency', '2',
|
295
|
+
'--auto-resources',
|
296
|
+
'--volume /data/models/:/opt/data/models:ro']
|
297
|
+
```
|
279
298
|
### Auto Host Resource Distribution
|
280
299
|
|
281
300
|
`tart` images come with a pre-defined number of CPUs and Memory allocation. Typical numbers for default images are `cpu_count=4` and `memory=8192`. With the concurrency limitation of two VMs/images running at the same time this might not utilize your host system completely.
|
@@ -356,8 +375,10 @@ Options:
|
|
356
375
|
--builds-dir TEXT Path to the builds directory.
|
357
376
|
--timeout INTEGER Timeout in seconds for the VM to be
|
358
377
|
reachable via SSH.
|
378
|
+
--volume TEXT Volume mount definition with docker syntax.
|
379
|
+
<host_dir>:<vm_dir>[:ro]
|
359
380
|
-x, --tart-executable TEXT Path to the tart executable.
|
360
|
-
--help Show this message and exit.
|
381
|
+
--help Show this message and exit. Show this message and exit.
|
361
382
|
```
|
362
383
|
|
363
384
|
### Command `run`
|
@@ -10,7 +10,7 @@ this_directory = os.path.abspath(os.path.dirname(__file__))
|
|
10
10
|
with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f:
|
11
11
|
long_description = f.read()
|
12
12
|
|
13
|
-
version = "0.1.
|
13
|
+
version = "0.1.3"
|
14
14
|
|
15
15
|
version = f"{version}{os.environ.get('PIP_VERSION_POSTFIX','')}"
|
16
16
|
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.1.2"
|
File without changes
|
File without changes
|
{gitlab-runner-tart-driver-0.1.2 → gitlab-runner-tart-driver-0.1.3}/gitlab_runner_tart_driver/cli.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|