This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
name: CI
|
||||
|
||||
# Required Secrets:
|
||||
# - DJANGO_SECRET_KEY: Django Secret Key
|
||||
# - token: Gitea API token for creating releases
|
||||
# - ALIST_PUBLIC_URL: Public URL for AList download (e.g., http://alist.example.com/d/ci)
|
||||
# - WEBDAV_URL: WebDAV upload URL (e.g., http://alist.example.com/dav/ci/)
|
||||
# - WEBDAV_USER: WebDAV username
|
||||
# - WEBDAV_PASSWORD: WebDAV password
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -18,6 +26,8 @@ jobs:
|
||||
docker-ci:
|
||||
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && contains(github.event.head_commit.message, '[ci]'))
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
timeout-minutes: 40
|
||||
env:
|
||||
DJANGO_SECRET_KEY: ${{ secrets.DJANGO_SECRET_KEY }}
|
||||
@@ -25,8 +35,8 @@ jobs:
|
||||
DJANGO_ALLOWED_HOSTS: "127.0.0.1,localhost"
|
||||
IMAGE_NAME: achievement_inputing_ci
|
||||
ARTIFACT_DIR: artifacts
|
||||
SERVER_DEST_DIR: /srv/ci
|
||||
DOWNLOAD_BASE: http://139.224.69.213:8080
|
||||
# 请在 Secrets 中配置 ALIST_PUBLIC_URL,例如 http://139.224.69.213:8080/d/ci
|
||||
DOWNLOAD_BASE: ${{ secrets.ALIST_PUBLIC_URL }}
|
||||
GITEA_SERVER: ${{ github.server_url }}
|
||||
GITEA_REPO: ${{ github.repository }}
|
||||
RELEASE_TOKEN: ${{ secrets.token }}
|
||||
@@ -80,12 +90,31 @@ jobs:
|
||||
mkdir -p "$GITHUB_WORKSPACE/$ARTIFACT_DIR"
|
||||
mv "$GITHUB_WORKSPACE/$ART" "$GITHUB_WORKSPACE/$ARTIFACT_DIR/"
|
||||
echo "artifact: $GITHUB_WORKSPACE/$ARTIFACT_DIR/$ART"
|
||||
- name: Publish to /srv/ci
|
||||
- name: Publish to WebDAV
|
||||
env:
|
||||
WEBDAV_URL: ${{ secrets.WEBDAV_URL }}
|
||||
WEBDAV_USER: ${{ secrets.WEBDAV_USER }}
|
||||
WEBDAV_PASSWORD: ${{ secrets.WEBDAV_PASSWORD }}
|
||||
run: |
|
||||
set -e
|
||||
ART=$(cat "$GITHUB_WORKSPACE/.artifact_name")
|
||||
cat "$GITHUB_WORKSPACE/$ARTIFACT_DIR/$ART" | docker run --rm -i -v "$SERVER_DEST_DIR:/srvci" "$IMAGE_NAME:$VERSION" sh -c "cat > /srvci/$ART && ls -l /srvci"
|
||||
echo "published: $SERVER_DEST_DIR/$ART"
|
||||
FILE_PATH="$GITHUB_WORKSPACE/$ARTIFACT_DIR/$ART"
|
||||
|
||||
# 检查必要的 secrets 是否存在
|
||||
if [ -z "$WEBDAV_URL" ]; then
|
||||
echo "Error: WEBDAV_URL secret is not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 确保 URL 以 / 结尾
|
||||
case "$WEBDAV_URL" in
|
||||
*/) ;;
|
||||
*) WEBDAV_URL="${WEBDAV_URL}/" ;;
|
||||
esac
|
||||
|
||||
echo "Uploading $ART to $WEBDAV_URL..."
|
||||
curl -f -u "$WEBDAV_USER:$WEBDAV_PASSWORD" -T "$FILE_PATH" "${WEBDAV_URL}${ART}"
|
||||
echo "Upload success."
|
||||
- name: Create release with download link
|
||||
if: env.RELEASE_TOKEN != ''
|
||||
run: |
|
||||
@@ -94,7 +123,6 @@ jobs:
|
||||
TAG="$VERSION"
|
||||
NAME="$VERSION"
|
||||
BASE="${DOWNLOAD_BASE%/}"
|
||||
BASE="${BASE%/ci}"
|
||||
DL="$BASE/$ART"
|
||||
echo "download: $DL"
|
||||
JSON=$(printf '{"tag_name":"%s","target_commitish":"%s","name":"%s","body":"%s"}' "$TAG" "$BRANCH" "$NAME" "$DL")
|
||||
|
||||
Reference in New Issue
Block a user