This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

1name: Checks 2 3on: 4 pull_request: {} 5 push: { branches: [main] } 6 7jobs: 8 build: 9 name: Build 10 runs-on: ubuntu-latest 11 steps: 12 - uses: actions/checkout@v6 13 - uses: Swatinem/rust-cache@v2 14 with: { shared-key: build } 15 - run: cargo build --locked --workspace 16 17 benchmark: 18 needs: build 19 name: Benchmark 20 runs-on: ubuntu-latest 21 22 concurrency: 23 group: checks-${{ github.ref }} 24 cancel-in-progress: true 25 26 steps: 27 - uses: actions/checkout@v6 28 - name: Install FFMpeg 29 uses: FedericoCarboni/setup-ffmpeg@v3 30 - uses: Swatinem/rust-cache@v2 31 with: 32 shared-key: build 33 - uses: extractions/setup-just@v3 34 - uses: carlosperate/download-file-action@v2 35 with: 36 file-url: "https://gwennlbh.github.io/shapemaker/timings.csv" 37 file-name: results-main.csv 38 - run: just timings results-main.csv 39 - id: video 40 uses: actions/upload-artifact@v5 41 with: 42 name: output-video 43 path: out.mp4 44 if-no-files-found: error 45 compression-level: 0 46 overwrite: true 47 - id: results_csv 48 uses: juliangruber/read-file-action@v1 49 with: { path: ./results.csv } 50 - id: results_table 51 uses: petems/csv-to-md-table-action@master 52 with: { csvinput: "${{ steps.results_csv.outputs.content }}" } 53 - name: Comment on PR 54 if: github.event_name == 'pull_request' 55 # create or update a comment on the PR with the results 56 uses: edumserrano/find-create-or-update-comment@v3 57 with: 58 issue-number: ${{ github.event.pull_request.number }} 59 edit-mode: replace 60 body-includes: <!-- PERF TIMING RESULTS COMMENT --> 61 body: | 62 <!-- PERF TIMING RESULTS COMMENT --> 63 ### Performance Timings 64 65 ${{ steps.results_table.outputs.markdown-table }} 66 67 ### Resulting video 68 69 ${{ steps.video.outputs.artifact-url }} 70 71 check: 72 name: Lint 73 runs-on: ubuntu-latest 74 steps: 75 - uses: actions/checkout@v6 76 - name: Install FFMpeg 77 uses: FedericoCarboni/setup-ffmpeg@v3 78 - uses: Swatinem/rust-cache@v2 79 with: { shared-key: check } 80 - run: cargo check --locked --workspace 81 - run: cargo check --locked --no-default-features --features web 82 83 test: 84 needs: build 85 name: Test 86 runs-on: ubuntu-latest 87 steps: 88 - uses: actions/checkout@v6 89 - name: Install FFMpeg 90 uses: FedericoCarboni/setup-ffmpeg@v3 91 - uses: Swatinem/rust-cache@v2 92 with: { shared-key: build } 93 - run: cargo test --workspace 94 95 video-baseline-update: 96 if: github.event_name == 'push' 97 needs: build 98 name: Update baseline test video 99 runs-on: ubuntu-latest 100 concurrency: 101 group: video-test-update-baseline-${{ github.ref_name }} 102 cancel-in-progress: true 103 permissions: 104 contents: write 105 defaults: 106 run: 107 working-directory: ./examples/schedule-hell 108 steps: 109 - uses: actions/checkout@v6 110 with: 111 ssh-key: ${{ secrets.AUTOCOMMIT_KEY }} 112 - name: Install FFMpeg 113 uses: FedericoCarboni/setup-ffmpeg@v3 114 - name: Install VMAF 115 uses: ethanjli/cached-download-action@v0.1.3 116 with: 117 url: https://github.com/Netflix/vmaf/releases/download/v3.0.0/vmaf 118 destination: /usr/local/bin/vmaf 119 - run: chmod +x /usr/local/bin/vmaf 120 - uses: Swatinem/rust-cache@v2 121 with: 122 shared-key: build 123 - run: mv baseline.mp4 old-baseline.mp4 124 - run: cargo run -- --duration 10 baseline.mp4 125 - name: Convert to yuv4mpeg 126 run: | 127 for f in $files; do 128 ffmpeg -i $f -f yuv4mpegpipe -y $(basename $f .mp4).y4m 129 done 130 env: 131 files: old-baseline.mp4 baseline.mp4 132 - name: Run VMAF 133 run: vmaf --json --output comparison.json 134 --reference old-baseline.y4m 135 --distorted baseline.y4m 136 - name: Judge score 137 id: results 138 run: | 139 score=$(jq .pooled_metrics.vmaf.mean comparison.json) 140 141 if (( $(echo "$score < 95" | bc -l) )); then 142 conclusion=changed 143 else 144 conclusion=unchanged 145 fi 146 147 echo "score=$score" >> $GITHUB_OUTPUT 148 echo "conclusion=$conclusion" >> $GITHUB_OUTPUT 149 150 - if: steps.results.outputs.conclusion == 'changed' 151 name: Commit changes 152 uses: stefanzweifel/git-auto-commit-action@v7 153 with: 154 commit_message: ✅ Update video test baseline 155 file_pattern: examples/schedule-hell/baseline.mp4 156 157 video: 158 if: github.event_name == 'pull_request' 159 needs: build 160 name: Video 161 runs-on: ubuntu-latest 162 permissions: 163 checks: write 164 contents: read 165 concurrency: 166 group: video-test-${{ github.ref_name }} 167 cancel-in-progress: true 168 defaults: 169 run: 170 working-directory: ./examples/schedule-hell 171 steps: 172 - uses: actions/checkout@v6 173 - name: Install FFMpeg 174 uses: FedericoCarboni/setup-ffmpeg@v3 175 - name: Install VMAF 176 uses: ethanjli/cached-download-action@v0.1.3 177 with: 178 url: https://github.com/Netflix/vmaf/releases/download/v3.0.0/vmaf 179 destination: /usr/local/bin/vmaf 180 - run: chmod +x /usr/local/bin/vmaf 181 - uses: Swatinem/rust-cache@v2 182 with: 183 shared-key: build 184 - uses: extractions/setup-just@v3 185 - run: cargo run --locked -- --duration 10 result.mp4 186 - name: Convert to yuv4mpeg 187 run: | 188 for f in $files; do 189 ffmpeg -i $f -f yuv4mpegpipe -y $(basename $f .mp4).y4m 190 done 191 env: 192 files: baseline.mp4 result.mp4 193 194 - name: Compare with VMAF 195 run: vmaf --json 196 --output comparison.json 197 --reference baseline.y4m 198 --distorted result.y4m 199 200 - name: Judge score 201 id: results 202 run: | 203 score=$(jq .pooled_metrics.vmaf.mean comparison.json) 204 205 if (( $(echo "$score < 95" | bc -l) )); then 206 conclusion=failure 207 comparison_display="$score < 95" 208 else 209 conclusion=success 210 comparison_display="$score ≥ 95" 211 fi 212 213 echo "score=$score" >> $GITHUB_OUTPUT 214 echo "conclusion=$conclusion" >> $GITHUB_OUTPUT 215 echo "comparison_display=$comparison_display" >> $GITHUB_OUTPUT 216 217 - name: Upload comparison artifacts 218 uses: actions/upload-artifact@v5 219 id: artifacts 220 with: 221 path: | 222 examples/schedule-hell/comparison.json 223 examples/schedule-hell/baseline.mp4 224 examples/schedule-hell/result.mp4 225 226 - uses: LouisBrunner/checks-action@v2 227 with: 228 name: Compare to baseline test video 229 token: ${{ secrets.GITHUB_TOKEN }} 230 conclusion: ${{ steps.results.outputs.conclusion }} 231 output: | 232 { 233 "title": "VMAF Score is ${{ steps.results.outputs.comparison_display }}", 234 "summary": "Artifacts available at ${{ steps.artifacts.outputs.artifact-url }}" 235 } 236 237 - name: Fail if score too low 238 if: steps.results.outputs.conclusion == 'failure' 239 run: exit 1