ci script #2563
Workflow file for this run
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: Pytest MSS | ||
on: | ||
workflow_call: | ||
inputs: | ||
xdist: | ||
required: true | ||
type: string | ||
branch_name: | ||
required: true | ||
type: string | ||
event_name: | ||
required: true | ||
type: string | ||
secrets: | ||
PAT: | ||
required: true | ||
env: | ||
PAT: ${{ secrets.PAT }} | ||
EVENT: ${{ inputs.event_name }} | ||
jobs: | ||
Test-MSS: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
container: | ||
image: openmss/testing-${{ inputs.branch_name }} | ||
steps: | ||
- name: Trust My Directory | ||
run: git config --global --add safe.directory /__w/MSS/MSS | ||
- uses: actions/checkout@v3 | ||
- name: Check for changed dependencies | ||
run: | | ||
cmp -s /meta.yaml localbuild/meta.yaml && cmp -s /development.txt requirements.d/development.txt \ | ||
|| (echo Dependencies differ \ | ||
&& echo "triggerdockerbuild=yes" >> $GITHUB_ENV ) | ||
- name: Always rebuild dependencies for scheduled builds | ||
if: ${{ success() && inputs.event_name == 'schedule' && inputs.branch_name == 'stable' && env.triggerdockerbuild != 'yes' }} | ||
run: | | ||
echo "triggerdockerbuild=yes" >> $GITHUB_ENV | ||
- name: Reinstall dependencies if changed | ||
if: ${{ success() && env.triggerdockerbuild == 'yes' }} | ||
run: | | ||
cd $GITHUB_WORKSPACE \ | ||
&& source /opt/conda/etc/profile.d/conda.sh \ | ||
&& source /opt/conda/etc/profile.d/mamba.sh \ | ||
&& mamba activate mss-${{ inputs.branch_name }}-env \ | ||
&& mamba deactivate \ | ||
&& cat localbuild/meta.yaml \ | ||
| sed -n '/^requirements:/,/^test:/p' \ | ||
| sed -e "s/.*- //" \ | ||
| sed -e "s/menuinst.*//" \ | ||
| sed -e "s/.*://" > reqs.txt \ | ||
&& cat requirements.d/development.txt >> reqs.txt \ | ||
&& echo pyvirtualdisplay >> reqs.txt \ | ||
&& cat reqs.txt \ | ||
&& mamba env remove -n mss-${{ inputs.branch_name }}-env \ | ||
&& mamba create -y -n mss-${{ inputs.branch_name }}-env --file reqs.txt | ||
- name: Print conda list | ||
run: | | ||
source /opt/conda/etc/profile.d/conda.sh \ | ||
&& source /opt/conda/etc/profile.d/mamba.sh \ | ||
&& mamba activate mss-${{ inputs.branch_name }}-env \ | ||
&& mamba list | ||
- name: Run tests | ||
if: ${{ success() && inputs.xdist == 'no' }} | ||
timeout-minutes: 25 | ||
run: | | ||
cd $GITHUB_WORKSPACE \ | ||
&& source /opt/conda/etc/profile.d/conda.sh \ | ||
&& source /opt/conda/etc/profile.d/mamba.sh \ | ||
&& mamba activate mss-${{ inputs.branch_name }}-env \ | ||
&& pytest -v --durations=20 --reverse --cov=mslib tests \ | ||
|| (for i in {1..5} \ | ||
; do pytest tests -v --durations=0 --reverse --last-failed --lfnf=none \ | ||
&& break \ | ||
; done) | ||
- name: Run tests in parallel | ||
if: ${{ success() && inputs.xdist == 'yes' }} | ||
timeout-minutes: 25 | ||
run: | | ||
cd $GITHUB_WORKSPACE \ | ||
&& source /opt/conda/etc/profile.d/conda.sh \ | ||
&& source /opt/conda/etc/profile.d/mamba.sh \ | ||
&& mamba activate mss-${{ inputs.branch_name }}-env \ | ||
&& pytest -vv -n 6 --dist loadfile --max-worker-restart 0 tests \ | ||
|| (for i in {1..5} \ | ||
; do pytest -vv -n 6 --dist loadfile --max-worker-restart 0 tests --last-failed --lfnf=none \ | ||
&& break \ | ||
; done) | ||
- name: Output Monitoring from .pymon db | ||
if: ${{ success() && inputs.xdist == 'no' }} | ||
timeout-minutes: 25 | ||
run | | ||
cd $GITHUB_WORKSPACE \ | ||
&& QUERY="SELECT ITEM_PATH, ITEM_VARIANT, TOTAL_TIME, MEM_USAGE FROM TEST_METRICS ORDER BY MEM_USAGE" \ | ||
&& sqlite3 -column .pymon "$QUERY" | ||
- name: Collect coverage | ||
if: ${{ success() && inputs.event_name == 'push' && inputs.branch_name == 'develop' && inputs.xdist == 'no'}} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
cd $GITHUB_WORKSPACE \ | ||
&& source /opt/conda/etc/profile.d/conda.sh \ | ||
&& source /opt/conda/etc/profile.d/mamba.sh \ | ||
&& mamba activate mss-${{ inputs.branch_name }}-env \ | ||
&& mamba install coveralls \ | ||
&& coveralls --service=github | ||
- name: Invoke dockertesting image creation | ||
if: ${{ always() && inputs.event_name == 'push' && env.triggerdockerbuild == 'yes' && inputs.xdist == 'no'}} | ||
uses: benc-uk/[email protected] | ||
with: | ||
workflow: Update Image testing-${{ inputs.branch_name }} | ||
repo: Open-MSS/dockertesting | ||
ref: main | ||
token: ${{ secrets.PAT }} |