This commit is contained in:
2026-03-15 12:23:41 +08:00
Unverified
parent 14e49f1b19
commit e59bc51fca

View File

@@ -4,10 +4,9 @@ on:
push:
workflow_dispatch:
permissions:
contents: write
env:
APP_NAME: Shortcut_Sync_PotPlayer
PACKAGE_NAME: shortcut-sync-potplayer
PYTHON_VERSION: "3.9.1"
PYTHON_DIR: 'C:\Python391'
PYTHON_EXE: 'C:\Python391\python.exe'
@@ -15,12 +14,18 @@ env:
jobs:
build:
runs-on: ubuntu-22.04
outputs:
archive_name: ${{ steps.archive.outputs.archive_name }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Verify workspace
shell: bash
run: |
pwd
ls -la
test -f main.py || {
echo "main.py not found in workspace."
echo "If your runner does not auto-check out the repository, add a local mirror for checkout or clone the repo before running this workflow."
exit 1
}
- name: Setup Wine
shell: bash
@@ -38,6 +43,7 @@ jobs:
wine32 \
curl \
ca-certificates \
jq \
xvfb \
zip
@@ -65,7 +71,7 @@ jobs:
rm -f /tmp/python-installer.exe
xvfb-run -a wine64 "${PYTHON_EXE}" --version
- name: Install Dependencies
- name: Install dependencies
shell: bash
run: |
xvfb-run -a wine64 "${PYTHON_EXE}" -m pip install --upgrade pip setuptools wheel
@@ -89,47 +95,97 @@ jobs:
--clean \
--onefile \
--windowed \
--name Shortcut_Sync_PotPlayer \
--name "${APP_NAME}" \
main.py
test -f dist/Shortcut_Sync_PotPlayer.exe
test -f "dist/${APP_NAME}.exe"
- name: Package artifact
id: archive
- name: Package build
id: package
shell: bash
run: |
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
version="$GITHUB_REF_NAME"
else
version="run-${GITHUB_RUN_NUMBER}"
version="run-${GITHUB_RUN_NUMBER}-${GITHUB_SHA::7}"
fi
archive_name="Shortcut_Sync_PotPlayer-${version}-windows-x64.zip"
zip -j "dist/${archive_name}" "dist/Shortcut_Sync_PotPlayer.exe"
archive_name="${APP_NAME}-${version}-windows-x64.zip"
archive_path="dist/${archive_name}"
zip -j "$archive_path" "dist/${APP_NAME}.exe"
echo "version=${version}" >> "$GITHUB_OUTPUT"
echo "archive_name=${archive_name}" >> "$GITHUB_OUTPUT"
echo "archive_path=${archive_path}" >> "$GITHUB_OUTPUT"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: windows-exe-package
path: dist/${{ steps.archive.outputs.archive_name }}
retention-days: 30
if-no-files-found: error
- name: Upload package to Gitea Packages
id: publish_package
shell: bash
env:
ACTIONS_TOKEN: ${{ github.token }}
run: |
owner="${GITHUB_REPOSITORY%%/*}"
package_url="${GITHUB_SERVER_URL}/api/packages/${owner}/generic/${PACKAGE_NAME}/${{ steps.package.outputs.version }}/${{ steps.package.outputs.archive_name }}"
release:
if: startsWith(github.ref, 'refs/tags/')
needs: build
runs-on: ubuntu-22.04
curl --fail-with-body --silent --show-error \
-X PUT \
-H "Authorization: token ${ACTIONS_TOKEN}" \
-H "Content-Type: application/zip" \
--upload-file "${{ steps.package.outputs.archive_path }}" \
"$package_url"
steps:
- name: Download packaged artifact
uses: actions/download-artifact@v4
with:
name: windows-exe-package
path: release-assets
echo "package_url=${package_url}" >> "$GITHUB_OUTPUT"
if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then
echo "Built package: ${package_url}" >> "$GITHUB_STEP_SUMMARY"
fi
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: release-assets/${{ needs.build.outputs.archive_name }}
generate_release_notes: true
- name: Create release on tag
if: startsWith(github.ref, 'refs/tags/')
shell: bash
env:
ACTIONS_TOKEN: ${{ github.token }}
run: |
api_url="${GITHUB_API_URL:-${GITHUB_SERVER_URL}/api/v1}"
releases_url="${api_url}/repos/${GITHUB_REPOSITORY}/releases"
tag_name="${GITHUB_REF_NAME}"
release_name="${tag_name}"
body="Windows build package: ${{ steps.publish_package.outputs.package_url }}"
existing_release_id="$(
curl --silent \
-H "Authorization: token ${ACTIONS_TOKEN}" \
"${releases_url}" | jq -r --arg tag "$tag_name" '.[] | select(.tag_name == $tag) | .id' | head -n 1
)"
if [ -n "$existing_release_id" ] && [ "$existing_release_id" != "null" ]; then
echo "Release already exists for ${tag_name}, skipping creation."
exit 0
fi
payload="$(
jq -n \
--arg tag_name "$tag_name" \
--arg target_commitish "$GITHUB_SHA" \
--arg name "$release_name" \
--arg body "$body" \
'{
tag_name: $tag_name,
target_commitish: $target_commitish,
name: $name,
body: $body,
draft: false,
prerelease: false
}'
)"
curl --fail-with-body --silent --show-error \
-X POST \
-H "Authorization: token ${ACTIONS_TOKEN}" \
-H "Content-Type: application/json" \
-d "$payload" \
"$releases_url" > /dev/null
if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then
echo "Release created for ${tag_name}" >> "$GITHUB_STEP_SUMMARY"
fi