From 6b03c5eb5f736dff7483e091b38d0b9ad15e40ba Mon Sep 17 00:00:00 2001 From: per1234 Date: Fri, 1 Apr 2022 08:03:08 -0700 Subject: [PATCH] [skip changelog] Remove unused GitHub release download stats workflow The "github-stats" GitHub Actions workflow periodically gathers GitHub release asset download statistics for Arduino CLI and pushes the results to Datadog. There are no known problems with this workflow. However, the companion "arduino-stats" workflow that did the same for the downloads of Arduino CLI from downloads.arduino.cc was broken and thus removed from the repository. The GitHub stats are not very valuable on their own as they only provide an unknown fraction of the total downloads of Arduino CLI. They have also not ended up being used. Since it doesn't provide any value and represents a maintenance burden, it is hereby removed from the repository. --- .github/workflows/github-stats.yaml | 96 ----------------------------- 1 file changed, 96 deletions(-) delete mode 100644 .github/workflows/github-stats.yaml diff --git a/.github/workflows/github-stats.yaml b/.github/workflows/github-stats.yaml deleted file mode 100644 index 480484ec225..00000000000 --- a/.github/workflows/github-stats.yaml +++ /dev/null @@ -1,96 +0,0 @@ -name: github-stats - -on: - schedule: - # run every 30 minutes - - cron: "*/30 * * * *" - workflow_dispatch: - repository_dispatch: - -jobs: - push-stats: - # This workflow is only of value to the arduino/arduino-cli repository and - # would always fail in forks - if: github.repository == 'arduino/arduino-cli' - runs-on: ubuntu-latest - - steps: - - name: Fetch downloads count - id: fetch - uses: actions/github-script@v4 - with: - github-token: ${{github.token}} - script: | - let metrics = [] - - // Get a list of releases - const opts = github.repos.listReleases.endpoint.merge({ - ...context.repo - }) - const releases = await github.paginate(opts) - - // Get download stats for every release - for (const rel of releases) { - // Names for assets are like `arduino-cli_0.4.0_Linux_32bit.tar.gz`, - // we'll use this later to split the asset file name more easily - const baseName = `arduino-cli_${rel.name}_` - - // Get a list of assets for this release - const opts = github.repos.listReleaseAssets.endpoint.merge({ - ...context.repo, - release_id: rel.id - }) - const assets = await github.paginate(opts) - - for (const asset of assets) { - // Ignore files that are not arduino-cli packages - if (!asset.name.startsWith(baseName)) { - continue - } - - // Strip the base and remove file extension to get `Linux_32bit` - systemArch = asset.name.replace(baseName, "").split(".")[0].split("_") - - // Add a metric object to the list of gathered metrics - metrics.push({ - "type": "gauge", - "name": "arduino.downloads.total", - "value": asset.download_count, - "host": "${{ github.repository }}", - "tags": [ - `version:${rel.name}`, - `os:${systemArch[0]}`, - `arch:${systemArch[1]}`, - "cdn:github.com", - "project:arduino-cli" - ] - }) - } - } - - // The action will put whatever we return from this function in - // `outputs.result`, JSON encoded. So we just return the array - // of objects and GitHub will do the rest. - return metrics - - - name: Send metrics - uses: masci/datadog@v1 - with: - api-key: ${{ secrets.DD_API_KEY }} - # Metrics input expects YAML but JSON will work just right. - metrics: ${{steps.fetch.outputs.result}} - - - name: Report failure - if: failure() - uses: masci/datadog@v1 - with: - api-key: ${{ secrets.DD_API_KEY }} - events: | - - title: "Arduino CLI stats failing" - text: "Stats collection failed" - alert_type: "error" - host: ${{ github.repository }} - tags: - - "project:arduino-cli" - - "cdn:github.com" - - "workflow:${{ github.workflow }}"