]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
github: better caching for coverity toolchain
authorVincent Bernat <vincent@bernat.ch>
Tue, 27 Jul 2021 18:44:30 +0000 (20:44 +0200)
committerVincent Bernat <vincent@bernat.ch>
Tue, 27 Jul 2021 18:44:30 +0000 (20:44 +0200)
Thanks to @troglobit. See https://github.com/lldpd/lldpd/discussions/460.

.github/workflows/coverity.yml

index f3c01b2b473482aaedda9a80a8bae70445ba29fe..2e49c892a1554d80724215ae34a48bd3311d9eee 100644 (file)
@@ -4,6 +4,10 @@ on:
   schedule:
     - cron: '0 9 * * 5'
 
+env:
+  COVERITY_PROJ: vincentbernat-lldpd
+  CONTACT_EMAIL: vincent@bernat.ch
+
 jobs:
   build:
     runs-on: ubuntu-latest
@@ -11,39 +15,59 @@ jobs:
       - uses: actions/checkout@v2
         with:
           submodules: true
+      - name: Fetch latest Coverity Scan MD5
+        id: var
+        env:
+          TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
+        run: |
+          wget -q https://scan.coverity.com/download/cxx/linux64 \
+               --post-data "token=$TOKEN&project=${COVERITY_PROJ/-/%2F}&md5=1" \
+               -O coverity-latest.tar.gz.md5
+          export MD5=$(cat coverity-latest.tar.gz.md5)
+          echo "Got MD5 $MD5"
+          echo ::set-output name=md5::${MD5}
       - uses: actions/cache@v2
-        id: coverity-toolchain-cache
+        id: cache
         with:
-          path: cov-analysis-linux64
-          key: ${{ runner.os }}-coverity
-      - name: Install stuff
-        run: ./tests/ci/install.sh
+          path: coverity-latest.tar.gz
+          key: ${{ runner.os }}-coverity-${{ steps.var.outputs.md5 }}
+          restore-keys: |
+            ${{ runner.os }}-coverity-${{ steps.var.outputs.md5 }}
+            ${{ runner.os }}-coverity-
+            ${{ runner.os }}-coverity
       - name: Download Coverity Scan
-        if: steps.coverity-toolchain-cache.outputs.cache-hit != 'true'
         run: |
-          wget -q https://scan.coverity.com/download/cxx/linux64 \
-               --post-data "token=$TOKEN&project=vincentbernat%2Flldpd" \
-               -O cov-analysis-linux64.tar.gz
-          mkdir cov-analysis-linux64
-          tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64
+          if [ ! -f coverity-latest.tar.gz ]; then
+            wget -q https://scan.coverity.com/download/cxx/linux64 \
+                 --post-data "token=$TOKEN&project=${COVERITY_PROJ/-/%2F}" \
+                 -O coverity-latest.tar.gz
+          else
+            echo "Latest Coverity Scan available from cache :-)"
+            md5sum coverity-latest.tar.gz
+          fi
+          mkdir coverity
+          tar xzf coverity-latest.tar.gz --strip 1 -C coverity
+          ls coverity/
         env:
           TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
+      - name: Install stuff
+        run: ./tests/ci/install.sh
       - name: Build
         run: |
           ./autogen.sh
           ./configure --with-snmp
-          export PATH=`pwd`/cov-analysis-linux64/bin:$PATH
+          export PATH=`pwd`/coverity/bin:$PATH
           cov-build --dir cov-int make
       - name: Submit the result to Coverity Scan
         run: |
-          tar czvf lldpd.tgz cov-int
+          tar czvf ${COVERITY_PROJ#*-}.tgz cov-int
           curl \
-            --form project=vincentbernat-lldpd \
+            --form project=${COVERITY_PROJ} \
             --form token=$TOKEN \
-            --form email=vincent@bernat.ch \
-            --form file=@lldpd.tgz \
+            --form email=${CONTACT_EMAIL} \
+            --form file=@${COVERITY_PROJ#*-}.tgz \
             --form version=trunk \
-            --form description="lldpd $(git rev-parse HEAD)" \
-            https://scan.coverity.com/builds?project=vincentbernat%2Flldpd
+            --form description="${COVERITY_PROJ#*-} $(git rev-parse HEAD)" \
+            https://scan.coverity.com/builds?project=${COVERITY_PROJ/-/%2F}
         env:
           TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}