Improve automated build scripts #56

Open
opened 2022-01-02 03:18:21 +00:00 by kirsle · 0 comments

Between doodle-docker, doodle-flatpak and manual builds some pain points are:

Too many steps

There are numerous manual steps to release:

  1. Docker: 64bit for Linux (tar, rpm, deb) and Windows release
  2. Docker: 32bit for Linux and Windows release
  3. Flatpak: build manually on x86_64 host (and again on arm64 Pinephone)
  4. Manual Mac OS release in QEMU

Mac OS

Needs to be manually built in a Mac OS VM. Overall process is good:

git clone
bootstrap.py
make dist
make release => provides .dmg and .zip files perfectly released.

Manual steps and gotcha's that should be fixed by automated script:

  • Need to wget the guidebook.tar.gz in advance
  • Export the final artifacts somewhere centralized and nice

Windows + Linux

The doodle-docker repo has 64-bit and 32-bit Dockerfiles to build for Linux and cross-compile for Windows.

Ways to improve it:

  • Follow through on fpm steps to produce .deb and .rpm packages for Linux.
  • Include the doodle-flatpak and create a Flatpak release as well.
  • Export the final artifacts somewhere centralized and nice
  • Windows 32-bit release was including the 64-bit DLLs instead of 32-bit DLLs!

f3e1fdd217

All: 64bit and other architectures

A lot of the build scripts end up producing files saying "64bit" in them even when that is not the right architecture (e.g. in 32-bit and ARM64 builds) and I need to manually edit them while collecting the artifacts.

  • Fix places that create "64bit" refs to properly reflect the local build architecture

Centralized Outputs

Most ideally (for Linux/Windows 64 and 32 bit builds, at least): there should be one command to run that would:

  • Run the 64-bit and 32-bit Dockerfiles
  • Output a clean folder structure of build artifacts

It should provide a folder of perfectly good releases of the game (including latest Guidebook etc.) similar to the following:

v0.10.0
├── linux
│   ├── sketchy-maze-0.10.0-1.aarch64.rpm
│   ├── sketchy-maze-0.10.0-1.i386.rpm
│   ├── sketchy-maze-0.10.0-1.x86_64.rpm
│   ├── sketchymaze-0.10.0-aarch64.flatpak
│   ├── sketchy-maze_0.10.0_amd64.deb
│   ├── sketchy-maze_0.10.0_arm64.deb
│   ├── sketchymaze-0.10.0.flatpak
│   ├── sketchy-maze_0.10.0_i386.deb
│   ├── sketchymaze-0.10.0-linux-32bit.tar.gz
│   ├── sketchymaze-0.10.0-linux-64bit.tar.gz
│   └── sketchymaze-0.10.0-linux-aarch64.tar.gz
├── macos
│   ├── sketchymaze-0.10.0-macOS-x64.dmg
│   └── sketchymaze-0.10.0-macos-x64.zip
└── windows
    ├── sketchymaze-0.10.0-windows-32bit.zip
    └── sketchymaze-0.10.0-windows-64bit.zip

3 directories, 15 files

Such that you could simply rsync it to the download server.

Between doodle-docker, doodle-flatpak and manual builds some pain points are: ### Too many steps There are numerous manual steps to release: 1. Docker: 64bit for Linux (tar, rpm, deb) and Windows release 2. Docker: 32bit for Linux and Windows release 3. Flatpak: build manually on x86_64 host (and again on arm64 Pinephone) 4. Manual Mac OS release in QEMU ### Mac OS Needs to be manually built in a Mac OS VM. Overall process is good: ``` git clone bootstrap.py make dist make release => provides .dmg and .zip files perfectly released. ``` Manual steps and gotcha's that should be fixed by automated script: * [x] Need to wget the guidebook.tar.gz in advance * [ ] Export the final artifacts somewhere centralized and nice ### Windows + Linux The doodle-docker repo has 64-bit and 32-bit Dockerfiles to build for Linux and cross-compile for Windows. Ways to improve it: * [x] Follow through on fpm steps to produce .deb and .rpm packages for Linux. * [ ] Include the doodle-flatpak and create a Flatpak release as well. * [x] Export the final artifacts somewhere centralized and nice * [x] Windows 32-bit release was including the 64-bit DLLs instead of 32-bit DLLs! https://git.kirsle.net/apps/doodle-docker/commit/f3e1fdd217b93e0d4c3268d587334c33ac0ba6fa ### All: 64bit and other architectures A lot of the build scripts end up producing files saying "64bit" in them even when that is not the right architecture (e.g. in 32-bit and ARM64 builds) and I need to manually edit them while collecting the artifacts. * [x] Fix places that create "64bit" refs to properly reflect the local build architecture ### Centralized Outputs Most ideally (for Linux/Windows 64 and 32 bit builds, at least): there should be one command to run that would: * Run the 64-bit and 32-bit Dockerfiles * Output a clean folder structure of build artifacts It should provide a folder of perfectly good releases of the game (including latest Guidebook etc.) similar to the following: ``` v0.10.0 ├── linux │   ├── sketchy-maze-0.10.0-1.aarch64.rpm │   ├── sketchy-maze-0.10.0-1.i386.rpm │   ├── sketchy-maze-0.10.0-1.x86_64.rpm │   ├── sketchymaze-0.10.0-aarch64.flatpak │   ├── sketchy-maze_0.10.0_amd64.deb │   ├── sketchy-maze_0.10.0_arm64.deb │   ├── sketchymaze-0.10.0.flatpak │   ├── sketchy-maze_0.10.0_i386.deb │   ├── sketchymaze-0.10.0-linux-32bit.tar.gz │   ├── sketchymaze-0.10.0-linux-64bit.tar.gz │   └── sketchymaze-0.10.0-linux-aarch64.tar.gz ├── macos │   ├── sketchymaze-0.10.0-macOS-x64.dmg │   └── sketchymaze-0.10.0-macos-x64.zip └── windows ├── sketchymaze-0.10.0-windows-32bit.zip └── sketchymaze-0.10.0-windows-64bit.zip 3 directories, 15 files ``` Such that you could simply rsync it to the download server.
kirsle added the
enhancement
label 2022-01-02 03:18:27 +00:00
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: SketchyMaze/doodle#56
There is no content yet.