From a12ba3ffd2078262109e7ffc780cdcc575264ac4 Mon Sep 17 00:00:00 2001 From: Konstantin Malanchev Date: Mon, 30 Sep 2024 13:46:34 -0400 Subject: [PATCH 1/3] Use setup-python in asv-pr.yml --- .github/workflows/asv-pr.yml | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/.github/workflows/asv-pr.yml b/.github/workflows/asv-pr.yml index bf5aed6..ef048ef 100644 --- a/.github/workflows/asv-pr.yml +++ b/.github/workflows/asv-pr.yml @@ -20,21 +20,8 @@ env: ARTIFACTS_DIR: ${{ github.workspace }}/artifacts jobs: - setup-python: - runs-on: ubuntu-latest - steps: - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} - - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} asv-pr: runs-on: ubuntu-latest - needs: setup-python defaults: run: working-directory: ${{ env.WORKING_DIR }} @@ -46,15 +33,12 @@ jobs: - name: Display Workflow Run Information run: | echo "Workflow Run ID: ${{ github.run_id }}" - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 + - name: Setup Python + uses: actions/setup-python@v5 with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} + python-version: '3.10' - name: Install dependencies run: | - sudo apt-get update - python -m pip install --upgrade pip pip install asv==0.6.1 virtualenv tabulate lf-asv-formatter - name: Make artifacts directory run: mkdir -p ${{ env.ARTIFACTS_DIR }} @@ -83,4 +67,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: benchmark-artifacts - path: ${{ env.ARTIFACTS_DIR }} \ No newline at end of file + path: ${{ env.ARTIFACTS_DIR }} From 8055f8192391a285f9f2a1d4d173330126388ac4 Mon Sep 17 00:00:00 2001 From: Sandro Campos Date: Mon, 30 Sep 2024 16:05:13 -0400 Subject: [PATCH 2/3] Fix asv failures --- .github/workflows/asv-main.yml | 57 +++++++------------------------ .github/workflows/asv-nightly.yml | 53 +++++++++------------------- .github/workflows/asv-pr.yml | 40 +++++++++++----------- 3 files changed, 49 insertions(+), 101 deletions(-) diff --git a/.github/workflows/asv-main.yml b/.github/workflows/asv-main.yml index f6a6f29..39ed4d8 100644 --- a/.github/workflows/asv-main.yml +++ b/.github/workflows/asv-main.yml @@ -1,7 +1,6 @@ # This workflow will run benchmarks with airspeed velocity (asv), # store the new results in the "benchmarks" branch and publish them # to a dashboard on GH Pages. - name: Run ASV benchmarks for main on: @@ -10,66 +9,38 @@ on: env: PYTHON_VERSION: "3.10" - WORKING_DIR: ${{ github.workspace }}/benchmarks + ASV_VERSION: "0.6.4" + WORKING_DIR: ${{github.workspace}}/benchmarks concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{github.workflow}}-${{github.ref}} cancel-in-progress: true jobs: - - setup-python: - runs-on: ubuntu-latest - - steps: - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} - - - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v5 - with: - python-version: "${{ env.PYTHON_VERSION }}" - asv-main: runs-on: ubuntu-latest - needs: setup-python - permissions: contents: write - defaults: run: - working-directory: ${{ env.WORKING_DIR }} - + working-directory: ${{env.WORKING_DIR}} steps: + - name: Set up Python ${{env.PYTHON_VERSION}} + uses: actions/setup-python@v5 + with: + python-version: ${{env.PYTHON_VERSION}} - name: Checkout main branch of the repository - uses: actions/checkout@v4 + uses: actions/checkout@main with: fetch-depth: 0 - - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} - - name: Install dependencies - run: | - sudo apt-get update - python -m pip install --upgrade pip - pip install asv==0.6.1 virtualenv tabulate - + run: pip install "asv[virtualenv]==${{env.ASV_VERSION}}" - name: Configure git run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - name: Create ASV machine config file run: asv machine --machine gh-runner --yes - - name: Fetch previous results from the "benchmarks" branch run: | if git ls-remote --exit-code origin benchmarks > /dev/null 2>&1; then @@ -78,24 +49,20 @@ jobs: --no-commit mv ../_results . fi - - name: Run ASV for the main branch run: asv run ALL --skip-existing --verbose || true - - name: Submit new results to the "benchmarks" branch uses: JamesIves/github-pages-deploy-action@v4 with: branch: benchmarks - folder: ${{ env.WORKING_DIR }}/_results + folder: ${{env.WORKING_DIR}}/_results target-folder: _results - - name: Generate dashboard HTML run: | asv show asv publish - - name: Deploy to Github pages uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages - folder: ${{ env.WORKING_DIR }}/_html \ No newline at end of file + folder: ${{env.WORKING_DIR}}/_html \ No newline at end of file diff --git a/.github/workflows/asv-nightly.yml b/.github/workflows/asv-nightly.yml index 80a2d78..ebc578a 100644 --- a/.github/workflows/asv-nightly.yml +++ b/.github/workflows/asv-nightly.yml @@ -1,59 +1,44 @@ # This workflow will run daily at 06:45. # It will run benchmarks with airspeed velocity (asv) # and compare performance with the previous nightly build. - name: Run benchmarks nightly job on: + pull_request: + branches: [ main ] schedule: - cron: 45 6 * * * workflow_dispatch: env: PYTHON_VERSION: "3.10" - WORKING_DIR: ${{ github.workspace }}/benchmarks + ASV_VERSION: "0.6.4" + WORKING_DIR: ${{github.workspace}}/benchmarks NIGHTLY_HASH_FILE: nightly-hash jobs: - asv-nightly: runs-on: ubuntu-latest - defaults: run: - working-directory: ${{ env.WORKING_DIR }} - + working-directory: ${{env.WORKING_DIR}} steps: + - name: Set up Python ${{env.PYTHON_VERSION}} + uses: actions/setup-python@v5 + with: + python-version: ${{env.PYTHON_VERSION}} - name: Checkout main branch of the repository uses: actions/checkout@v4 with: fetch-depth: 0 - - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} - - - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v5 - with: - python-version: "${{ env.PYTHON_VERSION }}" - - name: Install dependencies - run: | - sudo apt-get update - python -m pip install --upgrade pip - pip install asv==0.6.1 virtualenv - + run: pip install "asv[virtualenv]==${{env.ASV_VERSION}}" - name: Configure git run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - name: Create ASV machine config file run: asv machine --machine gh-runner --yes - - name: Fetch previous results from the "benchmarks" branch run: | if git ls-remote --exit-code origin benchmarks > /dev/null 2>&1; then @@ -62,32 +47,28 @@ jobs: --no-commit mv ../_results . fi - - name: Get nightly dates under comparison id: nightly-dates run: | echo "yesterday=$(date -d yesterday +'%Y-%m-%d')" >> $GITHUB_OUTPUT echo "today=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - - name: Use last nightly commit hash from cache uses: actions/cache@v4 with: - path: ${{ env.WORKING_DIR }} - key: nightly-results-${{ steps.nightly-dates.outputs.yesterday }} - + path: ${{env.WORKING_DIR}} + key: nightly-results-${{steps.nightly-dates.outputs.yesterday}} - name: Run comparison of main against last nightly build run: | - HASH_FILE=${{ env.NIGHTLY_HASH_FILE }} - CURRENT_HASH=${{ github.sha }} - if [ -f $HASH_FILE ]; then + HASH_FILE=${{env.NIGHTLY_HASH_FILE}} + CURRENT_HASH=${{github.sha}} + if [ -f $HASH_FILE ]; then PREV_HASH=$(cat $HASH_FILE) asv continuous $PREV_HASH $CURRENT_HASH --verbose || true asv compare $PREV_HASH $CURRENT_HASH --sort ratio --verbose fi echo $CURRENT_HASH > $HASH_FILE - - name: Update last nightly hash in cache uses: actions/cache@v4 with: - path: ${{ env.WORKING_DIR }} - key: nightly-results-${{ steps.nightly-dates.outputs.today }} \ No newline at end of file + path: ${{env.WORKING_DIR}} + key: nightly-results-${{steps.nightly-dates.outputs.today}} \ No newline at end of file diff --git a/.github/workflows/asv-pr.yml b/.github/workflows/asv-pr.yml index ef048ef..4499eb9 100644 --- a/.github/workflows/asv-pr.yml +++ b/.github/workflows/asv-pr.yml @@ -11,60 +11,60 @@ on: workflow_dispatch: concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{github.workflow}}-${{github.ref}} cancel-in-progress: true env: PYTHON_VERSION: "3.10" - WORKING_DIR: ${{ github.workspace }}/benchmarks - ARTIFACTS_DIR: ${{ github.workspace }}/artifacts + ASV_VERSION: "0.6.4" + WORKING_DIR: ${{github.workspace}}/benchmarks + ARTIFACTS_DIR: ${{github.workspace}}/artifacts jobs: asv-pr: runs-on: ubuntu-latest defaults: run: - working-directory: ${{ env.WORKING_DIR }} + working-directory: ${{env.WORKING_DIR}} steps: + - name: Set up Python ${{env.PYTHON_VERSION}} + uses: actions/setup-python@v5 + with: + python-version: ${{env.PYTHON_VERSION}} - name: Checkout PR branch of the repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Display Workflow Run Information run: | - echo "Workflow Run ID: ${{ github.run_id }}" - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.10' + echo "Workflow Run ID: ${{github.run_id}}" - name: Install dependencies - run: | - pip install asv==0.6.1 virtualenv tabulate lf-asv-formatter + run: pip install "asv[virtualenv]==${{env.ASV_VERSION}}" lf-asv-formatter - name: Make artifacts directory - run: mkdir -p ${{ env.ARTIFACTS_DIR }} + run: mkdir -p ${{env.ARTIFACTS_DIR}} - name: Save pull request number - run: echo ${{ github.event.pull_request.number }} > ${{ env.ARTIFACTS_DIR }}/pr + run: echo ${{github.event.pull_request.number}} > ${{env.ARTIFACTS_DIR}}/pr - name: Get current job logs URL uses: Tiryoh/gha-jobid-action@v1 id: jobs with: - github_token: ${{ secrets.GITHUB_TOKEN }} - job_name: ${{ github.job }} + github_token: ${{secrets.GITHUB_TOKEN}} + job_name: ${{github.job}} - name: Create ASV machine config file run: asv machine --machine gh-runner --yes - name: Save comparison of PR against main branch run: | - git remote add upstream https://github.com/${{ github.repository }}.git + git remote add upstream https://github.com/${{github.repository}}.git git fetch upstream asv continuous upstream/main HEAD --verbose || true asv compare upstream/main HEAD --sort ratio --verbose | tee output - python -m lf_asv_formatter --asv_version "$(echo asv --version)" + python -m lf_asv_formatter --asv_version "$(asv --version | awk '{print $2}')" printf "\n\nClick [here]($STEP_URL) to view all benchmarks." >> output - mv output ${{ env.ARTIFACTS_DIR }} + mv output ${{env.ARTIFACTS_DIR}} env: - STEP_URL: "${{ steps.jobs.outputs.html_url }}#step:11:1" + STEP_URL: ${{steps.jobs.outputs.html_url}}#step:10:1 - name: Upload artifacts (PR number and benchmarks output) uses: actions/upload-artifact@v4 with: name: benchmark-artifacts - path: ${{ env.ARTIFACTS_DIR }} + path: ${{env.ARTIFACTS_DIR}} \ No newline at end of file From 091c177a439132be1f98c9102a4030b7397b9747 Mon Sep 17 00:00:00 2001 From: Sandro Campos Date: Mon, 30 Sep 2024 16:07:56 -0400 Subject: [PATCH 3/3] Remove PR trigger on nightly benchmarks --- .github/workflows/asv-nightly.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/asv-nightly.yml b/.github/workflows/asv-nightly.yml index ebc578a..5099cd6 100644 --- a/.github/workflows/asv-nightly.yml +++ b/.github/workflows/asv-nightly.yml @@ -4,8 +4,6 @@ name: Run benchmarks nightly job on: - pull_request: - branches: [ main ] schedule: - cron: 45 6 * * * workflow_dispatch: