diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 46add65..b69354e 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -76,18 +76,38 @@ jobs: echo "$ART" > "$GITHUB_WORKSPACE/.artifact_name" - name: Upload to Alist run: | + set -e ART=$(cat "$GITHUB_WORKSPACE/.artifact_name") BASE="${ALIST_URL%/}" - LOGIN_RESP=$(curl -sS -X POST "$BASE/api/auth/login" -H "Content-Type: application/json" -d "{\"username\":\"$ALIST_USER\",\"password\":\"$ALIST_PASSWORD\"}") - TOKEN=$(echo "$LOGIN_RESP" | sed -n 's/.*"token":"\([^"]*\)".*/\1/p') - if [ -z "$TOKEN" ]; then TOKEN=$(echo "$LOGIN_RESP" | sed -n 's/.*"auth":"\([^"]*\)".*/\1/p'); fi - if [ -z "$TOKEN" ]; then exit 1; fi + curl -sS -o "$GITHUB_WORKSPACE/login.json" -w "%{http_code}" -X POST "$BASE/api/auth/login" -H "Content-Type: application/json" -d "{\"username\":\"$ALIST_USER\",\"password\":\"$ALIST_PASSWORD\"}" > "$GITHUB_WORKSPACE/login.code" + if [ "$(cat "$GITHUB_WORKSPACE/login.code")" != "200" ]; then + echo login_failed + cat "$GITHUB_WORKSPACE/login.json" + exit 1 + fi + TOKEN=$(python3 - << 'PY' +import json,sys,os +p=os.path.join(os.environ['GITHUB_WORKSPACE'],'login.json') +with open(p,'rb') as f: + j=json.load(f) +d=j.get('data') or {} +print(d.get('token') or d.get('auth') or '') +PY +) + if [ -z "$TOKEN" ]; then + echo token_not_found + cat "$GITHUB_WORKSPACE/login.json" + exit 1 + fi curl -sS -X POST "$BASE/api/fs/mkdir" -H "Authorization: $TOKEN" -H "Content-Type: application/json" -d "{\"path\":\"/ci\"}" >/dev/null 2>&1 || true UPLOAD_STATUS=$(curl -sS -w "%{http_code}" -o /dev/null -X PUT "$BASE/api/fs/form" -H "Authorization: $TOKEN" -F "path=/ci" -F "file=@$GITHUB_WORKSPACE/$ART;type=application/x-tar") if [ "$UPLOAD_STATUS" -ge 400 ]; then UPLOAD_STATUS=$(curl -sS -w "%{http_code}" -o /dev/null -X PUT "$BASE/api/fs/form" -H "Authorization: Bearer $TOKEN" -F "path=/ci" -F "file=@$GITHUB_WORKSPACE/$ART;type=application/x-tar") fi - test "$UPLOAD_STATUS" -lt 400 + if [ "$UPLOAD_STATUS" -ge 400 ]; then + echo upload_failed + exit 1 + fi - name: Create release with download link if: env.GITEA_TOKEN != '' run: |