소스 검색

Merge pull request #10279 from nextcloud/chore/analysis-github-token

workflows/analysis: Use GITHUB_TOKEN instead of GIT_TOKEN, and some cleanup
Álvaro Brey 2 년 전
부모
커밋
f54d234626

+ 8 - 8
.drone.yml

@@ -14,18 +14,18 @@ steps:
         from_secret: LOG_PASSWORD
       GIT_USERNAME:
         from_secret: GIT_USERNAME
-      GIT_TOKEN:
+      GITHUB_TOKEN:
         from_secret: GIT_TOKEN
     commands:
-      - scripts/checkIfRunDrone.sh $GIT_USERNAME $GIT_TOKEN $DRONE_PULL_REQUEST || exit 0
+      - scripts/checkIfRunDrone.sh $DRONE_PULL_REQUEST || exit 0
       - emulator -avd android -no-snapshot -gpu swiftshader_indirect -no-window -no-audio -skin 500x833 &
       - sed -i s'#<bool name="is_beta">false</bool>#<bool name="is_beta">true</bool>#'g app/src/main/res/values/setup.xml
       - ./gradlew assembleGplayDebugAndroidTest
       - scripts/wait_for_emulator.sh
       - ./gradlew installGplayDebugAndroidTest
       - scripts/wait_for_server.sh "server"
-      - scripts/deleteOldComments.sh "stable" "IT" $DRONE_PULL_REQUEST $GIT_TOKEN
-      - ./gradlew createGplayDebugCoverageReport -Pcoverage -Pandroid.testInstrumentationRunnerArguments.notAnnotation=com.owncloud.android.utils.ScreenshotTest || scripts/uploadReport.sh $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER "stable" "IT" $DRONE_PULL_REQUEST $GIT_TOKEN
+      - scripts/deleteOldComments.sh "stable" "IT" $DRONE_PULL_REQUEST
+      - ./gradlew createGplayDebugCoverageReport -Pcoverage -Pandroid.testInstrumentationRunnerArguments.notAnnotation=com.owncloud.android.utils.ScreenshotTest || scripts/uploadReport.sh $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER "stable" "IT" $DRONE_PULL_REQUEST
 
 services:
   - name: server
@@ -74,13 +74,13 @@ steps:
         from_secret: LOG_PASSWORD
       GIT_USERNAME:
         from_secret: GIT_USERNAME
-      GIT_TOKEN:
+      GITHUB_TOKEN:
         from_secret: GIT_TOKEN
     commands:
-      - scripts/checkIfRunDrone.sh $GIT_USERNAME $GIT_TOKEN $DRONE_PULL_REQUEST || exit 0
+      - scripts/checkIfRunDrone.sh $DRONE_PULL_REQUEST || exit 0
       - emulator -avd android -no-snapshot -gpu swiftshader_indirect -no-window -no-audio -skin 500x833 &
       - sed -i s'#<bool name="is_beta">false</bool>#<bool name="is_beta">true</bool>#'g app/src/main/res/values/setup.xml
-      - scripts/runCombinedTest.sh $GIT_USERNAME $GIT_TOKEN $DRONE_PULL_REQUEST $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER
+      - scripts/runCombinedTest.sh $DRONE_PULL_REQUEST $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER
 
 services:
   - name: server
@@ -125,7 +125,7 @@ steps:
     environment:
       GIT_USERNAME:
         from_secret: GIT_USERNAME
-      GIT_TOKEN:
+      GITHUB_TOKEN:
         from_secret: GIT_TOKEN
       LOG_USERNAME:
         from_secret: LOG_USERNAME

+ 18 - 1
.github/workflows/analysis.yml

@@ -10,7 +10,22 @@ jobs:
     analysis:
         runs-on: ubuntu-latest
         steps:
+            -   name: Setup variables
+                id: get-vars
+                run: |
+                    if [ -z "$GITHUB_HEAD_REF" ]; then
+                        # push
+                        echo "::set-output name=branch::$GITHUB_REF_NAME"
+                        echo "::set-output name=pr::$GITHUB_RUN_ID"
+                    else
+                        # pull request
+                        echo "::set-output name=branch::$GITHUB_HEAD_REF"
+                        echo "::set-output name=pr::${{ github.event.pull_request.number }}"
+                    fi
             -   uses: actions/checkout@v3
