Architecture and configuration to setup a continuous deployement computer.
--------------------------------------------------------------------------

1/ Host computer and local network

- Intel Xeon 24 cores
- 32 Gb of RAM
- 2 SSD 1Tb (one to host base system, one to host VMs)
- Host system Linux Mageia 7.1
- VirtualBox version 6.x:

  * Host must define a private local network configurated with default settings:
           network 192.168.56.1/25
           DHCP server 192.168.56.100/24 @[101-254]

  * Each VM must have 2 network ifaces: one to use Internet using NAT
                                        one to use private local network

  * Private local network will allow to be connected to VMs locally with ssh.

  * Extension Pack installed (https://www.virtualbox.org/wiki/Downloads).

  * 3 VMs: one running Mageia 6.1 to compile AppImage bundle
               Name: M6.
               8 cores.
               4Gb RAM.
               128Mb video.
               Disk: 80Gb.
               eth0: auto IP/DNS with DHCP Metric:0                                         (VM:NAT)
               eth1: manual IP/DNS: 192.168.56.101/24/192.168.56.1/192.168.56.100 Metric:10 (VM:private local Net)

           one running Mageia 7.1 to compile Windows installer.
               Name: M7.
               8 cores.
               4Gb RAM.
               128Mb video.
               Disk: 80Gb.
               eth0: auto IP/DNS with DHCP Metric:0                                         (VM:NAT)
               eth1: manual IP/DNS: 192.168.56.102/24/192.168.56.1/192.168.56.100 Metric:10 (VM:private local Net)

           one running macOS Catalina to compile PKG installer.
               Name: MX.
               8 cores.
               4Gb RAM.
               128Mb video.
               Disk: 120Gb. (40 Gb free are required at least to update later XCode)
               eth0: auto IP/DNS with DHCP                                                  (VM:NAT)
               eth1: manual IP/DNS: 192.168.56.103/24/192.168.56.1/192.168.56.100           (VM:private local Net)

2/ Virtual Machines

- Mageia 6.1: system is installed using AppImage procedure.
  * @IP: 192.168.56.101.
  * Create a crontab task to update Appimage bundle:
      # update AppImage bundle all the days at 19h00
      00 19 * * * root bash -l -c 'export HOME=/root && source /root/.bashrc && cd /home/gilles/Documents/7.x/project/bundles/appimage && git pull && ./update.sh 2>&1 > /tmp/appimage_update_log.txt'

- Mageia 7.1: system is installed using MXE procedure.
  * @IP: 192.168.56.102
  * Create a crontab task to update Windows installer:
      # update Windows bundle all the days at 21h00
      00 21 * * * gilles bash -l -c 'export HOME=/home/gilles && source /home/gilles/.bashrc && cd /mnt/data/7.x/project/bundles/mxe && git pull && ./update.sh 2>&1 > /tmp/mxe_update_log.txt'

- macOS BigSur: system is installed using this GitHub repository: https://github.com/myspaghetti/macos-virtualbox and using Macports procedure.
  * @IP: 192.168.56.103
  * Apply the patch to macos-guest-virtualbox.patch and run the script to create the VM.
  * Don't touch mouse and keyboard will installing as form recognition is used to automatize all operations (aka partitions creating and formating).
  * MacOS Catalina will be installed and first run assistant must appear.
  * Create a main user account with admin rights, disable Siri, TimeScreen, Analytics, Accessibility, TimeMachine, and don't setup an AppleID.
  * From macOS Control Panel/Software Updates upgrade to macOS BigSur and disable auto up to date.
  * MacOS BigSur will be installed and first run assistant will appear where nothing special must be changed compared to Catalina.
  * From macOS Control Panel/Users & Groups change user account shell from zsh to bash and reboot the virtual machine.
  * From macOS Control Panel/Energy Saver turn off all sleeping options.
  * From macOS Control Panel/Desktop & Screen Saver Set no image background and turn off screen saver.
  * From macOS Control Panel/Sound Effects disable all.
  * From macOS Control Panel/Sharing enable remote login.
  * From macOS Control Panel/Mouse disable natural scroll direction.
  * From macOS Control Panel/Spotlight disable all categories.
  * From macOS Control Panel/Siri disable all.
  * From macOS Control Panel/Security & Privacy turn off screen lock.
  * From macOS Control Panel/Notifications disable all.
  * From macOS Control Panel/Display disable mirroring option in menu bar.
  * From macOS Control Panel/Keyboard disable input option in menu bar.
  * From macOS Control Panel/Dock & Menu Bar disable all control options in menu bar.
  * Register a valid account in AppleStore and download XCode.
  * Open XCode and wait to update components with sudo right.
  * From a Terminal, install XCode Command Line Tools with "sudo xcode-select --install".
  * From a Terminal, valid XCode license with "sudo xcodebuild -license".
  * Install Packages for macOS (http://s.sudre.free.fr/Software/Packages/about.html).
  * From macOS Control Panel/Security & Privacy add Terminal and Packages rights to Full Disk Access.
  * Install .bashrc_profile, .gitconfig, and macports_update.sh to the home directory.
  * Install your public and private ssh keys for your KDE account to your home directory.
  * Change /etc/sudoers properties to run sudo without password: "%admin ALL = (ALL) ALL" => "%admin ALL = (ALL) NOPASSWD: ALL"
  * Clone digiKam git repository in your home repository (git clone git@invent.kde.org:graphics/digikam.git).
  * From local digiKam git repository, run project/bundles/macports/makeall.sh.
  * To update Macports PKG all the days at 23h00, run "macports_update.sh" script in background with screen CLI tool.

- To start VM without GUI from command line:

  * VBoxManage startvm --type headless M6
  * VBoxManage startvm --type headless M7
  * VBoxManage startvm --type headless MX

- To stop VM without GUI from command line:

  * VBoxManage controlvm M6 acpipowerbutton
  * VBoxManage controlvm M7 acpipowerbutton
  * VBoxManage controlvm MX acpipowerbutton
