summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-09-21 23:11:44 +0800
committerruki <[email protected]>2021-09-21 23:11:44 +0800
commitf983b338f13830bacc39cc1f23d2e45b65c242b9 (patch)
tree8c41f2b44c36d5e441c2e3f393ec31655fbe10eb
parentf13f41af8efd73db63f6a1ebdc759477e0f3a0b0 (diff)
add windows lua ci
-rw-r--r--.github/workflows/windows_lua.yml122
1 files changed, 122 insertions, 0 deletions
diff --git a/.github/workflows/windows_lua.yml b/.github/workflows/windows_lua.yml
new file mode 100644
index 000000000..b9352918d
--- /dev/null
+++ b/.github/workflows/windows_lua.yml
@@ -0,0 +1,122 @@
+name: Windows (Lua)
+
+on:
+ pull_request:
+ push:
+ release:
+ types: [published]
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ os: [windows-latest, windows-2016]
+ arch: [x64, x86]
+
+ runs-on: ${{ matrix.os }}
+
+ concurrency:
+ group: ${{ github.head_ref }}-${{ matrix.os }}-${{ matrix.arch }}-Windows-Lua
+ cancel-in-progress: true
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ # WyriHaximus/github-action-get-previous-tag@master need it
+ fetch-depth: 0
+ submodules: true
+ - uses: xmake-io/github-action-setup-xmake@v1
+ with:
+ # this is not supported, use dev branch instead
+ # xmake-version: local#
+ xmake-version: branch@dev
+ - uses: dlang-community/setup-dlang@v1
+ with:
+ compiler: dmd-latest
+ - uses: little-core-labs/[email protected]
+ id: tagName
+
+ - name: Prepare
+ run: |
+ xmake show
+ Invoke-WebRequest "https://github.com/xmake-mirror/nsis/releases/download/v30b3/nsis-3.04.zip" -UseBasicParsing -OutFile ./nsis.zip
+ Invoke-WebRequest "https://github.com/xmake-mirror/nsis/releases/download/v30b3/nsis-3.04-strlen_8192.zip" -UseBasicParsing -OutFile ./nsis-longstr.zip
+ Invoke-WebRequest "https://github.com/xmake-mirror/nsis/releases/download/v30b3/UAC.zip" -UseBasicParsing -OutFile ./nsis-uac.zip
+ Expand-Archive ./nsis.zip -DestinationPath ./nsis
+ Move-Item ./nsis/*/* ./nsis
+ Expand-Archive ./nsis-longstr.zip -DestinationPath ./nsis -Force
+ Expand-Archive ./nsis-uac.zip -DestinationPath ./nsis -Force
+ Move-Item ./nsis/UAC.nsh ./nsis/Include/
+
+ - name: Build
+ run: |
+ xmake f -vD -P core -a ${{ matrix.arch }} --runtime=lua
+ xmake -vD -P core
+
+ - name: Tests
+ run: |
+ Copy-Item ./core/build/xmake.exe ./xmake
+ Copy-Item ./scripts/xrepo.bat ./xmake
+ Copy-Item ./scripts/xrepo.ps1 ./xmake
+ $Env:XMAKE_PROGRAM_DIR = $(Resolve-Path ./xmake)
+ Set-Item -Path Env:Path -Value ($Env:XMAKE_PROGRAM_DIR + ";" + $Env:Path)
+ xrepo --version
+ xmake show
+ #xmake l -v private.utils.bcsave --rootname='@programdir' -x 'scripts/**|templates/**' xmake
+ xmake lua -v -D tests/run.lua
+
+ - name: Set release arch name
+ run: |
+ if ("${{ matrix.arch }}" -eq "x64") {
+ Write-Output "RELEASE_NAME=win64" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf-8 -Append
+ } else {
+ Write-Output "RELEASE_NAME=win32" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf-8 -Append
+ }
+ - name: Artifact
+ run: |
+ # build installer
+ (New-Item ./winenv/bin -ItemType Directory).FullName
+ Invoke-WebRequest "https://github.com/xmake-mirror/7zip/releases/download/19.00/7z19.00-${{ matrix.arch }}.zip" -UseBasicParsing -OutFile .\7zip.zip
+ Expand-Archive ./7zip.zip -DestinationPath ./7zip
+ Copy-Item ./7zip/7z.exe ./winenv/bin
+ Copy-Item ./7zip/7z.dll ./winenv/bin
+ Invoke-WebRequest "https://curl.se/windows/dl-7.78.0_2/curl-7.78.0_2-win32-mingw.zip" -UseBasicParsing -OutFile .\curl.zip
+ Expand-Archive ./curl.zip -DestinationPath ./curl
+ Copy-Item ./curl/curl-7.78.0-win32-mingw/bin/curl.exe ./winenv/bin
+ Copy-Item ./curl/curl-7.78.0-win32-mingw/bin/curl-ca-bundle.crt ./winenv/bin
+ $version = (Get-Command xmake/xmake.exe).FileVersionInfo
+ ./nsis/makensis.exe /DMAJOR=$($version.ProductMajorPart) /DMINOR=$($version.ProductMinorPart) /DALTER=$($version.ProductBuildPart) /DBUILD=$($($version.ProductVersion -split '\+')[1]) /D${{ matrix.arch }} .\scripts\installer.nsi
+ (New-Item ./artifacts/${{env.RELEASE_NAME}} -ItemType Directory).FullName
+ Copy-Item scripts/xmake.exe ./artifacts/${{env.RELEASE_NAME}}/xmake.exe
+ # archive
+ Copy-Item ./*.md ./xmake
+ Copy-Item ./winenv ./xmake -Recurse
+ Add-Type -AssemblyName System.Text.Encoding
+ Add-Type -AssemblyName System.IO.Compression.FileSystem
+ class FixedEncoder : System.Text.UTF8Encoding {
+ FixedEncoder() : base($true) { }
+ [byte[]] GetBytes([string] $s)
+ {
+ $s = $s.Replace("\", "/")
+ return ([System.Text.UTF8Encoding]$this).GetBytes($s)
+ }
+ }
+ Copy-Item ./xmake ./archive/xmake -Recurse
+ [System.IO.Compression.ZipFile]::CreateFromDirectory("$PWD\archive", "$PWD\archive.zip", [System.IO.Compression.CompressionLevel]::Optimal, $false, [FixedEncoder]::new())
+ (Get-FileHash .\archive.zip -Algorithm SHA256).Hash.ToLower() + " *xmake.zip`n" | Out-File ./shafile -Encoding ASCII -NoNewLine -Append
+ Copy-Item archive.zip ./artifacts/${{env.RELEASE_NAME}}
+ Copy-Item shafile ./artifacts/${{env.RELEASE_NAME}}
+
+ # upload artifacts
+ - uses: actions/upload-artifact@v2
+ with:
+ name: xmake-latest.${{env.RELEASE_NAME}}.exe
+ path: artifacts/${{env.RELEASE_NAME}}/xmake.exe
+ - uses: actions/upload-artifact@v2
+ with:
+ name: xmake-latest.${{ env.RELEASE_NAME }}.zip
+ path: artifacts/${{env.RELEASE_NAME}}/archive.zip
+ - uses: actions/upload-artifact@v2
+ with:
+ name: xmake-latest.${{ env.RELEASE_NAME }}.sha256
+ path: artifacts/${{env.RELEASE_NAME}}/shafile
+