Call fs.Unmount only if needed #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Visualize Benchmark and upload results | |
on: | |
push: | |
branches: [ main ] | |
paths: | |
- '**' | |
- '!docs/**' # ignore docs changes | |
- '!**.md' # ignore markdown changes | |
permissions: | |
contents: write | |
deployments: write | |
env: | |
GO_VERSION: '1.20.13' | |
jobs: | |
benchmark: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout main branch | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- run: make | |
- name: Run benchmark | |
run: make benchmarks-perf-test | |
- name: Upload latest benchmark result | |
uses: actions/upload-artifact@v4 | |
with: | |
name: benchmark-result-artifact | |
path: ${{github.workspace}}/benchmark/performanceTest/output/results.json | |
download-and-convert-benchmark-result-to-visualization-data: | |
runs-on: ubuntu-20.04 | |
needs: benchmark | |
steps: | |
- name: Checkout main branch | |
uses: actions/checkout@v4 | |
- name: Download latest benchmark result | |
uses: actions/download-artifact@v4 | |
with: | |
name: benchmark-result-artifact | |
path: ${{github.workspace}} | |
- name: Make temporary folder | |
run: mkdir ${{github.workspace}}/current | |
- name: Change permission of visualization-data-converter.sh | |
run: chmod +x ${{github.workspace}}/scripts/visualization-data-converter.sh | |
- name: Convert benchmark result to visualization data | |
run: ${{github.workspace}}/scripts/visualization-data-converter.sh ${{github.workspace}}/results.json ${{github.workspace}}/current | |
- name: Build matrix of filepaths | |
id: set-matrix | |
# Create a JSON array with the file paths and store it in the 'files' output | |
run: echo "files=$(find ${{github.workspace}}/current -type f -name '*.json' -printf '%p\n' | jq -R . | jq -cs .)" >> $GITHUB_OUTPUT | |
- name: Upload visualization files as github artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: benchmark-gh-pages-artifact | |
path: ${{github.workspace}}/current | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.files }} | |
push-benchmark-result-gh-pages: | |
name: Push benchmark result to Github-pages | |
runs-on: ubuntu-20.04 | |
needs: download-and-convert-benchmark-result-to-visualization-data | |
strategy: | |
matrix: | |
file: ${{ fromJson(needs.download-and-convert-benchmark-result-to-visualization-data.outputs.matrix) }} | |
steps: | |
- name: Checkout main branch | |
uses: actions/checkout@v4 | |
- name: Create current folder | |
run: mkdir ${{github.workspace}}/current | |
- name: Download latest benchmark visualization files | |
uses: actions/download-artifact@v4 | |
with: | |
name: benchmark-gh-pages-artifact | |
path: ${{github.workspace}}/current | |
- name: Extract file names | |
id: get_filename | |
run: | | |
# Get the filename without the path | |
filename=$(basename "${{ matrix.file }}") | |
# Remove the .json extension | |
filename_without_extension="${filename%.json}" | |
echo "filename=$filename_without_extension" >> $GITHUB_OUTPUT | |
- name: Run benchmark action | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
name: Soci Benchmark | |
tool: 'customSmallerIsBetter' | |
benchmark-data-dir-path: "dev/benchmarks/performanceTest/${{ steps.get_filename.outputs.filename }}" | |
output-file-path: ${{ matrix.file }} | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
auto-push: true |