Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AppImage #48

Merged
merged 6 commits into from
Nov 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,91 @@ jobs:
artifacts: "trifa-material_nightly.deb,trifa-material_nightly.rpm"




build-appimage-nightly-artifact:
name: Nightly Artifact AppImage Build
runs-on: ubuntu-20.04
needs: [update-nightly-tag]
if: |
always() &&
(needs.update-nightly-tag.result == 'success' ||
needs.update-nightly-tag.result == 'skipped')
permissions:
contents: write
steps:
- uses: actions/checkout@v3

- name: install dependencies
run: |
sudo apt-get update && \
sudo DEBIAN_FRONTEND=noninteractive \
apt-get install -y --no-install-recommends \
ca-certificates \
wget \
rpm \
sed \
openjdk-17-jdk \
openjdk-17-jdk-headless

- name: show java version
run: type -a java;java -version

- name: set java version
run: sudo update-java-alternatives -s java-1.17.0-openjdk-amd64

- name: show java version
run: type -a java;java -version

- name: activate appimage package creation
run: |
sed -i -e 's#TargetFormat.Dmg#TargetFormat.AppImage#' build.gradle.kts

- name: build package
run: id;pwd;ls -al;./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 packageAppImage

- name: make appimage
run: id;pwd;ls -al;./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 executeAppImageBuilder

- name: check appimage
run: id;pwd;ls -hal ./trifa*material*AppImage

- name: Rename artifact for nightly upload
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: |
cp -v ./trifa*material*AppImage trifa-material_nightly-x86_64.appimage
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: trifa-material_nightly-x86_64.appimage
path: trifa-material_nightly-x86_64.appimage

- name: Rename artifact for release upload
if: contains(github.ref, 'refs/tags/v')
run: |
cp -v ./trifa*material*AppImage trifa-material-x86_64.appimage
- name: Upload to versioned release
if: contains(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "trifa-material-x86_64.appimage"

- name: Upload to nightly release
uses: ncipollo/release-action@v1
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "trifa-material_nightly-x86_64.appimage"

build-macos-nightly-artifact:
name: Nightly Artifact macOS Build
runs-on: macos-latest
Expand Down
128 changes: 128 additions & 0 deletions .github/workflows/package_startup_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,131 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "package-screenshot-macos.png"

windows-test:
runs-on: windows-latest
if: ${{ true }}
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- name: Display the path
run: echo %PATH%
shell: cmd

- uses: actions/setup-java@v3
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '17'

- name: java-version
run: java -version
shell: bash

- name: download package
shell: bash
run: |
curl -L "https://github.com/Zoxcore/trifa_material/releases/download/nightly/trifa-material_nightly.msi" -o app.msi
pwd
ls -al

- name: list and install downloaded package
shell: pwsh
run: |
$file = "D:\a\trifa_material\trifa_material\app.msi"
$log = "install.log"
$procMain = Start-Process "msiexec" "/i `"$file`" /qn /l*! `"$log`"" -NoNewWindow -PassThru
$procLog = Start-Process "powershell" "Get-Content -Path `"$log`" -Wait" -NoNewWindow -PassThru
$procMain.WaitForExit()
$procLog.Kill()
dir "C:\Program Files\trifa_material\"

- name: list installed software
shell: pwsh
run: |
get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name

# C9814BA7-5321-378E-A20F-D3B0A2B2DED5

- name: startup-app
shell: pwsh
run: |
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
Start-Sleep -Seconds 30
Start-Process -FilePath 'C:\Program Files\trifa_material\trifa_material.exe' -WorkingDirectory "D:\a\trifa_material\trifa_material"
Start-Sleep -Seconds 20
Start-Sleep -Seconds 8
$signature=@'
[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru
$x = 84
$y = 104
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
sleep -Seconds 02
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
sleep -Seconds 02
$x = 146
$y = 104
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
Start-Sleep -Seconds 2

- name: startup-app
shell: pwsh
run: |
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$signature=@'
[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru
$x = 215
$y = 325
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
sleep -Seconds 02
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
sleep -Seconds 02

- name: capture-screen
shell: pwsh
run: |
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height
$graphic = [System.Drawing.Graphics]::FromImage($bitmap)
$graphic.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)
$bitmap.Save("D:\a\trifa_material\trifa_material\package-screenshot-windows.png")
Write-Output "Screenshot saved to:"
Write-Output D:\a\trifa_material\trifa_material\package-screenshot-windows.png

- name: upload-screenshots
uses: actions/upload-artifact@v3
with:
name: screenshot-windows
path: |
D:\a\trifa_material\trifa_material\package-screenshot-windows.png

- name: Upload to nightly release
uses: ncipollo/release-action@v1
if: github.ref == 'refs/heads/master'
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "package-screenshot-windows.png"

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ datadir/
tempdir/
main.db-journal
savedata.tox__backup
trifa_material-*.AppImage
18 changes: 14 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,8 @@ compose.desktop {
TargetFormat.Msi, TargetFormat.Exe,
TargetFormat.Dmg,
TargetFormat.Deb, TargetFormat.Rpm
) // , TargetFormat.AppImage)
)
// TargetFormat.AppImage

nativeDistributions {
// modules("java.instrument", "java.net.http", "java.prefs", "java.sql", "jdk.unsupported")
Expand Down Expand Up @@ -140,15 +141,24 @@ tasks {

val copyAppimageIconfile by registering(Exec::class) {
environment("ARCH", "x86_64")
commandLine("cp", "-v", linuxIconFile, "${linuxAppDir}/${appName}")
println("iconFile_src=" + linuxIconFile)
println("iconFile_dst=" + "${linuxAppDir}/trifa_material.png")
println("appName=" + "${appName}")
commandLine("cp", "-v", linuxIconFile, "${linuxAppDir}/trifa_material.png")
}

val setAppimageRunfile by registering(Exec::class) {
workingDir = linuxAppDir
commandLine("ln", "-sf", "trifa_material/bin/trifa_material", "AppRun")
}

val executeAppImageBuilder by registering(Exec::class) {
dependsOn(downloadAppImageBuilder)
// dependsOn(copyBuildToPackaging)
dependsOn(copyAppimageDesktopfile)
dependsOn(copyAppimageIconfile)
dependsOn(setAppimageRunfile)
environment("ARCH", "x86_64")
commandLine(appImageTool, linuxAppDir, "$appName-${project.version}.AppImage")
println("cmd: " + "${appImageTool} ${linuxAppDir} $appName-${project.version}-x86_64.AppImage")
commandLine(appImageTool, linuxAppDir, "$appName-${project.version}-x86_64.AppImage")
}
}
Loading