跳至主要內容

GitHub Actions编译

安稳...大约 7 分钟使用指南AList魔改教程自己编译编译AList教程BuildGitHub Action

1. 前言

(‾◡◝) 前面出过了Windows和Linux的教程,但是交叉编译不同版本有点儿困难

这次经过了大佬open in new window手把手的教我配置部署到了GitHub Actions自动化编译和AList官方的一样编译很多不同版本,妈妈再也不用担心不能交叉编译啦

提示


2. 准备工作

前期的准备工作也很多,Fork两个仓库、新建一个仓库和分支、获取两个token、部署两个仓库秘钥配置

(如果熟练的话5分钟搞定,第一次可以慢慢改一改,然后等熟练了删掉两个仓库重新来一遍)


2.1 Fork两个仓库


2.2 新建一个仓库和分支

  • web-dist仓库新建一个dev分支

2.3 获取两个 Token

  1. 获取GitHub Token
  1. 获取CrowdinToken,AList语言包


2.4 部署两个仓库配置

  • 我们来到我们fork之后自己的前端仓库

    • 配置三个秘钥:CROWDIN_PERSONAL_TOKENCROWDIN_PROJECT_IDMY_TOKEN
      • CROWDIN_PERSONAL_TOKEN:在上方2.3步骤中获取的Crowdin Token
      • CROWDIN_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
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没有自动执行,我们可以删除之前已经发布的ReleaseTags 去打开一次 Actions 再重新发布Release就好

4.2 编译后端

编译后端的话是要前端编译没有问题喔~否则后端肯定是会提示错误的

前端编译完成后(2-3分钟就可以完成),我们去编译后端,进行发布Releases,发布和删除 Releases 的方式和前端的一样

5. 结束

按照这套教程编译是没有问题的,如果那里不对可能是没有操作正确,也可以参考我的文件

现在编译出来也是需要很久,和 AListopen in new window 官方编译一样也大概需要25-30分钟,如果只需要个别版本可以自己修改配置文件,修改配置文件后续补上(未知时间)

  • 如果没有修改后端的需求不建议自己编译了,只编译前端就好,看开始提醒

Windows 编译教程
Linux 编译教程