From fa704c5d66c008014dd7ecd6793ca05415b7f6ee Mon Sep 17 00:00:00 2001 From: scdhh <51957264+shoucandanghehe@users.noreply.github.com> Date: Thu, 19 Aug 2021 20:31:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8Release=20C?= =?UTF-8?q?I=EF=BC=8C=E5=B9=B6=E9=87=8D=E6=9E=84=E7=8E=B0=E5=9C=A8Snapshot?= =?UTF-8?q?=20CI=E7=9A=84=E4=B8=80=E4=BA=9B=E6=AD=A5=E9=AA=A4=20#204=20(#2?= =?UTF-8?q?17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修改updateConfVersion.py * 添加更新conf.lua时修改存档目录的步骤 * Add files via upload * 更改ci脚本以适配新版版本信息 * 修正问题 * 打包时添加version.lua * 更新updateVersion.py以适配新版版本信息 * 删除被替换的py文件 * 同步release分支 * 修复Windows CI的bug * 修正路径 * 修正Linux权限错误 * 尝试修复Windows CI错误 * 尝试修复Windows CI的bug Co-authored-by: MrZ_26 <1046101471@qq.com> --- .github/workflows/build.yml | 147 ++++--- .github/workflows/getVersion.lua | 23 +- .github/workflows/release.yml | 401 ++++++++++++++++++ .github/workflows/updateAndroidVersion.py | 14 - .github/workflows/updateConfVersion.py | 26 -- .github/workflows/updateVersion.py | 66 +++ build/Linux/Techmino.desktop.template | 8 + build/Linux/icon.png | Bin 0 -> 26989 bytes build/Linux/icon_snapshot.png | Bin 0 -> 11436 bytes build/Linux/love.template | 5 + build/Windows/Techmino.rc.template | 23 + build/Windows/icon.ico | Bin 0 -> 26026 bytes build/Windows/icon_snapshot.ico | Bin 0 -> 10827 bytes .../macOS/info.plist.template | 18 +- 14 files changed, 622 insertions(+), 109 deletions(-) create mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/updateAndroidVersion.py delete mode 100644 .github/workflows/updateConfVersion.py create mode 100644 .github/workflows/updateVersion.py create mode 100644 build/Linux/Techmino.desktop.template create mode 100644 build/Linux/icon.png create mode 100644 build/Linux/icon_snapshot.png create mode 100644 build/Linux/love.template create mode 100644 build/Windows/Techmino.rc.template create mode 100644 build/Windows/icon.ico create mode 100644 build/Windows/icon_snapshot.ico rename .github/workflows/updateOSXVersion.py => build/macOS/info.plist.template (74%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index df4cef6f..56fc67aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,7 @@ jobs: curl -OL https://nchc.dl.sourceforge.net/project/luabinaries/5.4.2/Tools%20Executables/lua-5.4.2_Win64_bin.zip - name: Unpack lua run: | - 7z x lua-5.4.2_Win64_bin.zip -olua + 7z x .\lua-5.4.2_Win64_bin.zip -olua rename-Item '.\lua\lua54.exe' -NewName 'lua.exe' - name: Get CommitID run: | @@ -22,28 +22,49 @@ jobs: echo "CommitID=${CommitID}" >> $env:GITHUB_ENV - name: Get Version run: | - $Version=.\lua\lua.exe .\.github\workflows\getVersion.lua -string + $Version=.\lua\lua.exe .\.github\workflows\getVersion.lua -name echo "Version=${Version}" >> $env:GITHUB_ENV - - name: Update Conf Version + - name: Update Conf run: | - python .github/workflows/updateConfVersion.py -H ${{ env.CommitID }} + python .\.github\workflows\updateVersion.py -T Conf + - name: Update Version + run: | + python .\.github\workflows\updateVersion.py -T Version -H ${{ env.CommitID }} - name: Download love run: | curl -OL https://github.com/love2d/love/releases/download/11.3/love-11.3-win64.zip - 7z x love-11.3-win64.zip + - name: Unpack love + run: | + 7z x .\love-11.3-win64.zip - name: Download ColdClear run: | - curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/20210520/win64.zip - 7z x win64.zip -ocoldclear - move coldclear\cold_clear.dll love-11.3-win64 - move coldclear\CCloader.dll love-11.3-win64 - - name: Pack Techmino - shell: cmd + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/win64.zip + - name: Unpack ColdClear run: | - 7z a -tzip game.love document media parts Zframework conf.lua font.ttf main.lua version.lua - copy /b love-11.3-win64\love.exe + game.love love-11.3-win64\Techmino.exe - del love-11.3-win64\love.exe - del love-11.3-win64\lovec.exe + 7z x .\win64.zip -oColdClear + - name: Download ResourceHacker + run: | + curl -OL http://www.angusj.com/resourcehacker/resource_hacker.zip + - name: Unpack ResourceHacker + run: | + 7z x .\resource_hacker.zip + - name: Pack Techmino + run: | + 7z a -tzip .\Techmino.love .\document .\media .\parts .\Zframework .\conf.lua .\font.ttf .\main.lua .\version.lua + cmd /c copy /b .\love-11.3-win64\love.exe + .\Techmino.love .\love-11.3-win64\Techmino.exe + del .\love-11.3-win64\love.exe + del .\love-11.3-win64\lovec.exe + del .\love-11.3-win64\game.ico + del .\love-11.3-win64\love.ico + del .\love-11.3-win64\changes.txt + del .\love-11.3-win64\readme.txt + move .\ColdClear\cold_clear.dll .\love-11.3-win64 + move .\ColdClear\CCloader.dll .\love-11.3-win64 + python .\.github\workflows\updateVersion.py -T Windows -N ${{ env.Version }} + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action delete -mask ICONGROUP,,' + cmd /c '.\ResourceHacker.exe -open .\Techmino.rc -save .\Techmino.res -action compile' + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action addoverwrite -res ".\build\Windows\icon.ico" -mask ICONGROUP,1,' + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action addoverwrite -res ".\Techmino.res" -mask VERSIONINFO,1,' - name: Upload uses: actions/upload-artifact@v2 with: @@ -65,30 +86,52 @@ jobs: echo "CommitID=${CommitID}" >> $GITHUB_ENV - name: Get Version run: | - Version=$(lua ./.github/workflows/getVersion.lua -string) + Version=$(lua ./.github/workflows/getVersion.lua -name) echo "Version=${Version}" >> $GITHUB_ENV - - name: Update Conf Version + - name: Update Conf run: | - python3 .github/workflows/updateConfVersion.py -H ${{ env.CommitID }} + python3 ./.github/workflows/updateVersion.py -T Conf + - name: Update Version + run: | + python3 ./.github/workflows/updateVersion.py -T Version -H ${{ env.CommitID }} + #我不是很懂这里为什么不能用https://github.com/AppImage/AppImageKit/releases/download/latest/appimagetool-x86_64.AppImage 但是事实就是它404了 - name: Download AppImageKit - run: curl -OL https://github.com/AppImage/AppImageKit/releases/download/12/appimagetool-x86_64.AppImage - - name: Unpack and Repack run: | - curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.AppImage - chmod +x Techmino.AppImage appimagetool-x86_64.AppImage - ./Techmino.AppImage --appimage-extract - rm Techmino.AppImage - cd squashfs-root/usr/share/Techmino - rm -rf document media parts Zframework conf.lua font.ttf main.lua - cd ../../../.. - cp -r document media parts Zframework conf.lua font.ttf main.lua version.lua squashfs-root/usr/share/Techmino - ./appimagetool-x86_64.AppImage squashfs-root Techmino.AppImage + curl -OL https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage + - name: Download love + run: | + curl -OL https://github.com/love2d/love/releases/download/11.3/love-11.3-x86_64.AppImage + - name: Unpack love + run: | + chmod 777 ./love-11.3-x86_64.AppImage + ./love-11.3-x86_64.AppImage --appimage-extract + - name: Download ColdClear + run: | + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/linux.zip + - name: Unpack ColdClear + run: | + 7z x ./linux.zip -oColdClear + - name: Pack Techmino + run: | + rm -rf ./squashfs-root/love ./squashfs-root/love.desktop ./squashfs-root/love.svg ./squashfs-root/.DirIcon + mv ./build/Linux/love.template ./squashfs-root/love + mv ./build/Linux/Techmino.desktop.template ./squashfs-root/Techmino.desktop + mv ./build/Linux/icon_snapshot.png ./squashfs-root/icon.png + cp ./squashfs-root/icon.png ./squashfs-root/.DirIcon + chmod 777 ./squashfs-root/love + mkdir -p ./squashfs-root/usr/share/Techmino + mv ./document ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua ./squashfs-root/usr/share/Techmino + mv ./ColdClear/CCloader.so ./squashfs-root/usr/share/Techmino + mv ./ColdClear/libcold_clear.so ./squashfs-root/usr/lib + chmod 777 ./appimagetool-x86_64.AppImage + ./appimagetool-x86_64.AppImage ./squashfs-root ./Techmino.AppImage - name: Upload uses: actions/upload-artifact@v2 with: name: Techmino_${{ env.Version }}_${{ GITHUB.RUN_NUMBER }}_${{ env.CommitID }}_Linux path: Techmino.AppImage + #Android待更新 build-android: runs-on: ubuntu-20.04 steps: @@ -104,27 +147,30 @@ jobs: echo "CommitID=${CommitID}" >> $GITHUB_ENV - name: Get Version run: | - Version=$(lua ./.github/workflows/getVersion.lua -string) + Version=$(lua ./.github/workflows/getVersion.lua -name) echo "Version=${Version}" >> $GITHUB_ENV - - name: Update Conf Version + - name: Update Conf run: | - python3 .github/workflows/updateConfVersion.py -H ${{ env.CommitID }} + python3 ./.github/workflows/updateVersion.py -T Conf + - name: Update Version + run: | + python3 ./.github/workflows/updateVersion.py -T Version -H ${{ env.CommitID }} - name: Download Apktool run: curl -OL https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.5.0.jar - name: Unpack and Repack run: | curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.apk - java -jar apktool_2.5.0.jar d -s -o apk Techmino.apk - 7z x -o. apk/assets/game.love libAndroid - rm apk/assets/game.love Techmino.apk - 7z a -tzip apk/assets/game.love document libAndroid media parts Zframework conf.lua font.ttf main.lua version.lua - python3 .github/workflows/updateAndroidVersion.py -C $(lua ./.github/workflows/getVersion.lua -code) -N $(lua ./.github/workflows/getVersion.lua -string) - java -jar apktool_2.5.0.jar b -o Techmino.apk apk + java -jar ./apktool_2.5.0.jar d -s -o apk ./Techmino.apk + 7z x ./apk/assets/game.love libAndroid -o. + rm -rf ./apk/assets/game.love ./Techmino.apk + 7z a -tzip ./apk/assets/game.love ./document ./libAndroid ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua + python3 ./.github/workflows/updateVersion.py -T Android -C $(lua ./.github/workflows/getVersion.lua -code) -N ${{ env.Version }} + java -jar ./apktool_2.5.0.jar b -o apk ./Techmino.apk - uses: 26F-Studio/sign-android-release@master name: Sign APK id: sign_app with: - releaseDirectory: . + releaseDirectory: ./Techmino.apk signingKeyBase64: ${{ secrets.SIGNING_KEY }} alias: ${{ secrets.ALIAS }} keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} @@ -154,22 +200,27 @@ jobs: echo "CommitID=${CommitID}" >> $GITHUB_ENV - name: Get Version run: | - Version=$(lua ./.github/workflows/getVersion.lua -string) + Version=$(lua ./.github/workflows/getVersion.lua -name) echo "Version=${Version}" >> $GITHUB_ENV - - name: Update Conf Version + - name: Update Conf run: | - python3 .github/workflows/updateConfVersion.py -H ${{ env.CommitID }} + python3 ./.github/workflows/updateVersion.py -T Conf + - name: Update Version + run: | + python3 ./.github/workflows/updateVersion.py -T Version -H ${{ env.CommitID }} - name: Pack love run: | - zip -r Techmino.love document media parts Zframework conf.lua font.ttf main.lua version.lua + 7z a -tzip ./Techmino.love ./document ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua - name: Download template run: | curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.app.zip - unzip Techmino.app.zip + - name: Unpack template + run: | + 7z x ./Techmino.app.zip - name: Modify template run: | - python3 .github/workflows/updateOSXVersion.py -N $(lua ./.github/workflows/getVersion.lua -string) - mv Techmino.love Techmino.app/Contents/Resources + python3 ./.github/workflows/updateVersion.py -T macOS -N ${{ env.Version }} + mv ./Techmino.love ./Techmino.app/Contents/Resources - name: Codesign executable # In secrets: # - MACOS_CERTIFICATE: the *.p12 Developer ID Certificate, encoded in base64 @@ -187,9 +238,9 @@ jobs: /usr/bin/codesign --force --deep -s 79B81FC5EA155243C973B5417B0996501F00EF55 ./Techmino.app -v - name: Pack Techmino run: | - zip -r -y Techmino-Packed.app.zip Techmino.app + zip -r -y Techmino.zip Techmino.app - name: Upload uses: actions/upload-artifact@v2 with: name: Techmino_${{ env.Version }}_${{ GITHUB.RUN_NUMBER }}_${{ env.CommitID }}_macOS - path: Techmino-Packed.app.zip \ No newline at end of file + path: Techmino.zip \ No newline at end of file diff --git a/.github/workflows/getVersion.lua b/.github/workflows/getVersion.lua index a32b66af..98f39387 100644 --- a/.github/workflows/getVersion.lua +++ b/.github/workflows/getVersion.lua @@ -1,16 +1,25 @@ if arg[1]=="-code"then print(require"version".apkCode) -elseif arg[1]=="-string"then +elseif arg[1]=="-name"then print((require"version".string:gsub("@DEV",""))) +elseif arg[1]=="-release"then + print((require"version".string:gsub("V",""))) +elseif arg[1]=="-updateTitle"then + local note=require"parts.updateLog" + local p1=note:find("\n%d")+1 + local p2=note:find("\n",p1)-1 + note=note:sub(p1,p2) + print(note) elseif arg[1]=="-updateNote"then local note=require"parts.updateLog" - local p1=note:find("\n%d") + local p1=note:find("\n",note:find("\n%d")+1)+1 local p2=note:find("\n%d",p1+1) note=note:sub(p1,p2-2) - note=note:gsub("\t\t\t\t","_") - note=note:gsub("\t\t","") - note=note:gsub("\n([^_])","\n\n%1") - note=note:gsub("\n_","\n") - note=note:gsub("\n\n","\n",1) + note=note + :gsub("\t\t\t\t","_") + :gsub("\t\t","") + :gsub("\n([^_])","\n\n%1") + :gsub("\n_","\n") + :gsub("\n\n","\n",1) print(note) end \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..f5f50bcf --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,401 @@ +name: Techmino Release CI + +on: + push: + tags: + - '*' + +jobs: + build-windows-x64: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - name: Download lua + run: | + curl -OL https://nchc.dl.sourceforge.net/project/luabinaries/5.4.2/Tools%20Executables/lua-5.4.2_Win64_bin.zip + - name: Unpack lua + run: | + 7z x .\lua-5.4.2_Win64_bin.zip -olua + rename-Item '.\lua\lua54.exe' -NewName 'lua.exe' + - name: Update Version + run: | + python .\.github\workflows\updateVersion.py -T Version + - name: Get Version + run: | + $Version=.\lua\lua.exe .\.github\workflows\getVersion.lua -release + echo "Version=${Version}" >> $env:GITHUB_ENV + - name: Get ReleaseTitle + run: | + $Title=.\lua\lua.exe .\.github\workflows\getVersion.lua -updateTitle + echo "Title=${Title}" >> $env:GITHUB_ENV + - name: Download love + run: | + curl -OL https://github.com/love2d/love/releases/download/11.3/love-11.3-win64.zip + - name: Unpack love + run: | + 7z x .\love-11.3-win64.zip + - name: Download ColdClear + run: | + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/win64.zip + - name: Unpack ColdClear + run: | + 7z x .\win64.zip -oColdClear + - name: Download ResourceHacker + run: | + curl -OL http://www.angusj.com/resourcehacker/resource_hacker.zip + - name: Unpack ResourceHacker + run: | + 7z x .\resource_hacker.zip + - name: Pack Techmino + run: | + 7z a -tzip .\Techmino.love .\document .\media .\parts .\Zframework .\conf.lua .\font.ttf .\main.lua .\version.lua + cmd /c copy /b .\love-11.3-win64\love.exe + .\Techmino.love .\love-11.3-win64\Techmino.exe + del .\love-11.3-win64\love.exe + del .\love-11.3-win64\lovec.exe + del .\love-11.3-win64\game.ico + del .\love-11.3-win64\love.ico + del .\love-11.3-win64\changes.txt + del .\love-11.3-win64\readme.txt + move .\ColdClear\cold_clear.dll .\love-11.3-win64 + move .\ColdClear\CCloader.dll .\love-11.3-win64 + python .\.github\workflows\updateVersion.py -T Windows -N ${{ env.Version }} + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action delete -mask ICONGROUP,,' + cmd /c '.\ResourceHacker.exe -open .\Techmino.rc -save .\Techmino.res -action compile' + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action addoverwrite -res ".\build\Windows\icon.ico" -mask ICONGROUP,1,' + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action addoverwrite -res ".\Techmino.res" -mask VERSIONINFO,1,' + 7z a -tzip .\Techmino.a${{ env.Version }}.Win64.zip .\love-11.3-win64\ + - name: Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.Title }} + files: Techmino.a${{ env.Version }}.Win64.zip + + build-windows-x86: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - name: Download lua + run: | + curl -OL https://nchc.dl.sourceforge.net/project/luabinaries/5.4.2/Tools%20Executables/lua-5.4.2_Win64_bin.zip + - name: Unpack lua + run: | + 7z x .\lua-5.4.2_Win64_bin.zip -olua + rename-Item '.\lua\lua54.exe' -NewName 'lua.exe' + - name: Update Version + run: | + python .\.github\workflows\updateVersion.py -T Version + - name: Get Version + run: | + $Version=.\lua\lua.exe .\.github\workflows\getVersion.lua -release + echo "Version=${Version}" >> $env:GITHUB_ENV + - name: Get ReleaseTitle + run: | + $Title=.\lua\lua.exe .\.github\workflows\getVersion.lua -updateTitle + echo "Title=${Title}" >> $env:GITHUB_ENV + - name: Download love + run: | + curl -OL https://github.com/love2d/love/releases/download/11.3/love-11.3-win32.zip + - name: Unpack love + run: | + 7z x .\love-11.3-win32.zip + - name: Download ColdClear + run: | + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/win32.zip + - name: Unpack ColdClear + run: | + 7z x .\win32.zip -oColdClear + - name: Download ResourceHacker + run: | + curl -OL http://www.angusj.com/resourcehacker/resource_hacker.zip + - name: Unpack ResourceHacker + run: | + 7z x .\resource_hacker.zip + - name: Pack Techmino + run: | + 7z a -tzip .\Techmino.love .\document .\media .\parts .\Zframework .\conf.lua .\font.ttf .\main.lua .\version.lua + cmd /c copy /b .\love-11.3-win32\love.exe + .\Techmino.love .\love-11.3-win32\Techmino.exe + del .\love-11.3-win32\love.exe + del .\love-11.3-win32\lovec.exe + del .\love-11.3-win32\game.ico + del .\love-11.3-win32\love.ico + del .\love-11.3-win32\changes.txt + del .\love-11.3-win32\readme.txt + move .\ColdClear\cold_clear.dll .\love-11.3-win32 + move .\ColdClear\CCloader.dll .\love-11.3-win32 + python .\.github\workflows\updateVersion.py -T Windows -N ${{ env.Version }} + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win32\Techmino.exe -save .\love-11.3-win32\Techmino.exe -action delete -mask ICONGROUP,,' + cmd /c '.\ResourceHacker.exe -open .\Techmino.rc -save .\Techmino.res -action compile' + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win32\Techmino.exe -save .\love-11.3-win32\Techmino.exe -action addoverwrite -res ".\build\Windows\icon.ico" -mask ICONGROUP,1,' + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win32\Techmino.exe -save .\love-11.3-win32\Techmino.exe -action addoverwrite -res ".\Techmino.res" -mask VERSIONINFO,1,' + 7z a -tzip .\Techmino.a${{ env.Version }}.Win32.zip .\love-11.3-win32\ + - name: Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.Title }} + files: Techmino.a${{ env.Version }}.Win32.zip + + build-linux: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Install lua + run: | + sudo apt-get update -y + sudo apt-get upgrade -y + sudo apt-get install lua5.3 -y + - name: Update Version + run: | + python3 ./.github/workflows/updateVersion.py -T Version + - name: Get Version + run: | + Version=$(lua ./.github/workflows/getVersion.lua -release) + echo "Version=${Version}" >> $GITHUB_ENV + - name: Get ReleaseTitle + run: | + Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) + echo "Title=${Title}" >> $GITHUB_ENV + #我不是很懂这里为什么不能用https://github.com/AppImage/AppImageKit/releases/download/latest/appimagetool-x86_64.AppImage 但是事实就是它404了 + - name: Download AppImageKit + run: | + curl -OL https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage + - name: Download love + run: | + curl -OL https://github.com/love2d/love/releases/download/11.3/love-11.3-x86_64.AppImage + - name: Unpack love + run: | + chmod 777 ./love-11.3-x86_64.AppImage + ./love-11.3-x86_64.AppImage --appimage-extract + - name: Download ColdClear + run: | + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/linux.zip + - name: Unpack ColdClear + run: | + 7z x ./linux.zip -oColdClear + - name: Pack Techmino + run: | + rm -rf ./squashfs-root/love ./squashfs-root/love.desktop ./squashfs-root/love.svg ./squashfs-root/.DirIcon + mv ./build/Linux/love.template ./squashfs-root/love + mv ./build/Linux/Techmino.desktop.template ./squashfs-root/Techmino.desktop + mv ./build/Linux/icon.png ./squashfs-root/icon.png + cp ./squashfs-root/icon.png ./squashfs-root/.DirIcon + chmod 777 ./squashfs-root/love + mkdir -p ./squashfs-root/usr/share/Techmino + mv ./document ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua ./squashfs-root/usr/share/Techmino + mv ./ColdClear/CCloader.so ./squashfs-root/usr/share/Techmino + mv ./ColdClear/libcold_clear.so ./squashfs-root/usr/lib + chmod 777 ./appimagetool-x86_64.AppImage + ./appimagetool-x86_64.AppImage ./squashfs-root ./Techmino.a${{ env.Version }}.AppImage + - name: Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.Title }} + files: Techmino.a${{ env.Version }}.AppImage + + #Android待更新 + build-android: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Install lua + run: | + sudo apt-get update -y + sudo apt-get upgrade -y + sudo apt-get install lua5.3 -y + - name: Update Version + run: | + python3 ./.github/workflows/updateVersion.py -T Version + - name: Get Version + run: | + Version=$(lua ./.github/workflows/getVersion.lua -release) + echo "Version=${Version}" >> $GITHUB_ENV + - name: Get ReleaseTitle + run: | + Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) + echo "Title=${Title}" >> $GITHUB_ENV + - name: Download Apktool + run: curl -OL https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.5.0.jar + - name: Unpack and Repack + run: | + curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.apk + java -jar ./apktool_2.5.0.jar d -s -o apk ./Techmino.apk + 7z x ./apk/assets/game.love libAndroid -o. + rm -rf ./apk/assets/game.love ./Techmino.apk + 7z a -tzip ./apk/assets/game.love ./document ./libAndroid ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua + python3 ./.github/workflows/updateVersion.py -T Android -C $(lua ./.github/workflows/getVersion.lua -code) -N $(lua ./.github/workflows/getVersion.lua -name) + java -jar ./apktool_2.5.0.jar b -o apk ./Techmino.a${{ env.Version }}.apk + - uses: 26F-Studio/sign-android-release@master + name: Sign APK + id: sign_app + with: + releaseDirectory: ./Techmino.a${{ env.Version }}.apk + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + alias: ${{ secrets.ALIAS }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + env: + BUILD_TOOLS_VERSION: "30.0.2" + - name: Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.Title }} + files: ${{steps.sign_app.outputs.signedReleaseFile}} + + #Android-mini待更新 + build-android-mini: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Install lua + run: | + sudo apt-get update -y + sudo apt-get upgrade -y + sudo apt-get install lua5.3 -y + - name: Update Version + run: | + python3 ./.github/workflows/updateVersion.py -T Version + - name: Get Version + run: | + Version=$(lua ./.github/workflows/getVersion.lua -release) + echo "Version=${Version}" >> $GITHUB_ENV + - name: Get ReleaseTitle + run: | + Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) + echo "Title=${Title}" >> $GITHUB_ENV + - name: Download Apktool + run: curl -OL https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.5.0.jar + - name: Unpack and Repack + run: | + curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.apk + java -jar ./apktool_2.5.0.jar d -s -o apk ./Techmino.apk + 7z x ./apk/assets/game.love libAndroid -o. + rm -rf ./apk/assets/game.love ./Techmino.apk + rm -rf ./media/BGM ./media/SFX ./media/VOICE + 7z a -tzip ./apk/assets/game.love ./document ./libAndroid ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua + python3 ./.github/workflows/updateVersion.py -T Android -C $(lua ./.github/workflows/getVersion.lua -code) -N $(lua ./.github/workflows/getVersion.lua -name) + java -jar ./apktool_2.5.0.jar b -o apk ./Techmino.a${{ env.Version }}.mini.apk + - uses: 26F-Studio/sign-android-release@master + name: Sign APK + id: sign_app + with: + releaseDirectory: ./Techmino.a${{ env.Version }}.mini.apk + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + alias: ${{ secrets.ALIAS }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + env: + BUILD_TOOLS_VERSION: "30.0.2" + - name: Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.Title }} + files: ${{steps.sign_app.outputs.signedReleaseFile}} + + build-macOS: + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + - name: Install lua + run: | + curl -OL http://www.lua.org/ftp/lua-5.4.3.tar.gz + tar zxf lua-5.4.3.tar.gz + cd lua-5.4.3 + make macosx + sudo make install + - name: Update Version + run: | + python3 ./.github/workflows/updateVersion.py -T Version + - name: Get Version + run: | + Version=$(lua ./.github/workflows/getVersion.lua -release) + echo "Version=${Version}" >> $GITHUB_ENV + - name: Get ReleaseTitle + run: | + Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) + echo "Title=${Title}" >> $GITHUB_ENV + - name: Pack love + run: | + 7z a -tzip ./Techmino.love ./document ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua + - name: Download template + run: | + curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.app.zip + - name: Unpack template + run: | + 7z x ./Techmino.app.zip + - name: Modify template + run: | + python3 ./.github/workflows/updateVersion.py -T macOS -N $(lua ./.github/workflows/getVersion.lua -name) + mv ./Techmino.love ./Techmino.app/Contents/Resources + - name: Codesign executable + # In secrets: + # - MACOS_CERTIFICATE: the *.p12 Developer ID Certificate, encoded in base64 + # - MACOS_CERTIFICATE_PWD: The password + env: + MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} + MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} + run: | + echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12 + security create-keychain -p Techminohaowan build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p Techminohaowan build.keychain + security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k Techminohaowan build.keychain + /usr/bin/codesign --force --deep -s 79B81FC5EA155243C973B5417B0996501F00EF55 ./Techmino.app -v + - name: Pack Techmino + run: | + zip -r -y Techmino.a${{ env.Version }}.macOS.zip Techmino.app + - name: Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.Title }} + files: Techmino.a${{ env.Version }}.macOS.zip + + build-love: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Install lua + run: | + sudo apt-get update -y + sudo apt-get upgrade -y + sudo apt-get install lua5.3 -y + - name: Update Version + run: | + python3 ./.github/workflows/updateVersion.py -T Version + - name: Get Version + run: | + Version=$(lua ./.github/workflows/getVersion.lua -release) + echo "Version=${Version}" >> $GITHUB_ENV + - name: Get ReleaseTitle + run: | + Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) + - name: Pack Techmino + run: | + 7z a -tzip ./Techmino.a${{ env.Version }}.love ./document ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua + - name: Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.Title }} + files: Techmino.a${{ env.Version }}.love + + Add-Release-note: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Install lua + run: | + sudo apt-get update -y + sudo apt-get upgrade -y + sudo apt-get install lua5.3 -y + - name: Get ReleaseTitle + run: | + Title=lua ./.github/workflows/getVersion.lua -updateTitle + echo "Title=${Title}" >> $GITHUB_ENV + - name: Get ReleaseNote + run: | + Note=lua ./.github/workflows/getVersion.lua -updateNote + echo "Note=${Note}" >> $GITHUB_ENV + - name: Release + uses: softprops/action-gh-release@v1 + with: + name: ${{ env.Title }} + body: ${{ env.Note }} \ No newline at end of file diff --git a/.github/workflows/updateAndroidVersion.py b/.github/workflows/updateAndroidVersion.py deleted file mode 100644 index af6ebb8f..00000000 --- a/.github/workflows/updateAndroidVersion.py +++ /dev/null @@ -1,14 +0,0 @@ -import re, argparse - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description="用于CI更新Android版本号") - parser.add_argument("-C", "--Code", type=str, help = "versionCode") - parser.add_argument("-N", "--Name", type=str, help = "versionName") - args = parser.parse_args() - with open("apk/apktool.yml", "r+") as file: - data = file.read() - data = re.sub("versionCode:.+", f"versionCode: '{args.Code}'", data) - data = re.sub("versionName:.+", f"versionName: '{args.Name}'", data) - file.seek(0) - file.truncate() - file.write(data) \ No newline at end of file diff --git a/.github/workflows/updateConfVersion.py b/.github/workflows/updateConfVersion.py deleted file mode 100644 index 25849572..00000000 --- a/.github/workflows/updateConfVersion.py +++ /dev/null @@ -1,26 +0,0 @@ -import argparse - -def updateConf(): - with open("conf.lua", "r+", encoding="utf-8") as file: - data = file.read() - data = data.replace("t.identity='Techmino'--Saving folder", "t.identity='Techmino_Snapshot'--Saving folder") - file.seek(0) - file.truncate() - file.flush() - file.write(data) - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="用于更新conf.lua") - parser.add_argument("-H", "--Hash", type=str, default = False, help = "Github提交Hash") - args = parser.parse_args() - with open("version.lua", "r+", encoding="utf-8") as file: - data = file.read() - if args.Hash != False: - data = data.replace('@DEV', f'@{args.Hash[0:4]}') - updateConf() - else: - data = data.replace('@DEV', '') - file.seek(0) - file.truncate() - file.flush() - file.write(data) \ No newline at end of file diff --git a/.github/workflows/updateVersion.py b/.github/workflows/updateVersion.py new file mode 100644 index 00000000..bc47dba1 --- /dev/null +++ b/.github/workflows/updateVersion.py @@ -0,0 +1,66 @@ +import argparse + +def updateConf(): #更新存档位置 + with open('conf.lua', 'r+', encoding='utf-8') as file: + data = file.read() + data = data.replace("t.identity='Techmino'--Saving folder", "t.identity='Techmino_Snapshot'--Saving folder") + file.seek(0) + file.truncate() + file.flush() + file.write(data) + +def updateVersion(args): #更新版本号 + with open('version.lua', 'r+', encoding='utf-8') as file: + data = file.read() + if args.Hash != False: + data = data.replace('@DEV', f'@{args.Hash[0:4]}') + updateConf() + else: + data = data.replace('@DEV', '') + file.seek(0) + file.truncate() + file.flush() + file.write(data) + +def updateMacOS(args): #更新macOS打包信息 + import datetime + with open('./build/macOS/info.plist.template', 'r', encoding='utf-8') as template: + template = ((template.read()).replace('@versionName', args.Name)).replace('@ThisYear', str(datetime.datetime.today().year)) + with open('./Techmino.app/Contents/info.plist', 'w+', encoding='utf-8') as file: + file.write(template) + +def updateWindows(args): #更新Windows打包信息 + Version = (args.Name).replace('V', '') + FileVersion = (f"{Version.replace('.', ',')},0") + with open('./build/Windows/Techmino.rc.template', 'r', encoding='utf8') as templace: + template = ((templace.read()).replace('@FileVersion', FileVersion)).replace('@Version', Version) + with open('Techmino.rc', 'w+', encoding='utf8') as file: + file.write(template) + +def updateAndroid(args): #更新Android打包信息 + import re + with open('./apk/apktool.yml', 'r+', encoding='utf-8') as file: + data = file.read() + data = re.sub("versionCode:.+", f"versionCode: '{args.Code}'", data) + data = re.sub("versionName:.+", f"versionName: '{args.Name}'", data) + file.seek(0) + file.truncate() + file.write(data) + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='用于CI更新程序各类信息') + parser.add_argument('-T', '--Type', type=str, help = '更新的种类') + parser.add_argument('-H', '--Hash', type=str, default = False, help = 'Github提交Hash') + parser.add_argument('-C', '--Code', type=str, default = False, help = 'versionCode') + parser.add_argument('-N', '--Name', type=str, default = False, help = 'versionName') + args = parser.parse_args() + if args.Type == 'Conf': + updateConf() + elif args.Type == 'Version': + updateVersion(args) + elif args.Type == 'Windows': + updateWindows(args) + elif args.Type == 'macOS': + updateMacOS(args) + elif args.Type == 'Android': + updateAndroid(args) \ No newline at end of file diff --git a/build/Linux/Techmino.desktop.template b/build/Linux/Techmino.desktop.template new file mode 100644 index 00000000..1cec86b9 --- /dev/null +++ b/build/Linux/Techmino.desktop.template @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Techmino Alpha +Comment=Techmino is fun! +Exec=wrapper-love %f +Type=Application +Categories=Game; +Terminal=false +Icon=icon \ No newline at end of file diff --git a/build/Linux/icon.png b/build/Linux/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4f801e67abb246a42779ac60863c0c7d59559b17 GIT binary patch literal 26989 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 XZ*Zg^zBdQop9Il(sH;-0WF7W@Nx4Yd literal 0 HcmV?d00001 diff --git a/build/Linux/icon_snapshot.png b/build/Linux/icon_snapshot.png new file mode 100644 index 0000000000000000000000000000000000000000..80a9f9178e39bfeb76f20033a5a5cdf334b28b48 GIT binary patch literal 11436 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⋘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 VQ}|oNITRugYF9OtiWSTP{s%oM3?={o literal 0 HcmV?d00001 diff --git a/.github/workflows/updateOSXVersion.py b/build/macOS/info.plist.template similarity index 74% rename from .github/workflows/updateOSXVersion.py rename to build/macOS/info.plist.template index e4e79783..44b90389 100644 --- a/.github/workflows/updateOSXVersion.py +++ b/build/macOS/info.plist.template @@ -1,6 +1,4 @@ -import argparse, datetime - -info = r""" + @@ -21,7 +19,7 @@ info = r""" CFBundlePackageType APPL CFBundleShortVersionString - %s + @versionName CFBundleSignature LoVe CFBundleSupportedPlatforms @@ -49,18 +47,10 @@ info = r""" NSHighResolutionCapable NSHumanReadableCopyright - ©2020-%d 26F Studio, GNU LGPLv3.0 + ©2020-@ThisYear 26F Studio, GNU LGPLv3.0 NSPrincipalClass NSApplication NSSupportsAutomaticGraphicsSwitching - -""" - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description="用于CI更新macOS版本号") - parser.add_argument("-N", "--Name", type=str, help = "versionName") - args = parser.parse_args() - with open("Techmino.app/Contents/info.plist", "w") as file: - file.write(info % (args.Name, datetime.datetime.today().year)) \ No newline at end of file + \ No newline at end of file