Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to '.github/workflows/metrics.yaml')
-rw-r--r--.github/workflows/metrics.yaml234
1 files changed, 224 insertions, 10 deletions
diff --git a/.github/workflows/metrics.yaml b/.github/workflows/metrics.yaml
index 3fe2fc917a..233af42f42 100644
--- a/.github/workflows/metrics.yaml
+++ b/.github/workflows/metrics.yaml
@@ -11,20 +11,234 @@ env:
RUSTUP_MAX_RETRIES: 10
jobs:
- metrics:
- if: github.repository == 'rust-lang/rust-analyzer'
+ setup_cargo:
runs-on: ubuntu-latest
+ steps:
+ - name: Install Rust toolchain
+ run: |
+ rustup update --no-self-update stable
+ rustup component add rustfmt rust-src
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ key: ${{ runner.os }}-cargo-${{ github.sha }}
+
+ build_metrics:
+ runs-on: ubuntu-latest
+ needs: setup_cargo
steps:
- name: Checkout repository
uses: actions/checkout@v3
- - name: Install Rust toolchain
- run: |
- rustup update --no-self-update stable
- rustup component add rustfmt rust-src
+ - name: Restore cargo cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ key: ${{ runner.os }}-cargo-${{ github.sha }}
+
+
+ - name: Collect build metrics
+ run: cargo xtask metrics build
+
+ - name: Cache target
+ uses: actions/cache@v3
+ with:
+ path: target/
+ key: ${{ runner.os }}-target-${{ github.sha }}
+
+ - name: Upload build metrics
+ uses: actions/upload-artifact@v3
+ with:
+ name: build-${{ github.sha }}
+ path: target/build.json
+ if-no-files-found: error
+
+ self_metrics:
+ runs-on: ubuntu-latest
+ needs: [setup_cargo, build_metrics]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Restore cargo cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ key: ${{ runner.os }}-cargo-${{ github.sha }}
+
+ - name: Restore target cache
+ uses: actions/cache@v3
+ with:
+ path: target/
+ key: ${{ runner.os }}-target-${{ github.sha }}
- - name: Collect metrics
- run: cargo xtask metrics
- env:
- METRICS_TOKEN: ${{ secrets.METRICS_TOKEN }}
+ - name: Collect build metrics
+ run: cargo xtask metrics self
+
+ - name: Upload build metrics
+ uses: actions/upload-artifact@v3
+ with:
+ name: self-${{ github.sha }}
+ path: target/self.json
+ if-no-files-found: error
+
+ ripgrep_metrics:
+ runs-on: ubuntu-latest
+ needs: [setup_cargo, build_metrics]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Restore cargo cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ key: ${{ runner.os }}-cargo-${{ github.sha }}
+
+ - name: Restore target cache
+ uses: actions/cache@v3
+ with:
+ path: target/
+ key: ${{ runner.os }}-target-${{ github.sha }}
+
+ - name: Collect build metrics
+ run: cargo xtask metrics ripgrep
+
+ - name: Upload ripgrep metrics
+ uses: actions/upload-artifact@v3
+ with:
+ name: ripgrep-${{ github.sha }}
+ path: target/ripgrep.json
+ if-no-files-found: error
+
+ webrender_metrics:
+ runs-on: ubuntu-latest
+ needs: [setup_cargo, build_metrics]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Restore cargo cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ key: ${{ runner.os }}-cargo-${{ github.sha }}
+
+ - name: Restore target cache
+ uses: actions/cache@v3
+ with:
+ path: target/
+ key: ${{ runner.os }}-target-${{ github.sha }}
+
+ - name: Collect webrender metrics
+ run: cargo xtask metrics webrender
+
+ - name: Upload webrender metrics
+ uses: actions/upload-artifact@v3
+ with:
+ name: webrender-${{ github.sha }}
+ path: target/webrender.json
+ if-no-files-found: error
+
+ diesel_metrics:
+ runs-on: ubuntu-latest
+ needs: [setup_cargo, build_metrics]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Restore cargo cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ key: ${{ runner.os }}-cargo-${{ github.sha }}
+
+ - name: Restore target cache
+ uses: actions/cache@v3
+ with:
+ path: target/
+ key: ${{ runner.os }}-target-${{ github.sha }}
+
+ - name: Collect build metrics
+ run: cargo xtask metrics diesel
+
+ - name: Upload build metrics
+ uses: actions/upload-artifact@v3
+ with:
+ name: diesel-${{ github.sha }}
+ path: target/diesel.json
+ if-no-files-found: error
+
+
+
+ generate_final_metrics:
+ runs-on: ubuntu-latest
+ needs: [build_metrics, self_metrics, ripgrep_metrics, webrender_metrics, diesel_metrics]
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Download build metrics
+ uses: actions/download-artifact@v3
+ with:
+ name: build-${{ github.sha }}
+
+ - name: Download self metrics
+ uses: actions/download-artifact@v3
+ with:
+ name: self-${{ github.sha }}
+
+ - name: Download ripgrep metrics
+ uses: actions/download-artifact@v3
+ with:
+ name: ripgrep-${{ github.sha }}
+
+ - name: Download webrender metrics
+ uses: actions/download-artifact@v3
+ with:
+ name: webrender-${{ github.sha }}
+
+ - name: Download diesel metrics
+ uses: actions/download-artifact@v3
+ with:
+ name: diesel-${{ github.sha }}
+
+ - name: Combine json
+ run: |
+ git clone --depth 1 https://[email protected]/nanthR/metrics.git
+ jq -s ".[0] * .[1] * .[2] * .[3] * .[4]" build.json self.json ripgrep.json webrender.json diesel.json -c >> metrics/metrics.json
+ git -C metrics add .
+ git -C metrics -c user.name=Bot -c [email protected] commit --message 📈
+ git -C metrics push origin master
+ env:
+ METRICS_TOKEN: ${{ secrets.METRICS_TOKEN }}