Periodic checks/tasks #15
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
on: | |
schedule: | |
- cron: '0 0 * * 6' | |
workflow_dispatch: | |
name: Periodic checks/tasks | |
env: | |
CARGO_ARGS: --no-default-features --features stdlib,zlib,importlib,encodings,ssl,jit | |
PYTHON_VERSION: "3.12.0" | |
jobs: | |
# codecov collects code coverage data from the rust tests, python snippets and python test suite. | |
# This is done using cargo-llvm-cov, which is a wrapper around llvm-cov. | |
codecov: | |
name: Collect code coverage data | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: taiki-e/install-action@cargo-llvm-cov | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- run: sudo apt-get update && sudo apt-get -y install lcov | |
- name: Run cargo-llvm-cov with Rust tests. | |
run: cargo llvm-cov --no-report --workspace --exclude rustpython_wasm --verbose --no-default-features --features stdlib,zlib,importlib,encodings,ssl,jit | |
- name: Run cargo-llvm-cov with Python snippets. | |
run: python scripts/cargo-llvm-cov.py | |
continue-on-error: true | |
- name: Run cargo-llvm-cov with Python test suite. | |
run: cargo llvm-cov --no-report run -- -m test -u all --slowest --fail-env-changed | |
continue-on-error: true | |
- name: Prepare code coverage data | |
run: cargo llvm-cov report --lcov --output-path='codecov.lcov' | |
- name: Upload to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
file: ./codecov.lcov | |
testdata: | |
name: Collect regression test data | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: build rustpython | |
run: cargo build --release --verbose | |
- name: collect tests data | |
run: cargo run --release extra_tests/jsontests.py | |
env: | |
RUSTPYTHONPATH: ${{ github.workspace }}/Lib | |
- name: upload tests data to the website | |
env: | |
SSHKEY: ${{ secrets.ACTIONS_TESTS_DATA_DEPLOY_KEY }} | |
GITHUB_ACTOR: ${{ github.actor }} | |
run: | | |
echo "$SSHKEY" >~/github_key | |
chmod 600 ~/github_key | |
export GIT_SSH_COMMAND="ssh -i ~/github_key" | |
git clone git@github.com:RustPython/rustpython.github.io.git website | |
cd website | |
cp ../extra_tests/cpython_tests_results.json ./_data/regrtests_results.json | |
git add ./_data/regrtests_results.json | |
if git -c user.name="Github Actions" -c user.email="actions@github.com" commit -m "Update regression test results" --author="$GITHUB_ACTOR"; then | |
git push | |
fi | |
whatsleft: | |
name: Collect what is left data | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: build rustpython | |
run: cargo build --release --verbose | |
- name: Collect what is left data | |
run: | | |
chmod +x ./whats_left.py | |
./whats_left.py > whats_left.temp | |
env: | |
RUSTPYTHONPATH: ${{ github.workspace }}/Lib | |
- name: Upload data to the website | |
env: | |
SSHKEY: ${{ secrets.ACTIONS_TESTS_DATA_DEPLOY_KEY }} | |
GITHUB_ACTOR: ${{ github.actor }} | |
run: | | |
echo "$SSHKEY" >~/github_key | |
chmod 600 ~/github_key | |
export GIT_SSH_COMMAND="ssh -i ~/github_key" | |
git clone git@github.com:RustPython/rustpython.github.io.git website | |
cd website | |
[ -f ./_data/whats_left.temp ] && cp ./_data/whats_left.temp ./_data/whats_left_lastrun.temp | |
cp ../whats_left.temp ./_data/whats_left.temp | |
git add -A | |
if git -c user.name="Github Actions" -c user.email="actions@github.com" commit -m "Update what is left results" --author="$GITHUB_ACTOR"; then | |
git push | |
fi | |
benchmark: | |
name: Collect benchmark data | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- run: cargo install cargo-criterion | |
- name: build benchmarks | |
run: cargo build --release --benches | |
- name: collect execution benchmark data | |
run: cargo criterion --bench execution | |
- name: collect microbenchmarks data | |
run: cargo criterion --bench microbenchmarks | |
- name: restructure generated files | |
run: | | |
cd ./target/criterion/reports | |
find -type d -name cpython | xargs rm -rf | |
find -type d -name rustpython | xargs rm -rf | |
find -mindepth 2 -maxdepth 2 -name violin.svg | xargs rm -rf | |
find -type f -not -name violin.svg | xargs rm -rf | |
for file in $(find -type f -name violin.svg); do mv $file $(echo $file | sed -E "s_\./([^/]+)/([^/]+)/violin\.svg_./\1/\2.svg_"); done | |
find -mindepth 2 -maxdepth 2 -type d | xargs rm -rf | |
cd .. | |
mv reports/* . | |
rmdir reports | |
- name: upload benchmark data to the website | |
env: | |
SSHKEY: ${{ secrets.ACTIONS_TESTS_DATA_DEPLOY_KEY }} | |
run: | | |
echo "$SSHKEY" >~/github_key | |
chmod 600 ~/github_key | |
export GIT_SSH_COMMAND="ssh -i ~/github_key" | |
git clone git@github.com:RustPython/rustpython.github.io.git website | |
cd website | |
rm -rf ./assets/criterion | |
cp -r ../target/criterion ./assets/criterion | |
git add ./assets/criterion | |
if git -c user.name="Github Actions" -c user.email="actions@github.com" commit -m "Update benchmark results"; then | |
git push | |
fi |