众所周知!在网上有很多的教你如何构建 Aseprite 的教程!但是,我们可以发现,构建 Aseprite 的步骤极其繁琐,并且需要安装 Visual Studio 这款开发工具!而我们众所周知的!这款工具占用电脑存储几十个 G,又大又笨重!我们只是想要一个可以直接使用的 Aseprite,而又不想直接上 steam 买。。
我们发现,Aseprite 这款软件是开源的!官方提供了一个 INSTALL.md 来专门指导我们如何手动安装我们的 Aseprite!这种方式的优点在于它无需付费!但是缺点就是极为繁琐。。
随后,我们可以发现,Github 提供一个很神奇的功能,叫做(CI/CD),这个功能非常强大,它可以自动化的构建任何我们想要的东西!是的,纯纯利用 Github Actions 的虚拟机来构建,无需动用本地机器!
首先,如何使用 Github Actions 呢?很简单,我们首先还得是先注册一个 Github 账号!如何注册的话这个网上有很多教程了!这里不再赘述!
随后新建一个仓库(点击右上角的+键,随后点击 Create New Repository)!仓库名称随意,仓库可以 Public 也可以 Private,但是必须新建一个 README.md!因为我们的所有操作都是要在网页端进行的!我们暂时无需动用到本地功能。。
随后,我们进入我们新建的仓库里面!网址大概是:https://github.com/<你的用户名>/<你的仓库名>。
里面大概率会有一个空的 README.md 文件!
随后,我们点击右上角绿色按钮旁边的+号按钮!因为我们要往里面添加一个自动化流的文件!点击 Create New File,随后文件名这么写:【/.github/workflows/build.yml】
之后内容嘛,各位可以先复制粘贴我以下的内容,随后我会慢慢的跟各位解释分别代表什么意思。
# 该自动化工作流仅限 Windows,如果你有更好的建议,欢迎在评论区留言~
name: Aseprite Build
on:
# 手动运行一次工作流
workflow_dispatch:
# 当 main 分支被推送时运行一次工作流
push:
branches: [main]
# 工作流内容
jobs:
# 仅一个工作流,就是构建 Windows x64,如果各位要是有别的系统构建的工作流,当然可以在评论区留言~
build:
# 工作流平台
# 发生错误时不那么快速的抛出错误!等待步骤进行完毕后再退出
strategy:
fail-fast: false
# 运行在 Windows 上的工作流
runs-on: windows-latest
steps:
# 第一步,检查代码,这一步一般是下载 git、下载一些常用软件时才用!
- name: Checkout code
uses: actions/checkout@v2
# 查找 Skia 的网址并将正确的下载链接放到 ENV 里,步骤不详解
- name: Get Skia URL
shell: pwsh
run: |
Write-Host "Start Request Skia URL"
$response = Invoke-RestMethod -Uri "https://api.github.com/repos/aseprite/skia/releases/latest" -Method Get
$url = 'https://github.com/aseprite/skia/releases/download/' + $response.tag_name + '/Skia-Windows-Release-x64.zip'
Write-Host "Skia URL: $url"
echo ('SKIA_URL=' + $url) >> $env:GITHUB_ENV
# 下载并解压 Skia 到 C 盘!
- name: Download And Unzip Skia
shell: pwsh
run: |
mkdir C:\deps
Invoke-WebRequest -Uri $env:SKIA_URL -OutFile "C:\deps\skia.zip"
Expand-Archive -Path "C:\deps\skia.zip" -DestinationPath "C:\deps\skia"
echo "SKIA_PATH=C:\deps\skia" >> $env:GITHUB_ENV
# 获取 CMAKE 的版本!因为下面有地方需要用到!
- name: Get Cmake Version
shell: pwsh
run: |
Write-Host "Start Request Cmake URL"
$response = Invoke-RestMethod -Uri "https://api.github.com/repos/Kitware/CMake/releases/latest" -Method Get
$version = $response.tag_name -replace 'v', ''
Write-Host "CMAKE Version: $version"
echo ('CMAKE_VERSION=' + $version) >> $env:GITHUB_ENV
# 下载并解压 CMAKE 到 C 盘,并且导出真实路径到 PATH!
- name: Download And Unzip Cmake
shell: pwsh
run: |
Invoke-WebRequest -Uri ('https://github.com/Kitware/CMake/releases/download/v' + $env:CMAKE_VERSION + '/cmake-' + $env:CMAKE_VERSION + '-windows-x86_64.zip') -OutFile "C:\deps\cmake.zip"
Expand-Archive -Path "C:\deps\cmake.zip" -DestinationPath "C:\deps\cmake"
echo ('CMAKE_PATH=C:\deps\cmake\cmake-' + $env:CMAKE_VERSION + '-windows-x86_64') >> $env:GITHUB_ENV
echo ('C:\deps\cmake\cmake-' + $env:CMAKE_VERSION + '-windows-x86_64\bin') >> $env:GITHUB_PATH
# 获取 Ninja 的网址
- name: Get Ninja URL
shell: pwsh
run: |
Write-Host "Start Request Ninja URL"
$response = Invoke-RestMethod -Uri "https://api.github.com/repos/ninja-build/ninja/releases/latest" -Method Get
$url = ($response.assets | Where-Object {$_.name -eq "ninja-win.zip"} ).browser_download_url
Write-Host "NINJA URL: $url"
echo "NINJA_URL=$url" >> $env:GITHUB_ENV
# 下载 Ninja 并解压到与 cmake 同一目录下方便运行
- name: Download And Unzip Ninja
shell: pwsh
run: |
Invoke-WebRequest -Uri $env:NINJA_URL -OutFile "C:\deps\ninja.zip"
Expand-Archive -Path "C:\deps\ninja.zip" -DestinationPath "$CMAKE_PATH\bin"
# 终于开始获取 Aseprite 网址啦!
- name: Get Aseprite URL
shell: pwsh
run: |
$response = Invoke-RestMethod -Uri "https://api.github.com/repos/aseprite/aseprite/releases/latest" -Method Get
$url = $response.assets[0].browser_download_url
Write-Host "Aseprite URL: $url"
echo ('ASEPRITE_URL=' + $url) >> $env:GITHUB_ENV
# 下载并解压 Aseprite
- name: Download And Unzip Aseprite
shell: pwsh
run: |
Invoke-WebRequest -Uri $env:ASEPRITE_URL -OutFile "C:\deps\aseprite.zip"
Expand-Archive -Path "C:\deps\aseprite.zip" -DestinationPath "C:\deps\aseprite"
# 添加 Microsoft MSVC++ Build,因为 Aseprite 构建不支持 Mingw。。
- name: Add MSBuild
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
# 开始打包 Aseprite 啦!以下均在官方 INSTALL.md 中运行通过!
- name: Build Aseprite
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=x64
C:
cd C:\deps\aseprite
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_IGNORE_PATH=C:\Strawberry\c\bin -DCMAKE_IGNORE_PATH=C:\mingw64\bin -DLAF_BACKEND=skia -DSKIA_DIR=C:\deps\skia -DSKIA_LIBRARY_DIR=C:\deps\skia\out\Release-x64 -DSKIA_LIBRARY=C:\deps\skia\out\Release-x64\skia.lib -G Ninja ..
ninja aseprite
# 将 构建好的 Aseprite 上传到工件以供下载!
- name: Upload Aseprite Build
uses: actions/upload-artifact@v4
with:
name: Aseprite-Latest
path: C:\deps\aseprite\build\Binary
OK,那么以上是我们的自动化工作流文件!我们将其保存,一旦保存了,那么我估计一手,各位的 Actions 栏应该会变成黄色的指示!这代表了我们的工作流开始运行啦!
随后,我们可以点击 https://github.com/<你的用户名>/<你的仓库名>/actions 下,找到我们的工作流!我们点击工作流,可以看到确实正在顺利的运行啦!但是,还是有一个小问题。。这个大概要多久呢?
其实,说久也不久,说快也不快,大概半个小时应该就可以了!喝一杯咖啡,小酌一下,随后在工作流运行结束后,我们可以回到上述网址,点击工作流,在下面就可以找到我们的生成软件啦!随后我们就可以尽情下载啦!怎么样?是不是很简单?
工作流的注释我都写好了!如果各位想要运行工作流,可以把上述全部复制,也可以仅复制内容而不复制注释!注释仅对所有的 步骤 作解释,对内部的基本原理,各位可以自行查阅 Powershell 的语法规则!
紧接着,我们将 Aseprite 从工作流中下载下来了。紧接着我们解压缩 Aseprite,随后运行!但是此时,我们惊讶的发现,它似乎缺失了一个 dll 文件!就是 libcrypto-3-x64.dll 这个文件!我也不知道是什么情况。。但是我们可以直接 bing 一下这个文件名,随后将这个 dll 文件从任意网站上下载下来,再将其放入与 exe 同级目录即可运行啦!不用放到 C:\Windows 下,只需放入同级目录即可!!
ok 了!那么本次教程到此结束!感谢各位观看!!