diff --git a/.github/workflows/aaps-ci.yml b/.github/workflows/aaps-ci.yml index 649cacf6939..a1b95d50d31 100644 --- a/.github/workflows/aaps-ci.yml +++ b/.github/workflows/aaps-ci.yml @@ -60,7 +60,7 @@ jobs: name: Build AAPS runs-on: ubuntu-latest steps: - - name: Decode Secrets Keystore Set and Oauth2 to Env + - name: Decode Secrets Keystore Set or use separate secrets run: | if [ -n "${{ secrets.KEYSTORE_SET }}" ]; then echo "πŸ” Decoding KEYSTORE_SET..." @@ -89,7 +89,7 @@ jobs: echo "KEY_ALIAS=${{ secrets.KEY_ALIAS }}" >> $GITHUB_ENV echo "KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> $GITHUB_ENV fi - echo "GDRIVE_OAUTH2=${{ secrets.GDRIVE_OAUTH2 }}" >> $GITHUB_ENV + # ζ³¨ζ„οΌšε·²εˆ ι™€ GDRIVE_OAUTH2 θΏ™δΈ€θ‘Œ - name: Check Secrets run: | @@ -103,9 +103,7 @@ jobs: fi } - # Check secrets - check_secret "$GDRIVE_OAUTH2" "GDRIVE_OAUTH2" - + # εͺζ£€ζŸ₯ keystore η›Έε…³ηš„ε››δΈͺ secretοΌˆη§»ι™€δΊ† GDRIVE_OAUTH2 ηš„ζ£€ζŸ₯οΌ‰ check_secret "$KEYSTORE_BASE64" "KEYSTORE_BASE64" check_secret "$KEYSTORE_PASSWORD" "KEYSTORE_PASSWORD" check_secret "$KEY_ALIAS" "KEY_ALIAS" @@ -149,41 +147,7 @@ jobs: rm -f "$JARSIGNER_LOG" dummy.jar echo "βœ… Keystore, alias, and key password are valid." - rm -f "$KEYTOOL_LOG" - echo "βœ… Keystore and credentials validated." - - - name: Decode GDrive OAuth2 secrets - run: | - echo "πŸ” Decoding GDRIVE_OAUTH2..." - DECODED=$(echo "${{ secrets.GDRIVE_OAUTH2 }}" | base64 -d) - - GDRIVE_CLIENT_ID=$(echo "$DECODED" | cut -d'|' -f1) - GDRIVE_REFRESH_TOKEN=$(echo "$DECODED" | cut -d'|' -f2) - - echo "::add-mask::$GDRIVE_CLIENT_ID" - echo "::add-mask::$GDRIVE_REFRESH_TOKEN" - - echo "GDRIVE_CLIENT_ID=$GDRIVE_CLIENT_ID" >> $GITHUB_ENV - echo "GDRIVE_REFRESH_TOKEN=$GDRIVE_REFRESH_TOKEN" >> $GITHUB_ENV - - echo "βœ… GDRIVE_CLIENT_ID and GDRIVE_REFRESH_TOKEN extracted from GDRIVE_OAUTH2" - - - name: Retrieving Google Drive access token - run: | - echo "πŸ” Getting Google OAuth2 access token..." - TOKEN_RESPONSE=$(curl -s -X POST https://oauth2.googleapis.com/token \ - -d client_id="$GDRIVE_CLIENT_ID" \ - -d refresh_token="$GDRIVE_REFRESH_TOKEN" \ - -d grant_type=refresh_token) - ACCESS_TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r .access_token) - echo "::add-mask::$ACCESS_TOKEN" - if [ -z "$ACCESS_TOKEN" ] || [ "$ACCESS_TOKEN" = "null" ]; then - echo "❌ Failed to get access token." - echo "$TOKEN_RESPONSE" - exit 1 - fi - echo "ACCESS_TOKEN=$ACCESS_TOKEN" >> $GITHUB_ENV - echo "βœ… Access token obtained." + # ζ³¨ζ„οΌšδ»₯δΈ‹ζ•΄δΈͺ Decode GDrive OAuth2 secrets ε’Œ Retrieving Google Drive access token ζ­₯ιͺ€ε·²εˆ ι™€ - name: Checkout source code at tag uses: actions/checkout@v5 @@ -243,7 +207,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v5 with: - java-version: ${{ env.JAVA_VERSION }} + java-version: 21 distribution: 'temurin' cache: gradle @@ -269,87 +233,10 @@ jobs: mv app/build/outputs/apk/${{ env.VARIANT_FLAVOR }}/${{ env.VARIANT_TYPE }}/*.apk aaps-${{ env.VERSION }}${{ env.VERSION_SUFFIX }}.apk mv wear/build/outputs/apk/${{ env.VARIANT_FLAVOR }}/${{ env.VARIANT_TYPE }}/*.apk aaps-wear-${{ env.VERSION }}${{ env.VERSION_SUFFIX }}.apk - - name: Upload APKs to Google Drive - run: | - set -e - echo "πŸ” Start uploading APKs to Google Drive..." - - echo "πŸ“ Checking or creating AAPS folder" - AAPS_FOLDER_ID=$(curl -s -X GET \ - -H "Authorization: Bearer $ACCESS_TOKEN" \ - "https://www.googleapis.com/drive/v3/files?q=name='AAPS'+and+mimeType='application/vnd.google-apps.folder'+and+trashed=false" \ - | jq -r '.files[0].id') - - if [ "$AAPS_FOLDER_ID" == "null" ] || [ -z "$AAPS_FOLDER_ID" ]; then - AAPS_FOLDER_ID=$(curl -s -X POST \ - -H "Authorization: Bearer $ACCESS_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{"name": "AAPS", "mimeType": "application/vnd.google-apps.folder"}' \ - "https://www.googleapis.com/drive/v3/files" | jq -r '.id') - echo "πŸ“‚ Created AAPS folder: $AAPS_FOLDER_ID" - else - echo "πŸ“‚ Found AAPS folder: $AAPS_FOLDER_ID" - fi - - echo "πŸ“ Checking or creating version folder: $VERSION" - VERSION_FOLDER_ID=$(curl -s -X GET \ - -H "Authorization: Bearer $ACCESS_TOKEN" \ - "https://www.googleapis.com/drive/v3/files?q=name='${VERSION}'+and+mimeType='application/vnd.google-apps.folder'+and+'$AAPS_FOLDER_ID'+in+parents+and+trashed=false" \ - | jq -r '.files[0].id') - - if [ "$VERSION_FOLDER_ID" == "null" ] || [ -z "$VERSION_FOLDER_ID" ]; then - VERSION_FOLDER_ID=$(curl -s -X POST \ - -H "Authorization: Bearer $ACCESS_TOKEN" \ - -H "Content-Type: application/json" \ - -d "{\"name\": \"${VERSION}\", \"mimeType\": \"application/vnd.google-apps.folder\", \"parents\": [\"$AAPS_FOLDER_ID\"]}" \ - "https://www.googleapis.com/drive/v3/files" | jq -r '.id') - echo "πŸ“‚ Created version folder: $VERSION_FOLDER_ID" - else - echo "πŸ“‚ Found version folder: $VERSION_FOLDER_ID" - fi - - upload_to_gdrive() { - FILE=$1 - NAME=$2 - if [ ! -f "$FILE" ]; then - echo "❌ File not found: $FILE" - exit 26 - fi - - echo "πŸ“„ Checking if file $NAME already exists in Google Drive..." - QUERY="name='${NAME}' and '${VERSION_FOLDER_ID}' in parents and trashed=false" - ENCODED_QUERY=$(python3 -c "import urllib.parse; print(urllib.parse.quote('''$QUERY'''))") - FILE_ID=$(curl -s \ - -H "Authorization: Bearer $ACCESS_TOKEN" \ - "https://www.googleapis.com/drive/v3/files?q=${ENCODED_QUERY}&fields=files(id)" \ - | jq -r '.files[0].id') - - if [[ -n "$FILE_ID" && "$FILE_ID" != "null" ]]; then - echo "πŸ—‘οΈ Deleting existing file with ID: $FILE_ID" - curl -s -X DELETE \ - -H "Authorization: Bearer $ACCESS_TOKEN" \ - "https://www.googleapis.com/drive/v3/files/${FILE_ID}" - fi - - echo "⬆️ Uploading $FILE as $NAME to Google Drive..." - RESPONSE=$(curl -s -w "%{http_code}" -o /tmp/gdrive_response.json \ - -X POST \ - -H "Authorization: Bearer $ACCESS_TOKEN" \ - -F "metadata={\"name\":\"$NAME\", \"parents\":[\"$VERSION_FOLDER_ID\"]};type=application/json;charset=UTF-8" \ - -F "file=@$FILE;type=application/vnd.android.package-archive" \ - "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart") - - HTTP_CODE="${RESPONSE: -3}" - if [[ "$HTTP_CODE" != "200" && "$HTTP_CODE" != "201" ]]; then - echo "❌ Upload failed with HTTP status: $HTTP_CODE" - cat /tmp/gdrive_response.json - exit 1 - fi - - echo "βœ… Uploaded: $NAME" - } - - upload_to_gdrive "aaps-${VERSION}${VERSION_SUFFIX}.apk" "aaps-${VERSION}${VERSION_SUFFIX}.apk" - upload_to_gdrive "aaps-wear-${VERSION}${VERSION_SUFFIX}.apk" "aaps-wear-${VERSION}${VERSION_SUFFIX}.apk" - - echo "πŸŽ‰ APKs successfully uploaded to Google Drive!" + # ζ–°ε’žοΌšδΈŠδΌ  APK 作为 GitHub Actions Artifact + - name: Upload APKs as Artifacts + uses: actions/upload-artifact@v4 + with: + name: aaps-apks + path: | + aaps-*.apk diff --git a/keystore/demokeystore.jks b/keystore/demokeystore.jks index 060d064ea05..0cd29f2ab6f 100644 Binary files a/keystore/demokeystore.jks and b/keystore/demokeystore.jks differ