GitHub Actions编译
1. 前言
(‾◡◝) 前面出过了Windows和Linux的教程,但是交叉编译不同版本有点儿困难
这次经过了大佬open in new window手把手的教我配置部署到了GitHub Actions自动化编译和AList官方的一样编译很多不同版本,妈妈再也不用担心不能交叉编译啦
提示
如果你只有修改前端的想法,强烈推荐 单独只进行编译前端即可,后端(二进制)应用程序继续使用AList官方原版的文件
因为现在支持引用第三方前端文件使用:参考 https://alist.nn.ci/zh/config/configuration.html#bleve-diropen in new window
如果没有修改后端的需求,只编译前端文件就可以
2. 准备工作
前期的准备工作也很多,Fork两个仓库、新建一个仓库和分支、获取两个token、部署两个仓库秘钥配置
(如果熟练的话5分钟搞定,第一次可以慢慢改一改,然后等熟练了删掉两个仓库重新来一遍)
2.1 Fork两个仓库
分别fork 以下两个仓库
2.2 新建一个仓库和分支
新建一个名为
web-dist
的仓库
在
web-dist
仓库新建一个dev
分支
2.3 获取两个 Token
获取GitHub Token
获取
Crowdin
Token,AList语言包
2.4 部署两个仓库配置
我们来到我们fork之后自己的前端仓库
配置三个秘钥:
CROWDIN_PERSONAL_TOKEN
、CROWDIN_PROJECT_ID
、MY_TOKEN
CROWDIN_PERSONAL_TOKEN
:在上方2.3步骤中获取的Crowdin TokenCROWDIN_PROJECT_ID
:AList 在 Crowdin 项目的IDopen in new window,ID为526584
MY_TOKEN
:在上方3.1步骤中获取的GitHub Token
我们来到我们fork之后自己的后端仓库
配置一个秘钥
MY_TOKEN
MY_TOKEN
:在上方3.1步骤中获取的GitHub Token
两个仓库配置图例:图1为前端,图2为后端,
在配置的时候顺手检查一下两个仓库的图3选项,如果不是选择的第一个请勾选为第一个选项,否则在构建时候没有权限会报错
以上就是我们前期需要准备,下面教大家改下配置。
3. 修改配置文件
3.1 修改前端配置文件
.github/workflows/build.yml 原文件第41行1和第75行2alist-org换成自己的,如果你前端仓库名称也换了也自己修改一下
- name: Checkout dist repo
uses: actions/checkout@v4
with:
- repository: alist-org/web-dist
+ repository: 自己GitHub名字/web-dist
ref: dev
path: web-dist
persist-credentials: false
fetch-depth: 0
- name: Upload dist files
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.MY_TOKEN }}
branch: dev
directory: web-dist
- repository: alist-org/web-dist
+ repository: 自己GitHub名字/web-dist
force: true
.github/workflows/release.yml 原文件的第56行1和85行2需要修改,70-78行3的需要删除,如果你前端仓库名称也换了也自己修改一下
- name: Checkout dist repo
uses: actions/checkout@v4
with:
- repository: alist-org/web-dist
+ repository: 自己GitHub名字/web-dist
ref: main
path: web-dist
persist-credentials: false
fetch-depth: 0
- name: Upload dist files
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.MY_TOKEN }}
branch: main
directory: web-dist
- repository: alist-org/web-dist
+ repository: 自己GitHub名字/web-dist
- - name: Publish npm
- run: |
- cd alist-web
- echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" > ~/.npmrc
- pnpm publish --no-git-checks
- cd ..
- env:
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
根目录下的release.shopen in new window 原文件的第9行需要修改【更改语言包为下载方式】
# build
pnpm install
-pnpm i18n:release
+wget https://crowdin.com/backend/download/project/alist/zh-CN.zip
+unzip zh-CN.zip
+node ./scripts/i18n.mjs
+rm zh-CN.zip
pnpm build
cp -r dist ../
cd ..
如果要使用繁体或者日文请自己更换为下方代码
繁体日语三种都要添加
# build
pnpm install
-pnpm i18n:release
+wget https://crowdin.com/backend/download/project/alist/zh-TW.zip
+unzip zh-TW.zip
+node ./scripts/i18n.mjs
+rm zh-CN.zip
pnpm build
cp -r dist ../
cd ..
3.2 修改后端配置文件
.github/workflows/release.yml 原文件的第50行和75行需要删除(以下代码都进行删除,这个是编译桌面版的)
- release_desktop:
- needs: release
- name: Release desktop
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repo
- uses: actions/checkout@v4
- with:
- repository: alist-org/desktop-release
- ref: main
- persist-credentials: false
- fetch-depth: 0
-
- - name: Add tag
- run: |
- git config --local user.email "bot@nn.ci"
- git config --local user.name "IlaBot"
- version=$(wget -qO- -t1 -T2 "https://api.github.com/repos/alist-org/alist/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
- git tag -a $version -m "release $version"
- - name: Push tags
- uses: ad-m/github-push-action@master
- with:
- github_token: ${{ secrets.MY_TOKEN }}
- branch: main
- repository: alist-org/desktop-releas
根目录下的build.shopen in new window 文件
FetchWebDev() {
- curl -L https://codeload.github.com/alist-org/web-dist/tar.gz/refs/heads/dev -o web-dist-dev.tar.gz
+ curl -L https://codeload.github.com/自己GitHub名字/web-dist/tar.gz/refs/heads/dev -o web-dist-dev.tar.gz
tar -zxvf web-dist-dev.tar.gz
rm -rf public/dist
mv -f web-dist-dev/dist public
rm -rf web-dist-dev web-dist-dev.tar.gz
}
FetchWebRelease() {
- curl -L https://github.com/alist-org/alist-web/releases/latest/download/dist.tar.gz -o dist.tar.gz
+ curl -L https://github.com/自己GitHub名字/alist-web/releases/latest/download/dist.tar.gz -o dist.tar.gz
tar -zxvf dist.tar.gz
rm -rf public/dist
mv -f dist public
删除以下文件(优化):着两个是编译docker版本的,我暂时不需要就删除了
如果你呀编译docker版本,自己留着改一改(我目前还不会发布到Docker)
.github/workflows/release_docker.yml
.github/workflows/build_docker.yml
4. 开始编译
在编译前一定要去手动去打开一下 仓库的 Actions
选项,否则后续无法进行编译操作
打开我们fork好之后的自己的前后端GitHub仓库 --> Actions --> 选择绿色按钮I understand my workflows, go ahead and enable them
4.1 编译前端
打开已经fork好的自己的前端代码,进行发布Releases
,选项在右侧能看到Releases
的选项
填写好后点击下方绿色按钮 Publish release
Actions就会开始自动执行,我们等待Actions的任务完成
如果因为没有打开过一次
Actions
导致 发布Release
后 Actions没有自动执行,我们可以删除之前已经发布的Release
和Tags
去打开一次 Actions 再重新发布Release
就好
4.2 编译后端
编译后端的话是要前端编译没有问题喔~否则后端肯定是会提示错误的
前端编译完成后(2-3分钟就可以完成),我们去编译后端,进行发布Releases
,发布和删除 Releases
的方式和前端的一样
5. 结束
按照这套教程编译是没有问题的,如果那里不对可能是没有操作正确,也可以参考我的文件
前端:https://github.com/anwen-anyi/alist-webopen in new window
web-dist:https://github.com/anwen-anyi/web-distopen in new window
现在编译出来也是需要很久,和 AListopen in new window 官方编译一样也大概需要25-30分钟,如果只需要个别版本可以自己修改配置文件,修改配置文件后续补上(未知时间)
如果没有修改后端的需求不建议自己编译了,只编译前端就好,看开始提醒
Windows 编译教程
Linux 编译教程
- 感谢你赐予我前进的力量