This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
name: CI
|
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:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
@@ -18,6 +26,8 @@ jobs:
|
|||||||
docker-ci:
|
docker-ci:
|
||||||
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && contains(github.event.head_commit.message, '[ci]'))
|
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && contains(github.event.head_commit.message, '[ci]'))
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: catthehacker/ubuntu:act-latest
|
||||||
timeout-minutes: 40
|
timeout-minutes: 40
|
||||||
env:
|
env:
|
||||||
DJANGO_SECRET_KEY: ${{ secrets.DJANGO_SECRET_KEY }}
|
DJANGO_SECRET_KEY: ${{ secrets.DJANGO_SECRET_KEY }}
|
||||||
@@ -25,8 +35,8 @@ jobs:
|
|||||||
DJANGO_ALLOWED_HOSTS: "127.0.0.1,localhost"
|
DJANGO_ALLOWED_HOSTS: "127.0.0.1,localhost"
|
||||||
IMAGE_NAME: achievement_inputing_ci
|
IMAGE_NAME: achievement_inputing_ci
|
||||||
ARTIFACT_DIR: artifacts
|
ARTIFACT_DIR: artifacts
|
||||||
SERVER_DEST_DIR: /srv/ci
|
# 请在 Secrets 中配置 ALIST_PUBLIC_URL,例如 http://139.224.69.213:8080/d/ci
|
||||||
DOWNLOAD_BASE: http://139.224.69.213:8080
|
DOWNLOAD_BASE: ${{ secrets.ALIST_PUBLIC_URL }}
|
||||||
GITEA_SERVER: ${{ github.server_url }}
|
GITEA_SERVER: ${{ github.server_url }}
|
||||||
GITEA_REPO: ${{ github.repository }}
|
GITEA_REPO: ${{ github.repository }}
|
||||||
RELEASE_TOKEN: ${{ secrets.token }}
|
RELEASE_TOKEN: ${{ secrets.token }}
|
||||||
@@ -80,12 +90,31 @@ jobs:
|
|||||||
mkdir -p "$GITHUB_WORKSPACE/$ARTIFACT_DIR"
|
mkdir -p "$GITHUB_WORKSPACE/$ARTIFACT_DIR"
|
||||||
mv "$GITHUB_WORKSPACE/$ART" "$GITHUB_WORKSPACE/$ARTIFACT_DIR/"
|
mv "$GITHUB_WORKSPACE/$ART" "$GITHUB_WORKSPACE/$ARTIFACT_DIR/"
|
||||||
echo "artifact: $GITHUB_WORKSPACE/$ARTIFACT_DIR/$ART"
|
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: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
ART=$(cat "$GITHUB_WORKSPACE/.artifact_name")
|
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"
|
FILE_PATH="$GITHUB_WORKSPACE/$ARTIFACT_DIR/$ART"
|
||||||
echo "published: $SERVER_DEST_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
|
- name: Create release with download link
|
||||||
if: env.RELEASE_TOKEN != ''
|
if: env.RELEASE_TOKEN != ''
|
||||||
run: |
|
run: |
|
||||||
@@ -94,7 +123,6 @@ jobs:
|
|||||||
TAG="$VERSION"
|
TAG="$VERSION"
|
||||||
NAME="$VERSION"
|
NAME="$VERSION"
|
||||||
BASE="${DOWNLOAD_BASE%/}"
|
BASE="${DOWNLOAD_BASE%/}"
|
||||||
BASE="${BASE%/ci}"
|
|
||||||
DL="$BASE/$ART"
|
DL="$BASE/$ART"
|
||||||
echo "download: $DL"
|
echo "download: $DL"
|
||||||
JSON=$(printf '{"tag_name":"%s","target_commitish":"%s","name":"%s","body":"%s"}' "$TAG" "$BRANCH" "$NAME" "$DL")
|
JSON=$(printf '{"tag_name":"%s","target_commitish":"%s","name":"%s","body":"%s"}' "$TAG" "$BRANCH" "$NAME" "$DL")
|
||||||
|
|||||||
Reference in New Issue
Block a user