Skip to content

最终版

最终版 #49

Workflow file for this run

name: Build And Release
on:
push:
paths:
# - '**.py'
- '**.yml'
workflow_dispatch:
inputs:
release:
description: 'Create a new release'
required: true
default: 'true'
type: boolean
version:
description: 'Release version'
required: true
default: '2024.06.12.v1'
body:
description: 'Release body text'
required: true
default: '详情请查看更新日志'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- name: Check if release is empty unix
id: chech_unix
if: matrix.os != 'windows-latest'
run: |
if [[ -z "${{ github.event.inputs.release }}" ]]; then
echo "Release is empty"
echo ::set-output name=TAG::$(date +'%Y.%m.%d.v1')
echo ::set-output name=BODY::详情请查看更新日志
else
echo ::set-output name=TAG::${{ github.event.inputs.version }}
echo ::set-output name=BODY::${{ github.event.inputs.body }}
fi
shell: bash
- name: Check if release is empty windows
id: chech_windows
if: matrix.os == 'windows-latest'
run: |
if ([string]::IsNullOrEmpty("${{ github.event.inputs.release }}")) {
Write-Host "Release is empty"
echo "::set-output name=TAG::$(Get-Date -Format 'yyyy.MM.dd.v1')"
echo "::set-output name=BODY::详情请查看更新日志"
} else {
Write-Host "Release is not empty"
echo "::set-output name=TAG::${{ github.event.inputs.version }}"
echo "::set-output name=BODY::${{ github.event.inputs.body }}"
}
shell: pwsh
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11.9
- name: Install Pyinstaller
run: |
python -m pip install pyinstaller
- name: Build the executable for decrypt_epub
run: |
pyinstaller --onefile --name decrypt_epub 重构epub并反文件名混淆.py
- name: Build the executable for encrypt_epub
run: |
pyinstaller --onefile --name encrypt_epub 重构epub并加入文件名混淆.py
- name: Build the executable for rebuild_epub
run: |
pyinstaller --onefile --name rebuild_epub 重构epub为规范格式_v2.8.3.py
- name: Upload the decrypt_epub executable
uses: actions/upload-artifact@v4
with:
name: ${{ runner.os }}-decrypt_epub
path: dist/decrypt_epub${{ endsWith(matrix.os, 'windows-latest') && '.exe' || '' }}
if-no-files-found: warn
- name: Upload the encrypt_epub executable
uses: actions/upload-artifact@v4
with:
name: ${{ runner.os }}-encrypt_epub
path: dist/encrypt_epub${{ endsWith(matrix.os, 'windows-latest') && '.exe' || '' }}
if-no-files-found: warn
- name: Upload the rebuild_epub executable
uses: actions/upload-artifact@v4
with:
name: ${{ runner.os }}-rebuild_epub
path: dist/rebuild_epub${{ endsWith(matrix.os, 'windows-latest') && '.exe' || '' }}
if-no-files-found: warn
- name: Upload all executables
uses: actions/upload-artifact@v4
with:
name: ${{ runner.os }}-all
path: dist/*
- name: Rename artifacts with OS prefix (Linux and macOS)
if: matrix.os != 'windows-latest'
run: |
for file in dist/*; do
mv "$file" "dist/${{ runner.os }}_$(basename "$file")"
done
shell: bash
- name: Rename artifacts with OS prefix (Windows)
if: matrix.os == 'windows-latest'
run: |
Get-ChildItem -Path dist | Rename-Item -NewName { '${{ runner.os }}_' + $_.Name }
shell: pwsh
- name: Create Release windows
if: matrix.os == 'windows-latest'
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.chech_windows.outputs.TAG }}
name: ${{ steps.chech_windows.outputs.TAG }}
body: ${{ steps.chech_windows.outputs.BODY }}
artifacts: 'dist/*'
allowUpdates: true
makeLatest: true
- name: Create Release unix
if: matrix.os != 'windows-latest'
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.chech_unix.outputs.TAG }}
name: ${{ steps.chech_unix.outputs.TAG }}
body: ${{ steps.chech_unix.outputs.BODY }}
artifacts: 'dist/*'
allowUpdates: true
makeLatest: true