@@ -33,6 +33,8 @@ printHelp() {
33
33
printMsg " ${T_BOLD} -s${T_RESET} , --skip-build-uos Skips building the Micro Operating System (uOS)"
34
34
printMsg " ${T_BOLD} -S${T_RESET} , --skip-image-builds Skips building all images and uOS"
35
35
printMsg " ${T_BOLD} -e${T_RESET} , --skip-image-embedded Skips embedding custom files into uOS"
36
+ printMsg " ${T_BOLD} -n${T_RESET} , --skip-net Skips network autodetection and verification"
37
+ printMsg " ${T_BOLD} -g${T_RESET} , --skip-git Skips starting Gitea service"
36
38
printMsg " ${T_BOLD} -k${T_RESET} , --uos-kernel Valid input value is [ intel | intel.signed | clearlinux | ubuntu | ubuntu.signed | fedora | redhat | alpine ]. Defaults to 'intel'. 'redhat' requires a licensed rhel system."
37
39
printMsg " ${T_BOLD} -c${T_RESET} , --clean-uos will clean the intermediary docker images used during building of uOS"
38
40
printMsg " ${T_BOLD} -b${T_RESET} , --skip-backups Skips the creation of backup files inside the data directory when re-running build.sh"
@@ -56,6 +58,8 @@ export SKIP_BACKUPS="false"
56
58
export SKIP_PROFILES=" false"
57
59
export SKIP_PROFILE_BUILDS=" false"
58
60
export SKIP_PROFILE_EMBEDDED=" false"
61
+ export SKIP_NET=" false"
62
+ export SKIP_GIT=" false"
59
63
export SINGLE_PROFILE=" "
60
64
export BOOT_PROFILE=" "
61
65
export FROM_CONTAINER=" false"
@@ -81,6 +85,10 @@ while (( "$#" )); do
81
85
shift 1;;
82
86
" -P" | " --skip-profiles" ) export SKIP_PROFILES=" true"
83
87
shift 1;;
88
+ " -n" | " --skip-net" ) export SKIP_NET=" true"
89
+ shift 1;;
90
+ " -g" | " --skip-git" ) export SKIP_GIT=" true"
91
+ shift 1;;
84
92
" -k" | " --uos-kernel" ) export UOS_KERNEL=$2
85
93
shift 2;;
86
94
" -C" | " --from-container" ) export FROM_CONTAINER=" true"
165
173
if [[ " ${PUSH} " != " " ]]; then
166
174
export BUILD_IMAGES=" false"
167
175
export SKIP_PROFILES=" true"
168
- if (docker images | grep ${PUSH} /builder-core > /dev/null 2>&1 ); then
176
+ if (docker images | grep ${PUSH} /builder-core > /dev/null 2>&1 ); then
169
177
printBanner " Pushing container images. (NOTE: run 'docker login' first if login required otherwise this command will fail.)"
170
178
logMsg " Pushing container images..."
171
179
for image in $( docker images | grep ${PUSH} /builder- | grep -v none | awk ' {print $1}' ) ; do
@@ -221,7 +229,10 @@ getSecretInfo
221
229
source " scripts/templateutils.sh"
222
230
223
231
if [[ ! -z " ${builder_config_dynamic_profile_enabled+x} " ]]; then
224
- if [[ " ${builder_config_dynamic_profile_enabled} " == " true" ]]; then
232
+ if [[ " ${builder_config_disable_dyn_profile-x} " == " true" ]] && [[ " ${builder_config_dynamic_profile_enabled} " == " true" ]]; then
233
+ printErrMsg " Dynamic Profile is enabled in 'conf/config.yml' but 'disable_dyn_profile' container build is set to 'true'. Please set 'disable_dyn_profile' to 'false' and run './build.sh -S' again."
234
+ exit
235
+ elif [[ " ${builder_config_dynamic_profile_enabled} " == " true" ]]; then
225
236
export DYNAMIC_PROFILE=" true"
226
237
fi
227
238
fi
@@ -326,52 +337,72 @@ if [[ "${BUILD_IMAGES}" == "true" ]]; then
326
337
# reduces the footprint of our application
327
338
328
339
# Build the aws-cli image
329
- run " (1/12) Building builder-aws-cli " \
330
- " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-aws-cli dockerfiles/aws-cli " \
331
- ${LOG_FILE}
332
-
333
- # Build the wget image
334
- run " (2/12) Building builder-wget " \
335
- " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-wget dockerfiles/wget " \
336
- ${LOG_FILE}
340
+ if [[ " ${builder_config_disable_aws_cli-x} " == " true " ]] ; then
341
+ printMsg " (1/11) SKIPPING: Building builder-aws-cli"
342
+ logMsg " (1/11) SKIPPING: Building builder-aws-cli "
343
+ else
344
+ run " (1/11) Building builder-aws-cli " \
345
+ " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-aws-cli dockerfiles/aws-cli " \
346
+ ${LOG_FILE}
347
+ fi
337
348
338
349
# Build the git image
339
- run " (3/12 ) Building builder-git" \
350
+ run " (2/11 ) Building builder-git" \
340
351
" docker build --rm ${DOCKER_BUILD_ARGS} -t builder-git dockerfiles/git" \
341
352
${LOG_FILE}
342
353
343
354
# Build the dnsmasq image
344
- run " (4/12) Building builder-dnsmasq (~10 min)" \
345
- " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-dnsmasq dockerfiles/dnsmasq" \
346
- ${LOG_FILE}
355
+ if [[ " ${builder_config_disable_dnsmasq-x} " == " true" ]]; then
356
+ printMsg " (3/11) SKIPPING: Building builder-dnsmasq"
357
+ logMsg " (3/11) SKIPPING: Building builder-dnsmasq"
358
+ else
359
+ run " (3/11) Building builder-dnsmasq (~10 min)" \
360
+ " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-dnsmasq dockerfiles/dnsmasq" \
361
+ ${LOG_FILE}
362
+ fi
347
363
348
364
# Build the squid image
349
- run " (5/12 ) Building builder-squid" \
365
+ run " (4/11 ) Building builder-squid" \
350
366
" docker build --rm ${DOCKER_BUILD_ARGS} -t builder-squid dockerfiles/squid" \
351
367
${LOG_FILE}
352
368
353
369
# Build the web image
354
- run " (6/12 ) Building builder-web" \
370
+ run " (5/11 ) Building builder-web" \
355
371
" docker build --rm ${DOCKER_BUILD_ARGS} -t builder-web dockerfiles/nginx" \
356
372
${LOG_FILE}
357
373
358
374
# Build the gitea image
359
- run " (7/12) Building builder-gitea" \
360
- " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-gitea dockerfiles/gitea" \
361
- ${LOG_FILE}
375
+ if [[ " ${builder_config_disable_gitea-x} " == " true" ]]; then
376
+ printMsg " (6/11) SKIPPING: Building builder-gitea"
377
+ logMsg " (6/11) SKIPPING: Building builder-gitea"
378
+ else
379
+ run " (6/11) Building builder-gitea" \
380
+ " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-gitea dockerfiles/gitea" \
381
+ ${LOG_FILE}
382
+ fi
362
383
363
384
# Build the qemu image
364
- run " (8/12) Building builder-qemu" \
365
- " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-qemu dockerfiles/qemu" \
366
- ${LOG_FILE}
385
+ if [[ " ${builder_config_disable_qemu-x} " == " true" ]]; then
386
+ printMsg " (7/11) SKIPPING: Building builder-qemu"
387
+ logMsg " (7/11) SKIPPING: Building builder-qemu"
388
+ else
389
+ run " (7/11) Building builder-qemu" \
390
+ " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-qemu dockerfiles/qemu" \
391
+ ${LOG_FILE}
392
+ fi
367
393
368
394
# Build the smb image
369
- run " (9/12) Building builder-smb" \
370
- " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-smb dockerfiles/smb" \
371
- ${LOG_FILE}
395
+ if [[ " ${builder_config_disable_smb-x} " == " true" ]]; then
396
+ printMsg " (8/11) SKIPPING: Building builder-smb"
397
+ logMsg " (8/11) SKIPPING: Building builder-smb"
398
+ else
399
+ run " (8/11) Building builder-smb" \
400
+ " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-smb dockerfiles/smb" \
401
+ ${LOG_FILE}
402
+ fi
372
403
373
404
# Build the core image
374
- run " (10/12 ) Building builder-core" \
405
+ run " (9/11 ) Building builder-core" \
375
406
" docker run -t --rm ${DOCKER_RUN_ARGS} --privileged -v $( pwd) :/work alpine sh -c 'apk update && apk add --no-cache rsync && \
376
407
cd /work && \
377
408
mkdir -p dockerfiles/core/files/conf/ && \
@@ -381,31 +412,48 @@ if [[ "${BUILD_IMAGES}" == "true" ]]; then
381
412
rsync -rtc ./scripts ./dockerfiles/core/files/ && \
382
413
rsync -rtc ./template ./dockerfiles/core/files/ && \
383
414
rsync -rtc ./*.sh ./dockerfiles/core/files/ && \
384
- mkdir -p ./dockerfiles/core/files/data/srv/tftp/images/ && \
385
- rsync -rtc ./data/srv/tftp/images/uos ./dockerfiles/core/files/data/srv/tftp/images/'; \
415
+ mkdir -p ./dockerfiles/core/files/data/srv/tftp/images/uos/ && \
416
+ rsync -rtc ./data/srv/tftp/images/uos/initrd ./dockerfiles/core/files/data/srv/tftp/images/uos/initrd && \
417
+ rsync -rtc ./data/srv/tftp/images/uos/vmlinuz ./dockerfiles/core/files/data/srv/tftp/images/uos/vmlinuz'; \
386
418
docker build --rm ${DOCKER_BUILD_ARGS} -t builder-core dockerfiles/core" \
387
419
${LOG_FILE}
388
420
389
421
# Build the certbot image
390
- run " (11/12) Building builder-certbot" \
391
- " docker run -t --rm ${DOCKER_RUN_ARGS} --privileged -v $( pwd) :/work alpine sh -c 'apk update && apk add --no-cache rsync && \
392
- cd /work && \
393
- rsync -rtc ./scripts ./dockerfiles/certbot/'; \
394
- docker build --rm ${DOCKER_BUILD_ARGS} -t builder-certbot dockerfiles/certbot" \
395
- ${LOG_FILE}
422
+ if [[ " ${builder_config_disable_certbot-x} " == " true" ]]; then
423
+ printMsg " (10/11) SKIPPING: Building builder-certbot"
424
+ logMsg " (10/11) SKIPPING: Building builder-certbot"
425
+ else
426
+ run " (10/11) Building builder-certbot" \
427
+ " docker run -t --rm ${DOCKER_RUN_ARGS} --privileged -v $( pwd) :/work alpine sh -c 'apk update && apk add --no-cache rsync && \
428
+ cd /work && \
429
+ rsync -rtc ./scripts ./dockerfiles/certbot/'; \
430
+ docker build --rm ${DOCKER_BUILD_ARGS} -t builder-certbot dockerfiles/certbot" \
431
+ ${LOG_FILE}
432
+ fi
396
433
397
434
# Build the dynamic profile image
398
- run " (12/12) Building dynamic profile service" \
399
- " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-dyn-profile dockerfiles/dyn-profile" \
400
- ${LOG_FILE}
435
+ if [[ " ${builder_config_disable_dyn_profile-x} " == " true" ]]; then
436
+ printMsg " (11/11) SKIPPING: Building builder-dyn-profile"
437
+ logMsg " (11/11) SKIPPING: Building builder-dyn-profile"
438
+ else
439
+ run " (11/11) Building dynamic profile service" \
440
+ " docker build --rm ${DOCKER_BUILD_ARGS} -t builder-dyn-profile dockerfiles/dyn-profile" \
441
+ ${LOG_FILE}
442
+ fi
401
443
402
444
else
403
445
printDatedInfoMsg " Skipping Build of ${C_GREEN} Utility Images..."
404
446
logMsg " Skipping Build of Utility Images..."
405
447
fi
406
448
407
- printBanner " Checking ${C_GREEN} Network Config..."
408
- logMsg " Checking Network Config..."
449
+
450
+ if [[ " ${SKIP_NET} " == " true" ]]; then
451
+ printBanner " Skipping ${C_GREEN} Network Config Check..."
452
+ logMsg " Skipping Network Config Check..."
453
+ else
454
+ printBanner " Checking ${C_GREEN} Network Config..."
455
+ logMsg " Checking Network Config..."
456
+ fi
409
457
# This function will ensure that the config options for
410
458
# network options that users can specify in conf/config.yml
411
459
# are set to _something_ non-empty.
@@ -416,9 +464,15 @@ verifyNetworkConfig
416
464
# files for a profile, rendering templates for a profile, etc.
417
465
source " scripts/profileutils.sh"
418
466
source " scripts/pxemenuutils.sh"
419
- printBanner " Starting ${C_GREEN} Gitea..."
420
- logMsg " Starting Gitea..."
421
- startGitea
467
+
468
+ if [[ " ${SKIP_GIT} " == " true" ]] || [[ " ${builder_config_disable_gitea-x} " == " true" ]]; then
469
+ printBanner " Skipping ${C_GREEN} Starting Gitea..."
470
+ logMsg " Skipping Starting Gitea..."
471
+ else
472
+ printBanner " Starting ${C_GREEN} Gitea..."
473
+ logMsg " Starting Gitea..."
474
+ startGitea
475
+ fi
422
476
423
477
if [[ " ${SKIP_PROFILES} " == " false" ]]; then
424
478
printBanner " Synchronizing ${C_GREEN} Profiles..."
@@ -435,22 +489,29 @@ printBanner "Rendering ${C_GREEN}System Templates..."
435
489
logMsg " Rendering System Templates..."
436
490
437
491
if [[ " ${DYNAMIC_PROFILE} " == " false" ]]; then
438
- # Begin the process of generating a temporary
439
- # pxelinux.cfg/default file
440
- printBanner " Generating ${C_GREEN} PXE Menu..."
441
- logMsg " Generating PXE Menu..."
442
- genPxeMenuHead
443
- profilesActions genProfilePxeMenu
444
- genPxeMenuTail
445
-
446
- renderSystemNetworkTemplates
447
- updatePxeMenu
492
+ # Begin the process of generating a temporary
493
+ # pxelinux.cfg/default file
494
+ printBanner " Generating ${C_GREEN} PXE Menu..."
495
+ logMsg " Generating PXE Menu..."
496
+ genPxeMenuHead
497
+ profilesActions genProfilePxeMenu
498
+ genPxeMenuTail
499
+
500
+ logMsg " Generating IPXE Menu..."
501
+ genIpxeMenuHead
502
+ profilesActions genProfileIpxeMenu
503
+ genIpxeMenuMiddle
504
+ profilesActions genProfileIpxeGoto
505
+
506
+ renderSystemNetworkTemplates
507
+ updatePxeMenu
508
+ updateIpxeMenu
448
509
else
449
- source " scripts/dynamicprofile.sh"
450
- logMsg " Setting up DynamicProfile without PXE boot menu..."
451
- renderSystemNetworkTemplates
452
- setDynamicProfileArgs
453
- exportProfileInfo
510
+ source " scripts/dynamicprofile.sh"
511
+ logMsg " Setting up DynamicProfile without PXE boot menu..."
512
+ renderSystemNetworkTemplates
513
+ setDynamicProfileArgs
514
+ exportProfileInfo
454
515
fi
455
516
# Finishing message
456
517
printBanner " ${C_GREEN} Build Complete!"
0 commit comments