about summary refs log tree commit diff
path: root/src/tools/rust-analyzer/.github/workflows/metrics.yaml
blob: dc2f432bbc756b5d324f90ef47355bb297435180 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: metrics
on:
  push:
    branches:
      - master

env:
  CARGO_INCREMENTAL: 0
  CARGO_NET_RETRY: 10
  RUSTFLAGS: "-D warnings -W unreachable-pub"
  RUSTUP_MAX_RETRIES: 10

jobs:
  build_metrics:
    if: github.repository == 'rust-lang/rust-analyzer'
    runs-on: ubuntu-latest

    steps:
      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update beta
          rustup default beta
          rustup component add --toolchain beta rust-src

      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Cache cargo
        uses: actions/cache@v4
        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@v4
        with:
          path: target/
          key: ${{ runner.os }}-target-${{ github.sha }}

      - name: Upload build metrics
        uses: actions/upload-artifact@v4
        with:
          name: build-${{ github.sha }}
          path: target/build.json
          if-no-files-found: error

  other_metrics:
    strategy:
      matrix:
        names: [self, ripgrep-13.0.0, webrender-2022, diesel-1.4.8, hyper-0.14.18]
    runs-on: ubuntu-latest
    needs: build_metrics

    steps:
      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update beta
          rustup default beta
          rustup component add --toolchain beta rust-src

      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Restore target cache
        uses: actions/cache@v4
        with:
          path: target/
          key: ${{ runner.os }}-target-${{ github.sha }}

      - name: Collect metrics
        run: cargo xtask metrics "${{ matrix.names }}"

      - name: Upload metrics
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.names }}-${{ github.sha }}
          path: target/${{ matrix.names }}.json
          if-no-files-found: error

  generate_final_metrics:
    runs-on: ubuntu-latest
    needs: [build_metrics, other_metrics]
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Download build metrics
        uses: actions/download-artifact@v4
        with:
          name: build-${{ github.sha }}

      - name: Download self metrics
        uses: actions/download-artifact@v4
        with:
          name: self-${{ github.sha }}

      - name: Download ripgrep-13.0.0 metrics
        uses: actions/download-artifact@v4
        with:
          name: ripgrep-13.0.0-${{ github.sha }}

      - name: Download webrender-2022 metrics
        uses: actions/download-artifact@v4
        with:
          name: webrender-2022-${{ github.sha }}

      - name: Download diesel-1.4.8 metrics
        uses: actions/download-artifact@v4
        with:
          name: diesel-1.4.8-${{ github.sha }}

      - name: Download hyper-0.14.18 metrics
        uses: actions/download-artifact@v4
        with:
          name: hyper-0.14.18-${{ github.sha }}

      - name: Combine json
        run: |
          mkdir ~/.ssh
          echo "${{ secrets.METRICS_DEPLOY_KEY }}" > ~/.ssh/id_ed25519
          chmod 600 ~/.ssh/id_ed25519
          chmod 700 ~/.ssh

          git clone --depth 1 git@github.com:rust-analyzer/metrics.git
          jq -s ".[0] * .[1] * .[2] * .[3] * .[4] * .[5]" build.json self.json ripgrep-13.0.0.json webrender-2022.json diesel-1.4.8.json hyper-0.14.18.json -c >> metrics/metrics.json
          cd metrics
          git add .
          git -c user.name=Bot -c user.email=dummy@example.com commit --message 📈
          git push origin master