Skip to content

✨ feat: 支持取消更新进程 #44

✨ feat: 支持取消更新进程

✨ feat: 支持取消更新进程 #44

Workflow file for this run

name: Build Releases
on:
workflow_dispatch:
push:
branches:
- 'dev'
tags:
- '*'
jobs:
build-windows:
runs-on: windows-latest
outputs:
windows-zip-file: ${{ env.windows-zip-file }}
windows-setup-file: ${{ env.windows-setup-file }}
version: ${{ env.version }}
steps:
- name: Checkout main repo
uses: actions/checkout@v4
- name: Checkout loader repo
uses: actions/checkout@v4
with:
repository: ScottSloan/Bili23-Downloader-Loader
path: loader_repo
- name: Get version info
run: |
$json = Get-Content src\utils\common\compile_data.py | ConvertFrom-Json
"ver_major=$($json.ver_major)" | Out-File -Append -FilePath $env:GITHUB_ENV
"ver_minor=$($json.ver_minor)" | Out-File -Append -FilePath $env:GITHUB_ENV
"ver_patch=$($json.ver_patch)" | Out-File -Append -FilePath $env:GITHUB_ENV
"ver_build=$($json.ver_build)" | Out-File -Append -FilePath $env:GITHUB_ENV
"windows-zip-file=Bili23_Downloader-$($json.ver_major).$($json.ver_minor).$($json.ver_patch)-windows-x64.zip" | Out-File -Append -FilePath $env:GITHUB_ENV
"windows-setup-file=Bili23_Downloader-$($json.ver_major).$($json.ver_minor).$($json.ver_patch)-windows-x64-setup.exe" | Out-File -Append -FilePath $env:GITHUB_ENV
- name: Install MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
install: >
mingw-w64-x86_64-gcc
- name: Unzip and copy runtime files
run: |
ren src script
New-Item -ItemType Directory -Path "runtime_repo"
$runtime_url = "https://drive.scott-sloan.cn/f/P4s8/runtime.zip"
Invoke-WebRequest -Uri $runtime_url -OutFile "runtime_repo\runtime.zip"
$ffmpeg_url = "https://drive.scott-sloan.cn/f/aWhW/ffmpeg.exe"
Invoke-WebRequest -Uri $ffmpeg_url -OutFile "runtime_repo\ffmpeg.exe"
cd runtime_repo
& "C:\Program Files\7-Zip\7z.exe" x runtime.zip "-o." -aoa
cd ..
Copy-Item runtime_repo\runtime -Destination ".\Bili23 Downloader\runtime" -Recurse
Copy-Item runtime_repo\site-packages -Destination ".\Bili23 Downloader\site-packages" -Recurse
Copy-Item runtime_repo\ffmpeg.exe -Destination ".\Bili23 Downloader\ffmpeg.exe"
Copy-Item LICENSE -Destination ".\Bili23 Downloader\LICENSE"
Copy-Item README.md -Destination ".\Bili23 Downloader\README.md"
Copy-Item script -Destination ".\Bili23 Downloader\script" -Recurse
- name: Build loader
shell: msys2 {0}
run: |
cd loader_repo/windows
build_time=$(date "+%Y-%m-%d %H:%M:%S")
cat << EOF > build_info.h
#pragma once
#define VER_MAJOR ${{ env.ver_major }}
#define VER_MINOR ${{ env.ver_minor }}
#define VER_PATCH ${{ env.ver_patch }}
#define VER_BUILD ${{ env.ver_build }}
#define BUILD_TIME_STR L"$build_time"
EOF
windres resource.rc -o resource.o
g++ -c PyStand.cpp -o PyStand.o -Os -s -ffunction-sections -fdata-sections -flto
g++ -o Bili23.exe PyStand.o resource.o -static -lshlwapi -lwinmm -mwindows -s -flto
cd ../..
cp loader_repo/windows/Bili23.exe "./Bili23 Downloader/Bili23.exe"
cp _pystand_static.int "./Bili23 Downloader/_pystand_static.int"
- name: Package Windows Portable
run: |
$COMMIT_HASH = git rev-parse HEAD
$COMMIT_DATE = git show -s --format=%cd --date=iso $COMMIT_HASH
jq --arg hash "$COMMIT_HASH" --arg date "$COMMIT_DATE" '.commit = $hash | .date = $date | .channel = "windows_portable"' ".\Bili23 Downloader\script\utils\common\compile_data.py" > tmp1.json && cp tmp1.json ".\Bili23 Downloader\script\utils\common\compile_data.py"
Compress-Archive -Path ".\Bili23 Downloader" -DestinationPath ${{ env.windows-zip-file }}
- name: Package Windows Setup
run: |
echo "下载并安装 Inno Setup"
$url = "https://jrsoftware.org/download.php/is.exe"
Invoke-WebRequest -Uri $url -OutFile "is.exe"
Start-Process "is.exe" -Wait -ArgumentList "/VERYSILENT"
echo "下载简体中文语言文件"
$lang_url = "https://raw.githubusercontent.com/jrsoftware/issrc/refs/heads/main/Files/Languages/Unofficial/ChineseSimplified.isl"
Invoke-WebRequest -Uri $lang_url -OutFile "ChineseSimplified.isl"
Move-Item -Path "ChineseSimplified.isl" -Destination "C:\Program Files (x86)\Inno Setup 6\Languages\ChineseSimplified.isl"
jq '.channel = "windows_setup"' ".\Bili23 Downloader\script\utils\common\compile_data.py" > tmp3.json && cp tmp3.json ".\Bili23 Downloader\script\utils\common\compile_data.py"
$inno = "C:\Program Files (x86)\Inno Setup 6\ISCC.exe"
$iss = ".\setup.iss"
$version = "${{ env.ver_major }}.${{ env.ver_minor }}.${{ env.ver_patch }}"
$file_version = "${{ env.ver_major }}.${{ env.ver_minor }}.${{ env.ver_patch }}.${{ env.ver_build }}"
$product_version = "${{ env.ver_major }}.${{ env.ver_minor }}.0.0"
"version=$version" | Out-File -Append -FilePath $env:GITHUB_ENV
echo "开始编译安装程序"
& $inno "$iss" /DMyAppVersion="$version" /DFileVersion="$file_version" /DProductVersion="$product_version"
- name: Upload zip artifact
uses: actions/upload-artifact@v4
with:
name: windows-artifact-zip
path: ${{ env.windows-zip-file }}
- name: Upload setup artifact
uses: actions/upload-artifact@v4
with:
name: windows-artifact-setup
path: ${{ env.windows-setup-file }}
build-linux:
runs-on: ubuntu-latest
outputs:
linux-deb-file: ${{ env.linux-deb-file }}
steps:
- name: Checkout main repo
uses: actions/checkout@v4
- name: Checkout loader repo
uses: actions/checkout@v4
with:
repository: ScottSloan/Bili23-Downloader-Loader
path: loader_repo
- name: Get version info
run: |
ver_major=$(jq -r '.ver_major' src/utils/common/compile_data.py)
ver_minor=$(jq -r '.ver_minor' src/utils/common/compile_data.py)
ver_patch=$(jq -r '.ver_patch' src/utils/common/compile_data.py)
ver_build=$(jq -r '.ver_build' src/utils/common/compile_data.py)
echo "ver_major=$ver_major" >> $GITHUB_ENV
echo "ver_minor=$ver_minor" >> $GITHUB_ENV
echo "ver_patch=$ver_patch" >> $GITHUB_ENV
echo "ver_build=$ver_build" >> $GITHUB_ENV
echo "linux-deb-file=Bili23_Downloader-$ver_major.$ver_minor.$ver_patch-linux-amd64.deb" >> $GITHUB_ENV
- name: Unzip and copy runtime files
run: |
mv src script
COMMIT_HASH=$(git rev-parse HEAD)
COMMIT_DATE=$(git show -s --format=%cd --date=iso $COMMIT_HASH)
jq --arg hash "$COMMIT_HASH" --arg date "$COMMIT_DATE" '.commit = $hash | .date = $date | .channel = "linux_deb_package"' ./script/utils/common/compile_data.py > tmp.json && mv tmp.json ./script/utils/common/compile_data.py
echo "下载 runtime 文件"
mkdir -p runtime_repo
wget https://drive.scott-sloan.cn/f/xxCz/runtime.zip -O runtime_repo/runtime.zip
cd runtime_repo
7z x runtime.zip -aoa
cd ..
mkdir -p 'bili23/runtime'
cp -r runtime_repo/runtime/* 'bili23/runtime/'
cp -r script 'bili23/script'
- name: Build loader
run: |
cp loader_repo/linux/Bili23 ./bili23/Bili23
cp _pystand_static.int ./bili23/_pystand_static.int
chmod +x ./bili23/Bili23
chmod +x ./bili23/runtime/python3
- name: Package
run: |
mkdir buildroot
cd buildroot
mkdir DEBIAN opt usr
mkdir -p usr/bin
mkdir -p usr/share/applications
mkdir -p usr/share/icons/hicolor/scalable/apps
cd usr/bin
echo '#!/bin/bash' > bili23-downloader
echo '/opt/bili23-downloader/Bili23 "$@"' >> bili23-downloader
chmod +x bili23-downloader
cd ../..
cp -r ../bili23 opt/bili23-downloader
cd DEBIAN
echo 'Package: bili23-downloader' > control
echo 'Version: ${{ env.ver_major }}.${{ env.ver_minor }}.${{ env.ver_patch }}' >> control
echo 'Section: utils' >> control
echo 'Priority: optional' >> control
echo 'Architecture: amd64' >> control
echo 'Depends: libc6 (>= 2.27), libsdl2-2.0-0' >> control
echo 'Maintainer: Scott Sloan <world1019@sina.com>' >> control
echo 'Description: Bili23 Downloader' >> control
INSTALLED_SIZE=$(du -s ../ | awk '{print $1}')
echo "Installed-Size: $INSTALLED_SIZE" >> control
cd ..
cd usr/share/applications
echo '[Desktop Entry]' > bili23-downloader.desktop
echo 'Type=Application' >> bili23-downloader.desktop
echo 'Name=Bili23 Downloader' >> bili23-downloader.desktop
echo 'Exec=/usr/bin/bili23-downloader' >> bili23-downloader.desktop
echo 'Icon=bili23-downloader' >> bili23-downloader.desktop
echo 'Categories=Utility;' >> bili23-downloader.desktop
echo 'Terminal=false' >> bili23-downloader.desktop
echo 'Comment=Bili23 Downloader' >> bili23-downloader.desktop
cd ../../../../
cp icon.svg buildroot/usr/share/icons/hicolor/scalable/apps/bili23-downloader.svg
echo "构建 deb 包"
dpkg-deb --build buildroot "${{ env.linux-deb-file }}"
- name: Upload deb artifact
uses: actions/upload-artifact@v4
with:
name: linux-artifact
path: ${{ env.linux-deb-file }}
# build-macos:
# runs-on: macos-latest
# steps:
# - name: Checkout main repo
# uses: actions/checkout@v4
# - name: Rename src to script
# run: mv src script
# - name: Checkout runtime repo (macos)
# uses: actions/checkout@v4
# with:
# repository: ScottSloan/Bili23-Downloader-Runtime
# path: runtime_repo
# - name: Copy runtime files
# run: |
# mkdir -p my_project/runtime
# cp -r runtime_repo/macos/runtime/* my_project/runtime/
# cp -r script my_project/script
# - name: Package
# run: |
# zip -r Bili23-macos.zip my_project
# - name: Upload artifact
# uses: actions/upload-artifact@v4
# with:
# name: Bili23-macos
# path: Bili23-macos.zip
release:
runs-on: ubuntu-latest
needs: [build-windows, build-linux]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Windows zip artifact
uses: actions/download-artifact@v4
with:
name: windows-artifact-zip
path: ./release-assets
- name: Download Windows setup artifact
uses: actions/download-artifact@v4
with:
name: windows-artifact-setup
path: ./release-assets
- name: Download Linux deb artifact
uses: actions/download-artifact@v4
with:
name: linux-artifact
path: ./release-assets
- name: Get Version Tag
id: get_version
run: |
version="${{ needs.build-windows.outputs.version }}"
tag="v$version"
echo "tag=$tag" >> $GITHUB_ENV
echo "version=$version" >> $GITHUB_ENV
- name: Checkout uploader repo
uses: actions/checkout@v4
with:
repository: ScottSloan/Cloudreve-Uploader
path: uploader_repo
- name: Upload Cloudreve
env:
CLOUDREVE_API: ${{ secrets.CLOUDREVE_API }}
CLOUDREVE_EMAIL: ${{ secrets.CLOUDREVE_EMAIL }}
CLOUDREVE_PASSWORD: ${{ secrets.CLOUDREVE_PASSWORD }}
CLOUDREVE_STORAGE_POLICY_ID: ${{ secrets.CLOUDREVE_STORAGE_POLICY_ID }}
VERSION: ${{ env.version }}
run: |
mv uploader_repo/cloudreve.py ./release-assets/cloudreve.py
pip install aiohttp
cd release-assets
python3 ./cloudreve.py
- name: Upload to Release
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: ${{ env.tag }}
body_path: CHANGELOG.md
make_latest: true
tag_name: ${{ env.tag }}
draft: true
prerelease: false
generate_release_notes: false
discussion_category_name: announcements
files: |
./release-assets/${{ needs.build-windows.outputs.windows-zip-file }}
./release-assets/${{ needs.build-windows.outputs.windows-setup-file }}
./release-assets/${{ needs.build-linux.outputs.linux-deb-file }}
- name: Call documentation update repository workflow
run: |
curl -X POST -H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.ACCESS_TOKEN }}" \
https://api.github.com/repos/ScottSloan/Bili23-Downloader-Doc/dispatches \
-d '{"event_type":"deploy-pages","client_payload":{"unit":false,"integration":true}}'