endless-sky / endless-sky-editor

Map editor for the Endless Sky universe.
GNU General Public License v3.0
68 stars 44 forks source link

Add an actions pipeline #37

Closed MCOfficer closed 2 years ago

MCOfficer commented 3 years ago

Feature: This PR adds a CI pipeline via Github Actions

Feature Details

Artifacts:

Performance

Qt is cached between runs, so the pipeline averages ~90 seconds for any workflow run.

MCOfficer commented 3 years ago

That executing it died because it couldn't find the respective dlls is at least a good sign that it would run if it had them.

With us being open source and Qt being licensed under GPL3 as well, we could try to statically link it. However, creating a static Qt first appears to be a PITA. If it's as simple as bundling the executable with a few DLLs, i would much prefer that approach.

tehhowch commented 3 years ago

That executing it died because it couldn't find the respective dlls is at least a good sign that it would run if it had them.

With us being open source and Qt being licensed under GPL3 as well, we could try to statically link it. However, creating a static Qt first appears to be a PITA. If it's as simple as bundling the executable with a few DLLs, i would much prefer that approach.

For a CI build, the bare binary is all that should be output. This job isn't a deployment / release job.

MCOfficer commented 3 years ago

That executing it died because it couldn't find the respective dlls is at least a good sign that it would run if it had them.

With us being open source and Qt being licensed under GPL3 as well, we could try to statically link it. However, creating a static Qt first appears to be a PITA. If it's as simple as bundling the executable with a few DLLs, i would much prefer that approach.

For a CI build, the bare binary is all that should be output. This job isn't a deployment / release job.

Well, it should be, eventually. I'm fine with postponing the problem, but we can think about it already.

tehhowch commented 3 years ago

Linux build also checks out (in that it died because my system has Qt 5.9.5 and is not ubuntu-latest).

es-editor-ci $ ./endless-sky-editor 
./endless-sky-editor: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ./endless-sky-editor)
./endless-sky-editor: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.15' not found (required by ./endless-sky-editor)

I did need to chmod +x the extracted binary, but this is true for the other CI workflow artifacts too.

MCOfficer commented 3 years ago

FYI, i totally forgot about this. Damn.

Linux build also checks out (in that it died because my system has Qt 5.9.5 and is not ubuntu-latest).

es-editor-ci $ ./endless-sky-editor 
./endless-sky-editor: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ./endless-sky-editor)
./endless-sky-editor: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.15' not found (required by ./endless-sky-editor)

Qt is fair enough, but is the libc version requirement a problem? I'm fairly sure we could change that by building against an older version, or potentially statically linking against musl.

I did need to chmod +x the extracted binary, but this is true for the other CI workflow artifacts too.

We can tar it if that's an issue.

MCOfficer commented 3 years ago

Checked the windows binary and got loads of errors about missing Qt5 dlls. I guess that's a success.

tehhowch commented 3 years ago

The 18.04 build resolves the libc issue :+1:

es-editor_1804 $ ./endless-sky-editor -v
./endless-sky-editor: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.15' not found (required by ./endless-sky-editor)