Test Run Dev Version Nightly #878
This file contains hidden or 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: Test Run Dev Version Nightly | |
| on: | |
| schedule: # UTC at 0300 | |
| - cron: "0 3 * * *" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| packages: read | |
| pull-requests: read | |
| issues: read | |
| env: | |
| ANSYSLMD_LICENSE_FILE: ${{ format('1055@{0}', secrets.LICENSE_SERVER) }} | |
| PYFLUENT_TIMEOUT_FORCE_EXIT: 30 | |
| PYTEST_XDIST_AUTO_NUM_WORKERS: 1 | |
| PYFLUENT_LAUNCH_CONTAINER: 1 | |
| PYFLUENT_LOGGING: "DEBUG" | |
| PYFLUENT_WATCHDOG_DEBUG: "OFF" | |
| PYFLUENT_HIDE_LOG_SECRETS: 1 | |
| PYTHON_VERSION: "3.10" | |
| FLUENT_IMAGE_TAG: v27.1.latest | |
| FLUENT_VERSION: 271 | |
| jobs: | |
| test: | |
| name: Unit Testing | |
| runs-on: [self-hosted, pyfluent] | |
| steps: | |
| - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Python | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Clean Docker Data | |
| run: make docker-clean-all-except-supported-images | |
| env: | |
| FLUENT_STABLE_IMAGE_DEV: ${{ vars.FLUENT_STABLE_IMAGE_DEV }} | |
| - name: Cache pip | |
| uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 | |
| with: | |
| path: ~/.cache/pip | |
| key: Python-${{ runner.os }}-${{ env.PYTHON_VERSION }}-${{ hashFiles('pyproject.toml') }} | |
| restore-keys: | | |
| Python-${{ runner.os }}-${{ env.PYTHON_VERSION }} | |
| - name: Add version information | |
| run: make version-info | |
| - name: Install pyfluent | |
| run: make install | |
| - name: Retrieve PyFluent version | |
| run: | | |
| echo "PYFLUENT_VERSION=$(python -c "from ansys.fluent.core import __version__; print(); print(__version__)" | tail -1)" >> $GITHUB_OUTPUT | |
| echo "PYFLUENT version is: $(python -c "from ansys.fluent.core import __version__; print(); print(__version__)" | tail -1)" | |
| id: version | |
| - name: Login to GitHub Container Registry | |
| uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 | |
| with: | |
| registry: ghcr.io | |
| username: ansys-bot | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Pull Fluent docker image | |
| run: make docker-pull | |
| env: | |
| FLUENT_IMAGE_TAG: ${{ env.FLUENT_IMAGE_TAG }} | |
| - name: Run API codegen | |
| run: make api-codegen | |
| env: | |
| FLUENT_IMAGE_TAG: ${{ env.FLUENT_IMAGE_TAG }} | |
| - name: Print Fluent version info | |
| env: | |
| VERSION: ${{ env.FLUENT_VERSION }} | |
| run: | | |
| cat src/ansys/fluent/core/generated/fluent_version_${VERSION}.py | |
| python -c "from ansys.fluent.core.generated.solver.settings_${VERSION} import SHASH; print(f'SETTINGS_HASH = {SHASH}')" | |
| - name: Install again after codegen | |
| run: | | |
| rm -rf dist | |
| make install > /dev/null | |
| - name: Unit Testing | |
| id: unittest | |
| run: | | |
| make install-test | |
| make unittest-all-${VERSION} | |
| env: | |
| VERSION: ${{ env.FLUENT_VERSION }} | |
| FLUENT_IMAGE_TAG: ${{ env.FLUENT_IMAGE_TAG }} | |
| continue-on-error: true | |
| - name: Update Fluent image | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.ADMIN_ACCESS_TOKEN }} | |
| IMAGE_TAG: ${{ env.FLUENT_IMAGE_TAG }} | |
| if: github.ref == 'refs/heads/main' && steps.unittest.outcome == 'success' | |
| run: | | |
| DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ghcr.io/ansys/fluent:${IMAGE_TAG} | sed 's/.*@//') | |
| gh variable set FLUENT_STABLE_IMAGE_DEV --body $DIGEST | |
| - name: Clean Docker Data | |
| run: make docker-clean-all-except-supported-images | |
| env: | |
| FLUENT_STABLE_IMAGE_DEV: ${{ vars.FLUENT_STABLE_IMAGE_DEV }} | |
| - name: Send GitHub Actions Run Status Adaptive Card to Teams via Power Automate | |
| if: github.event_name == 'schedule' && steps.unittest.outcome != 'success' | |
| run: | # zizmor: ignore[template-injection] | |
| STATUS="Failure" | |
| RUN_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| COMMIT_URL="https://github.com/${{ github.repository }}/commit/${{ github.sha }}" | |
| JSON_PAYLOAD=$(jq -n \ | |
| --arg status "$STATUS" \ | |
| --arg branch "${{ github.ref_name }}" \ | |
| --arg commit "${{ github.sha }}" \ | |
| --arg commit_url "$COMMIT_URL" \ | |
| --arg run_url "$RUN_URL" \ | |
| '{ | |
| "attachments": [ | |
| { | |
| "contentType": "application/vnd.microsoft.card.adaptive", | |
| "content": { | |
| "type": "AdaptiveCard", | |
| "version": "1.2", | |
| "body": [ | |
| { | |
| "type": "TextBlock", | |
| "weight": "Bolder", | |
| "size": "Medium", | |
| "text": "${{ github.workflow }}" | |
| }, | |
| { | |
| "type": "TextBlock", | |
| "text": "Status: \($status)" | |
| }, | |
| { | |
| "type": "TextBlock", | |
| "text": "Branch: \($branch)" | |
| }, | |
| { | |
| "type": "TextBlock", | |
| "text": "Commit: \($commit)" | |
| }, | |
| { | |
| "type": "TextBlock", | |
| "text": "[View Commit](\($commit_url))" | |
| }, | |
| { | |
| "type": "TextBlock", | |
| "text": "[View Run](\($run_url))" | |
| } | |
| ] | |
| } | |
| } | |
| ] | |
| }' | |
| ) | |
| echo "Sending notification to Power Automate..." | |
| curl -X POST -H "Content-Type: application/json" -d "$JSON_PAYLOAD" "${{ secrets.PYFLUENT_WEBHOOK_URL }}" | |
| - name: Check test run status and fail the whole job if tests failed | |
| if: steps.unittest.outcome != 'success' | |
| run: | | |
| echo "One or more tests failed. Failing the job." | |
| exit 1 |