diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 8d2577ac..7d26aad8 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -190,49 +190,49 @@ jobs: needs: [lint, typecheck] steps: - name: Install system dependencies (nodejs for checkout, git for merge tests) - run: | + run: | apt-get update && apt-get install -y -qq nodejs git && rm -rf /var/lib/apt/lists/* - name: Checkout full history - uses: actions/checkout@v4 - with: - fetch-depth: 0 + uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Compute base commit - run: | + run: | git fetch origin "${{ forgejo.base_ref }}" --depth=200 BASE_SHA=$(git merge-base HEAD "origin/${{ forgejo.base_ref }}") echo "ASV_BASE_SHA=${BASE_SHA}" >> $FORGEJO_ENV - name: Install dependencies - run: | + run: | python -m pip install -U pip python -m pip install asv virtualenv uv==${{ env.UV_VERSION }} nox - name: Restore prior ASV benchmarks - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - ASV_S3_BUCKET: ${{ secrets.ASV_S3_BUCKET }} - run: | - python -m pip install awscli - mkdir -p build/asv/results - aws s3 sync "s3://${ASV_S3_BUCKET}/asv/results" build/asv/results --delete || true + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + ASV_S3_BUCKET: ${{ secrets.ASV_S3_BUCKET }} + run: | + python -m pip install awscli + mkdir -p build/asv/results + aws s3 sync "s3://${ASV_S3_BUCKET}/asv/results" build/asv/results --delete || true - name: Run asv continuous via nox - env: - ASV_FACTOR: "1.10" - run: | - nox -s benchmark_regression + env: + ASV_FACTOR: "1.10" + run: | + nox -s benchmark_regression - name: Upload benchmark artifacts - if: always() - uses: actions/upload-artifact@v4 - with: - name: asv-results-pr - path: build/asv - rentention-days: 30 + if: always() + uses: actions/upload-artifact@v4 + with: + name: asv-results-pr + path: build/asv + rentention-days: 30 benchmark-publish: if: forgejo.event_name == 'push' && ( forgejo.ref == 'refs/heads/master' || forgejo.ref == 'refs/heads/develop' ) @@ -240,52 +240,52 @@ jobs: container: python:3.13-slim steps: - name: Install system dependencies (nodejs for checkout, git for merge tests) - run: | - apt-get update && apt-get install -y -qq nodejs git && rm -rf /var/lib/apt/lists/* + run: | + apt-get update && apt-get install -y -qq nodejs git && rm -rf /var/lib/apt/lists/* - name: Checkout full history - uses: actions/checkout@v4 - with: - fetch-depth: 0 + uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Install dependencies - run: | - python -m pip install -U pip - python -m pip install asv virtualenv uv==${{ env.UV_VERSION }} nox + run: | + python -m pip install -U pip + python -m pip install asv virtualenv uv==${{ env.UV_VERSION }} nox - name: Restore prior ASV benchmarks - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - ASV_S3_BUCKET: ${{ secrets.ASV_S3_BUCKET }} - run: | - python -m pip install awscli - mkdir -p build/asv/results - aws s3 sync "s3://${ASV_S3_BUCKET}/asv/results" build/asv/results --delete || true + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + ASV_S3_BUCKET: ${{ secrets.ASV_S3_BUCKET }} + run: | + python -m pip install awscli + mkdir -p build/asv/results + aws s3 sync "s3://${ASV_S3_BUCKET}/asv/results" build/asv/results --delete || true - name: Run asv via nox - run: | - nox -s benchmark + run: | + nox -s benchmark - name: Upload updated benchmarks and website to S3 - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - ASV_S3_BUCKET: ${{ secrets.ASV_S3_BUCKET }} - run: | - python -m pip install awscli - aws s3 sync build/asv/results "s3://${ASV_S3_BUCKET}/asv/results" --delete - aws s3 sync build/asv/html "s3://${ASV_S3_BUCKET}/asv/html" --delete + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + ASV_S3_BUCKET: ${{ secrets.ASV_S3_BUCKET }} + run: | + python -m pip install awscli + aws s3 sync build/asv/results "s3://${ASV_S3_BUCKET}/asv/results" --delete + aws s3 sync build/asv/html "s3://${ASV_S3_BUCKET}/asv/html" --delete - name: Upload benchmark artifacts - if: always() - uses: actions/upload-artifact@v4 - with: - name: asv-results - path: build/asv - rentention-days: 0 + if: always() + uses: actions/upload-artifact@v4 + with: + name: asv-results + path: build/asv + rentention-days: 0 build: runs-on: docker