+                with:
+                    repository: ${{ steps.get-vars.outputs.repo }}
+                    ref: ${{ steps.get-vars.outputs.branch }}
             -   name: Set up JDK 11
                 uses: actions/setup-java@v3
                 with:
@@ -20,7 +35,9 @@ jobs:
                 run: |
                     python3 -m pip install defusedxml
             -   name: Run analysis wrapper
+                env:
+                    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                 run: |
                     mkdir -p $HOME/.gradle
                     echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > $HOME/.gradle/gradle.properties
-                    scripts/analysis/analysis-wrapper.sh ${{ secrets.GIT_USERNAME }} ${{ secrets.GIT_TOKEN }} ${{ steps.get-vars.outputs.branch }} ${{ secrets.LOG_USERNAME }} ${{ secrets.LOG_PASSWORD }} $GITHUB_RUN_NUMBER ${{ steps.get-vars.outputs.pr }}
+                    scripts/analysis/analysis-wrapper.sh ${{ steps.get-vars.outputs.branch }} ${{ secrets.LOG_USERNAME }} ${{ secrets.LOG_PASSWORD }} $GITHUB_RUN_NUMBER ${{ steps.get-vars.outputs.pr }}

+ 2 - 1
.github/workflows/qa.yml

@@ -31,6 +31,7 @@ jobs:
                     KEY_PASS: ${{ secrets.KEY_PASS }}
                     LOG_USERNAME: ${{ secrets.LOG_USERNAME }}
                     LOG_PASSWORD: ${{ secrets.LOG_PASSWORD }}
+                    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                 run: |
                     mkdir -p $HOME/.gradle
                     echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > $HOME/.gradle/gradle.properties
@@ -38,4 +39,4 @@ jobs:
                     sed -i "/qa/,/\}/ s/versionName .*/versionName \"${{github.event.number}}\"/" app/build.gradle
                     ./gradlew assembleQaDebug
                     $(find /usr/local/lib/android/sdk/build-tools/*/apksigner | sort | tail -n1) sign  --ks-pass pass:$KS_PASS --key-pass pass:$KEY_PASS --ks-key-alias key0 --ks scripts/QA_keystore.jks app/build/outputs/apk/qa/debug/qa-debug-*.apk
-                    sudo scripts/uploadArtifact.sh $LOG_USERNAME $LOG_PASSWORD ${{github.event.number}} ${{github.event.number}} ${{ secrets.GITHUB_TOKEN }}
+                    sudo scripts/uploadArtifact.sh $LOG_USERNAME $LOG_PASSWORD ${{github.event.number}} ${{github.event.number}}

+ 6 - 2
.github/workflows/screenShotTest.yml

@@ -59,8 +59,10 @@ jobs:
                 run: ./gradlew assembleGplayDebug
 
             -   name: Delete old comments
+                env:
+                    GITHUB_TOKEN:  ${{ secrets.GITHUB_TOKEN }}
                 if: ${{ always() }}
-                run: scripts/deleteOldComments.sh "${{ matrix.color }}-${{ matrix.scheme }}" "Screenshot" ${{github.event.number}} ${{ secrets.GITHUB_TOKEN }}
+                run: scripts/deleteOldComments.sh "${{ matrix.color }}-${{ matrix.scheme }}" "Screenshot" ${{github.event.number}}
 
             -   name: Run screenshot tests
                 uses: reactivecircus/android-emulator-runner@v2
@@ -74,8 +76,10 @@ jobs:
                     script: ./gradlew uninstallAll gplayDebugExecuteScreenshotTests -Pandroid.testInstrumentationRunnerArguments.annotation=com.owncloud.android.utils.ScreenshotTest -Pandroid.testInstrumentationRunnerArguments.COLOR=${{ matrix.color }} -Pandroid.testInstrumentationRunnerArguments.DARKMODE=${{ matrix.scheme }}
             -   name: upload failing results
                 if: ${{ failure() }}
+                env:
+                    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                 run:
-                    scripts/uploadReport.sh "${{ secrets.LOG_USERNAME }}" "${{ secrets.LOG_PASSWORD }}" ${{github.event.number}} "${{ matrix.color }}-${{ matrix.scheme }}" "Screenshot" ${{github.event.number}} ${{ secrets.GITHUB_TOKEN }}
+                    scripts/uploadReport.sh "${{ secrets.LOG_USERNAME }}" "${{ secrets.LOG_PASSWORD }}" ${{github.event.number}} "${{ matrix.color }}-${{ matrix.scheme }}" "Screenshot" ${{github.event.number}}
             -   name: Archive Espresso results
                 uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535
                 if: ${{ always() }}

+ 6 - 2
.github/workflows/unit-tests.yml

@@ -17,16 +17,20 @@ jobs:
                     distribution: "temurin"
                     java-version: 11
             -   name: Delete old comments
+                env:
+                    GITHUB_TOKEN:  ${{ secrets.GITHUB_TOKEN }}
                 if: ${{ always() }}
-                run: scripts/deleteOldComments.sh "test" "Unit" ${{github.event.number}} ${{ secrets.GITHUB_TOKEN }}
+                run: scripts/deleteOldComments.sh "test" "Unit" ${{github.event.number}}
             -   name: Run unit tests with coverage
                 uses: gradle/gradle-build-action@v2
                 with:
                     arguments: jacocoTestGplayDebugUnitTest
             -   name: Upload failing results
                 if: ${{ failure() }}
+                env:
+                    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                 run:
-                    scripts/uploadReport.sh "${{ secrets.LOG_USERNAME }}" "${{ secrets.LOG_PASSWORD }}" ${{github.event.number}} "test" "Unit" ${{github.event.number}} ${{ secrets.GITHUB_TOKEN }}
+                    scripts/uploadReport.sh "${{ secrets.LOG_USERNAME }}" "${{ secrets.LOG_PASSWORD }}" ${{github.event.number}} "test" "Unit" ${{github.event.number}}
             -   name: Upload coverage to codecov
                 uses: codecov/codecov-action@v3
                 with:

+ 27 - 26
scripts/analysis/analysis-wrapper.sh

@@ -1,17 +1,16 @@
 #!/usr/bin/env bash
 
-#1: GIT_USERNAME
-#2: GIT_TOKEN
-#3: BRANCH
-#4: LOG_USERNAME
-#5: LOG_PASSWORD
-#6: DRONE_BUILD_NUMBER
-#7: PULL_REQUEST_NUMBER
+BRANCH=$1
+LOG_USERNAME=$2
+LOG_PASSWORD=$3
+BUILD_NUMBER=$4
+PR_NUMBER=$5
+
 
 stableBranch="master"
 repository="android"
 
-ruby scripts/analysis/lint-up.rb $1 $2 $3
+ruby scripts/analysis/lint-up.rb
 lintValue=$?
 
 curl "https://www.kaminsky.me/nc-dev/$repository-findbugs/$stableBranch.xml" -o "/tmp/$stableBranch.xml"
@@ -23,37 +22,39 @@ spotbugsValue=$?
 # 1: count was increased
 # 2: count stayed the same
 
-echo "Branch: $3"
+source scripts/lib.sh
+
+echo "Branch: $BRANCH"
 
-if [ $3 = $stableBranch ]; then
+if [ "$BRANCH" = $stableBranch ]; then
     echo "New spotbugs result for $stableBranch at: https://www.kaminsky.me/nc-dev/$repository-findbugs/$stableBranch.html"
-    curl -u $4:$5 -X PUT https://nextcloud.kaminsky.me/remote.php/webdav/$repository-findbugs/$stableBranch.html --upload-file app/build/reports/spotbugs/spotbugs.html
-    curl 2>/dev/null -u "$4:$5" -X PUT "https://nextcloud.kaminsky.me/remote.php/webdav/$repository-findbugs/$stableBranch.xml" --upload-file app/build/reports/spotbugs/gplayDebug.xml
+    curl -u "${LOG_USERNAME}:${LOG_PASSWORD}" -X PUT https://nextcloud.kaminsky.me/remote.php/webdav/$repository-findbugs/$stableBranch.html --upload-file app/build/reports/spotbugs/spotbugs.html
+    curl 2>/dev/null -u "${LOG_USERNAME}:${LOG_PASSWORD}" -X PUT "https://nextcloud.kaminsky.me/remote.php/webdav/$repository-findbugs/$stableBranch.xml" --upload-file app/build/reports/spotbugs/gplayDebug.xml
 
     if [ $lintValue -ne 1 ]; then
         echo "New lint result for $stableBranch at: https://www.kaminsky.me/nc-dev/$repository-lint/$stableBranch.html"
-        curl -u $4:$5 -X PUT https://nextcloud.kaminsky.me/remote.php/webdav/$repository-lint/$stableBranch.html --upload-file app/build/reports/lint/lint.html
+        curl -u "${LOG_USERNAME}:${LOG_PASSWORD}" -X PUT https://nextcloud.kaminsky.me/remote.php/webdav/$repository-lint/$stableBranch.html --upload-file app/build/reports/lint/lint.html
         exit 0
     fi
 else
-    if [ -e $6 ]; then
+    if [ -e "${BUILD_NUMBER}" ]; then
         6=$stableBranch"-"$(date +%F)
     fi
-    echo "New lint results at https://www.kaminsky.me/nc-dev/$repository-lint/$6.html"
-    curl 2>/dev/null -u $4:$5 -X PUT https://nextcloud.kaminsky.me/remote.php/webdav/$repository-lint/$6.html --upload-file app/build/reports/lint/lint.html
+    echo "New lint results at https://www.kaminsky.me/nc-dev/$repository-lint/${BUILD_NUMBER}.html"
+    curl 2>/dev/null -u "${LOG_USERNAME}:${LOG_PASSWORD}" -X PUT "https://nextcloud.kaminsky.me/remote.php/webdav/$repository-lint/${BUILD_NUMBER}.html" --upload-file app/build/reports/lint/lint.html
 
-    echo "New spotbugs results at https://www.kaminsky.me/nc-dev/$repository-findbugs/$6.html"
-    curl 2>/dev/null -u $4:$5 -X PUT https://nextcloud.kaminsky.me/remote.php/webdav/$repository-findbugs/$6.html --upload-file app/build/reports/spotbugs/spotbugs.html
+    echo "New spotbugs results at https://www.kaminsky.me/nc-dev/$repository-findbugs/${BUILD_NUMBER}.html"
+    curl 2>/dev/null -u "${LOG_USERNAME}:${LOG_PASSWORD}" -X PUT "https://nextcloud.kaminsky.me/remote.php/webdav/$repository-findbugs/${BUILD_NUMBER}.html" --upload-file app/build/reports/spotbugs/spotbugs.html
 
     # delete all old comments, starting with Codacy
-    oldComments=$(curl 2>/dev/null -u $1:$2 -X GET https://api.github.com/repos/nextcloud/android/issues/$7/comments | jq '.[] | (.id |tostring) + "|" + (.user.login | test("nextcloud-android-bot") | tostring) + "|" + (.body | test("<h1>Codacy.*") | tostring)'  | grep "true|true" | tr -d "\"" | cut -f1 -d"|")
+    oldComments=$(curl_gh -X GET "https://api.github.com/repos/nextcloud/$repository/issues/${PR_NUMBER}/comments" | jq '.[] | select((.user.login | contains("github-actions")) and  (.body | test("<h1>Codacy.*"))) | .id')
 
-    echo $oldComments | while read comment ; do
-        curl 2>/dev/null -u $1:$2 -X DELETE https://api.github.com/repos/nextcloud/android/issues/comments/$comment
+    echo "$oldComments" | while read -r comment ; do
+        curl_gh -X DELETE "https://api.github.com/repos/nextcloud/$repository/issues/comments/$comment"
     done
 
     # check library, only if base branch is master
-    baseBranch=$(scripts/analysis/getBranchBase.sh $1 $2 $7 | tr -d "\"")
+    baseBranch=$(scripts/analysis/getBranchBase.sh "${PR_NUMBER}" | tr -d "\"")
     if [ $baseBranch = "master" -a $(grep "androidLibraryVersion = \"master-SNAPSHOT\"" build.gradle -c) -ne 1 ]; then
         checkLibraryMessage="<h1>Android-library is not set to master branch in build.gradle</h1>"
         checkLibrary=1
@@ -88,7 +89,7 @@ else
         lintWarningNew=0
     fi
 
-    lintResultOld=$(curl 2>/dev/null https://raw.githubusercontent.com/nextcloud/android/$stableBranch/scripts/analysis/lint-results.txt)
+    lintResultOld=$(curl 2>/dev/null "https://raw.githubusercontent.com/nextcloud/$repository/$stableBranch/scripts/analysis/lint-results.txt")
     lintErrorOld=$(echo $lintResultOld | grep "[0-9]* error" -o | cut -f1 -d" ")
     if ( [ -z $lintErrorOld ] ); then
         lintErrorOld=0
@@ -106,9 +107,9 @@ else
         codacyResult=""
     fi
 
-    lintResult="<h1>Lint</h1><table width='500' cellpadding='5' cellspacing='2'><tr class='tablerow0'><td>Type</td><td><a href='https://www.kaminsky.me/nc-dev/"$repository"-lint/"$stableBranch".html'>$stableBranch</a></td><td><a href='https://www.kaminsky.me/nc-dev/"$repository"-lint/"$6".html'>PR</a></td></tr><tr class='tablerow1'><td>Warnings</td><td>"$lintWarningOld"</td><td>"$lintWarningNew"</td></tr><tr class='tablerow0'><td>Errors</td><td>"$lintErrorOld"</td><td>"$lintErrorNew"</td></tr></table>"
+    lintResult="<h1>Lint</h1><table width='500' cellpadding='5' cellspacing='2'><tr class='tablerow0'><td>Type</td><td><a href='https://www.kaminsky.me/nc-dev/$repository-lint/$stableBranch.html'>$stableBranch</a></td><td><a href='https://www.kaminsky.me/nc-dev/$repository-lint/${BUILD_NUMBER}.html'>PR</a></td></tr><tr class='tablerow1'><td>Warnings</td><td>$lintWarningOld</td><td>$lintWarningNew</td></tr><tr class='tablerow0'><td>Errors</td><td>$lintErrorOld</td><td>$lintErrorNew</td></tr></table>"
 
-    spotbugsResult="<h1>SpotBugs</h1>$(scripts/analysis/spotbugsComparison.py "/tmp/$stableBranch.xml" app/build/reports/spotbugs/gplayDebug.xml --link-new "https://www.kaminsky.me/nc-dev/$repository-findbugs/$6.html" --link-base "https://www.kaminsky.me/nc-dev/$repository-findbugs/$stableBranch.html")"
+    spotbugsResult="<h1>SpotBugs</h1>$(scripts/analysis/spotbugsComparison.py "/tmp/$stableBranch.xml" app/build/reports/spotbugs/gplayDebug.xml --link-new "https://www.kaminsky.me/nc-dev/$repository-findbugs/${BUILD_NUMBER}.html" --link-base "https://www.kaminsky.me/nc-dev/$repository-findbugs/$stableBranch.html")"
 
     if ( [ $lintValue -eq 1 ] ) ; then
         lintMessage="<h1>Lint increased!</h1>"
@@ -131,7 +132,7 @@ else
     fi
 
     payload="{ \"body\" : \"$codacyResult $lintResult $spotbugsResult $checkLibraryMessage $lintMessage $spotbugsMessage $gplayLimitation $notNull\" }"
-    curl -u "$1:$2" -X POST "https://api.github.com/repos/nextcloud/android/issues/$7/comments" -d "$payload"
+    curl_gh -X POST "https://api.github.com/repos/nextcloud/$repository/issues/${PR_NUMBER}/comments" -d "$payload"
 
     if [ ! -z "$gplayLimitation" ]; then
         exit 1

+ 5 - 3
scripts/analysis/getBranchBase.sh

@@ -1,9 +1,11 @@
 #!/bin/bash
 
-# $1: username, $2: password/token, $3: pull request number
+PR_NUMBER=$1
 
-if [ -z $3 ] ; then
+source scripts/lib.sh
+
+if [ -z "${PR_NUMBER}" ] ; then
     echo "master";
 else
-    curl 2>/dev/null -u $1:$2 https://api.github.com/repos/nextcloud/android/pulls/$3 | jq .base.ref
+    curl_gh "https://api.github.com/repos/nextcloud/android/pulls/${PR_NUMBER}" | jq .base.ref
 fi

+ 7 - 14
scripts/analysis/lint-up.rb

@@ -1,14 +1,14 @@
 ## Script from https://github.com/tir38/android-lint-entropy-reducer at 07.05.2017
 # adapts to drone, use git username / token as parameter
 
+# TODO cleanup this script, it has a lot of unused stuff
+
+
 Encoding.default_external = Encoding::UTF_8
 Encoding.default_internal = Encoding::UTF_8
 
 puts "=================== starting Android Lint Entropy Reducer ===================="
 
-# get args
-git_user, git_token, git_branch = ARGV
-
 # ========================  SETUP ============================
 
 # User name for git commits made by this script.
@@ -169,25 +169,18 @@ end
 # write new results to file (will overwrite existing, or create new)
 File.write(previous_lint_report, "DO NOT TOUCH; GENERATED BY DRONE\n" + error_warning_string)
 
-# push changes to github (if this script is run locally, we don't want to overwrite git username and email, so save temporarily)
-previous_git_username, _ = Open3.capture2('git config user.name')
-previous_git_username = previous_git_username.strip
-
-previous_git_email, _ = Open3.capture3('git config user.email')
-previous_git_email = previous_git_email.strip
-
 # update git user name and email for this script
-system ("git config --local user.name '"  + git_user + "'")
-system ("git config --local user.email 'android@nextcloud.com'")
+system ("git config --local user.name 'github-actions'")
+system ("git config --local user.email 'github-actions@github.com'")
 
 # add previous Lint result file to git
 system ('git add ' + PREVIOUS_LINT_RESULTS_FILE)
 
 # commit changes
-system({"GIT_COMMITTER_NAME" => git_user, "GIT_COMMITTER_EMAIL" => "android@nextcloud.com", "GIT_AUTHOR_EMAIL" => "android@nextcloud.com"}, 'git commit -sm "Analysis: update lint results to reflect reduced error/warning count"')
+system('git commit -sm "Analysis: update lint results to reflect reduced error/warning count"')
 
 # push to origin
-system ('git push origin HEAD:' + git_branch)
+system ('git push')
 
 puts "SUCCESS: count was reduced"
 exit 0 # success

+ 5 - 3
scripts/checkIfRunDrone.sh

@@ -1,12 +1,14 @@
 #!/bin/sh -e
 
-if [ -z $3 ] ; then
+PR_NUMBER=$1
+
+if [ -z "$PR_NUMBER" ] ; then
     echo "Merge commit to master -> continue with CI"
     exit 0
 fi
 
-export BRANCH=$(scripts/analysis/getBranchBase.sh $1 $2 $3 | sed s'/"//'g)
-if [ $(git diff --name-only origin/$BRANCH | grep -cE "^app/src|screenshots|build.gradle|.drone.yml") -eq 0 ] ; then
+export BRANCH=$(scripts/analysis/getBranchBase.sh "$PR_NUMBER" | sed 's/"//g')
+if [ "$(git diff --name-only "origin/$BRANCH" | grep -cE "^app/src|screenshots|build.gradle|.drone.yml")" -eq 0 ] ; then
     echo "No source files changed"
     exit 1
 else

+ 4 - 4
scripts/deleteOldComments.sh

@@ -2,25 +2,25 @@
 #1: BRANCH
 #2: TYPE
 #3: PR
-#4: GITHUB_TOKEN
 
 BRANCH=$1
 TYPE=$2
 PR=$3
-GITHUB_TOKEN=$4
+
+source scripts/lib.sh
 
 BRANCH_TYPE=$BRANCH-$TYPE
 
  # delete all old comments, matching this type
 echo "Deleting old comments for $BRANCH_TYPE"
-oldComments=$(curl 2>/dev/null --header "authorization: Bearer $GITHUB_TOKEN" -X GET https://api.github.com/repos/nextcloud/android/issues/$PR/comments | jq --arg TYPE $BRANCH_TYPE '.[] | (.id |tostring) + "|" + (.user.login | test("(nextcloud-android-bot|github-actions)") | tostring) + "|" + (.body | test([$TYPE]) | tostring)'| grep "true|true" | tr -d "\"" | cut -f1 -d"|")
+oldComments=$(curl_gh -X GET https://api.github.com/repos/nextcloud/android/issues/$PR/comments | jq --arg TYPE $BRANCH_TYPE '.[] | (.id |tostring) + "|" + (.user.login | test("(nextcloud-android-bot|github-actions)") | tostring) + "|" + (.body | test([$TYPE]) | tostring)'| grep "true|true" | tr -d "\"" | cut -f1 -d"|")
 count=$(echo -n "$oldComments" | grep -c '^')
 echo "Found $count old comments"
 
 if [ "$count" -gt 0 ]; then
   echo "$oldComments" | while read comment ; do
     echo "Deleting comment: $comment"
-    curl 2>/dev/null --header "authorization: Bearer $GITHUB_TOKEN" -X DELETE https://api.github.com/repos/nextcloud/android/issues/comments/$comment
+    curl_gh -X DELETE https://api.github.com/repos/nextcloud/android/issues/comments/$comment
   done
 fi
 

+ 48 - 0
scripts/lib.sh

@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+#
+#  Nextcloud Android Library is available under MIT license
+#
+#  @author Álvaro Brey Vilas
+#  Copyright (C) 2022 Álvaro Brey Vilas
+#  Copyright (C) 2022 Nextcloud GmbH
+#
+#  Permission is hereby granted, free of charge, to any person obtaining a copy
+#  of this software and associated documentation files (the "Software"), to deal
+#  in the Software without restriction, including without limitation the rights
+#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#  copies of the Software, and to permit persons to whom the Software is
+#  furnished to do so, subject to the following conditions:
+#
+#  The above copyright notice and this permission notice shall be included in
+#  all copies or substantial portions of the Software.
+#
+#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+#  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+#  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+#  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+#  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#  THE SOFTWARE.
+#
+
+## This file is intended to be sourced by other scripts
+
+
+function err() {
+    echo >&2 "$@"
+}
+
+
+function curl_gh() {
+    if [[ -n "$GITHUB_TOKEN" ]]
+    then
+        curl \
+            --silent \
+            --header "Authorization: token $GITHUB_TOKEN" \
+            "$@"
+    else
+        err "WARNING: No GITHUB_TOKEN found. Skipping API call"
+    fi
+
+}

+ 2 - 2
scripts/runAllScreenshotCombinations

@@ -42,9 +42,9 @@ do
         -Pandroid.testInstrumentationRunnerArguments.annotation=com.owncloud.android.utils.ScreenshotTest \
         -Pandroid.testInstrumentationRunnerArguments.COLOR="$color" \
         -Pandroid.testInstrumentationRunnerArguments.DARKMODE="$darkMode" </dev/null > /dev/null \
-        && scripts/deleteOldComments.sh "$1-$darkMode-$color" "Screenshot" "$4" "$GIT_TOKEN" \
+        && scripts/deleteOldComments.sh "$1-$darkMode-$color" "Screenshot" "$4" \
         || resultCode=1 && scripts/uploadReport.sh "$LOG_USERNAME" "$LOG_PASSWORD" "$4" \
-        "$1-$darkMode-$color" "Screenshot" "$4" "$GIT_TOKEN"
+        "$1-$darkMode-$color" "Screenshot" "$4"
     fi
 done
 

+ 6 - 8
scripts/runCombinedTest.sh

@@ -1,13 +1,11 @@
 #!/bin/bash
 
-GIT_USERNAME=$1
-GIT_TOKEN=$2
-DRONE_PULL_REQUEST=$3
-LOG_USERNAME=$4
-LOG_PASSWORD=$5
-DRONE_BUILD_NUMBER=$6
+DRONE_PULL_REQUEST=$1
+LOG_USERNAME=$2
+LOG_PASSWORD=$3
+DRONE_BUILD_NUMBER=$4
 
-scripts/deleteOldComments.sh "master" "IT" $DRONE_PULL_REQUEST $GIT_TOKEN
+scripts/deleteOldComments.sh "master" "IT" "$DRONE_PULL_REQUEST"
 
 ./gradlew assembleGplayDebugAndroidTest
 
@@ -19,7 +17,7 @@ scripts/wait_for_server.sh "server"
 stat=$?
 
 if [ ! $stat -eq 0 ]; then
-    bash scripts/uploadReport.sh $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER "master" "IT" $DRONE_PULL_REQUEST $GIT_TOKEN
+    bash scripts/uploadReport.sh "$LOG_USERNAME" "$LOG_PASSWORD" "$DRONE_BUILD_NUMBER" "master" "IT" "$DRONE_PULL_REQUEST"
 fi
 
 curl -Os https://uploader.codecov.io/latest/linux/codecov

+ 5 - 5
scripts/uploadArtifact.sh

@@ -4,7 +4,6 @@
 #2: LOG_PASSWORD
 #3: DRONE_BUILD_NUMBER
 #4: DRONE_PULL_REQUEST
-#5: GITHUB_TOKEN
 
 DAV_URL=https://nextcloud.kaminsky.me/remote.php/webdav/android-artifacts/
 PUBLIC_URL=https://www.kaminsky.me/nc-dev/android-artifacts
@@ -12,7 +11,8 @@ USER=$1
 PASS=$2
 BUILD=$3
 PR=$4
-GITHUB_TOKEN=$5
+
+source scripts/lib.sh
 
 if ! test -e app/build/outputs/apk/qa/debug/qa-debug-*.apk ; then
     exit 1
@@ -20,10 +20,10 @@ fi
 echo "Uploaded artifact to $DAV_URL/$BUILD.apk"
 
 # delete all old comments, starting with "APK file:"
-oldComments=$(curl 2>/dev/null --header "authorization: Bearer $GITHUB_TOKEN" -X GET https://api.github.com/repos/nextcloud/android/issues/$PR/comments | jq '.[] | (.id |tostring) + "|" + (.user.login | test("github-actions") | tostring) + "|" + (.body | test("APK file:.*") | tostring)'  | grep "true|true" | tr -d "\"" | cut -f1 -d"|")
+oldComments=$(curl_gh -X GET https://api.github.com/repos/nextcloud/android/issues/$PR/comments | jq '.[] | (.id |tostring) + "|" + (.user.login | test("github-actions") | tostring) + "|" + (.body | test("APK file:.*") | tostring)'  | grep "true|true" | tr -d "\"" | cut -f1 -d"|")
 
 echo $oldComments | while read comment ; do
-    curl 2>/dev/null --header "authorization: Bearer $GITHUB_TOKEN" -X DELETE https://api.github.com/repos/nextcloud/android/issues/comments/$comment
+    curl_gh -X DELETE https://api.github.com/repos/nextcloud/android/issues/comments/$comment
 done
 
 apt-get -y install qrencode
@@ -32,4 +32,4 @@ qrencode -o $PR.png "$PUBLIC_URL/$BUILD.apk"
 
 curl -u $USER:$PASS -X PUT $DAV_URL/$BUILD.apk --upload-file app/build/outputs/apk/qa/debug/qa-debug-*.apk
 curl -u $USER:$PASS -X PUT $DAV_URL/$BUILD.png --upload-file $PR.png
-curl --header "authorization: Bearer $GITHUB_TOKEN" -X POST https://api.github.com/repos/nextcloud/android/issues/$PR/comments -d "{ \"body\" : \"APK file: $PUBLIC_URL/$BUILD.apk <br/><br/> ![qrcode]($PUBLIC_URL/$BUILD.png) <br/><br/>To test this change/fix you can simply download above APK file and install and test it in parallel to your existing Nextcloud app. \" }"
+curl_gh -X POST https://api.github.com/repos/nextcloud/android/issues/$PR/comments -d "{ \"body\" : \"APK file: $PUBLIC_URL/$BUILD.apk <br/><br/> ![qrcode]($PUBLIC_URL/$BUILD.png) <br/><br/>To test this change/fix you can simply download above APK file and install and test it in parallel to your existing Nextcloud app. \" }"

+ 3 - 22
scripts/uploadReport.sh

@@ -1,26 +1,7 @@
 #!/usr/bin/env bash
 
-curl_gh() {
-  curl \
-    --header "authorization: Bearer $GITHUB_TOKEN" \
-    "$@"
-}
-
-deleteOldComments() {
-    # delete all old comments, matching this type
-    echo "Deleting old comments for $BRANCH_TYPE"
-    oldComments=$(curl_gh > /dev/null 2>&1  -X GET https://api.github.com/repos/nextcloud/android/issues/$PR/comments | jq --arg TYPE $BRANCH_TYPE '.[] | (.id |tostring) + "|" + (.user.login | test("nextcloud-android-bot") | tostring) + "|" + (.body | test([$TYPE]) | tostring)'| grep "true|true" | tr -d "\"" | cut -f1 -d"|")
-    count=$(echo $oldComments | grep true | wc -l)
-    echo "Found $count old comments"
-
-    echo $oldComments | while read comment ; do
-        echo "Deleting comment: $comment"
-        curl_gh > /dev/null 2>&1 -X DELETE https://api.github.com/repos/nextcloud/android/issues/comments/$comment
-    done
-}
-
 upload() {
-    deleteOldComments
+    scripts/deleteOldComments.sh "$BRANCH" "$TYPE" "$PR"
 
     cd $1
 
@@ -41,7 +22,6 @@ upload() {
 #4: BRANCH (stable or master)
 #5: TYPE (IT or Unit)
 #6: DRONE_PULL_REQUEST
-#7: GITHUB_TOKEN
 
 URL=https://nextcloud.kaminsky.me/remote.php/webdav/android-integrationTests
 ID=$3
@@ -50,7 +30,8 @@ PASS=$2
 BRANCH=$4
 TYPE=$5
 PR=$6
-GITHUB_TOKEN="$7"
+
+source scripts/lib.sh
 
 REMOTE_FOLDER=$ID-$TYPE-$BRANCH-$(date +%H-%M)
 BRANCH_TYPE=$BRANCH-$TYPE