diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 351dac863..5a11b0f68 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -1,31 +1,19 @@ -name: CI-CD +name: Github CI-CD on: + pull_request: workflow_dispatch: - inputs: - freeze_linux: - type: boolean - default: true - description: Freeze linux - freeze_windows: - type: boolean - default: false - description: Freeze windows - force_release: - type: boolean - default: false - description: Force to push a release now push: + tags: + - "*" branches: - "main" - pull_request: - branches: - - "main" - schedule: - - cron: "0 1 * * 1-5" + schedule: # UTC at 0300 + - cron: "0 3 * * *" env: MAIN_PYTHON_VERSION: '3.10' + PACKAGE_NAME: 'pyaedt-examples' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -33,269 +21,114 @@ concurrency: jobs: - style: + code-style: name: Code style runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: Set up Python - uses: actions/setup-python@v4 + - uses: ansys/actions/code-style@v5 with: python-version: ${{ env.MAIN_PYTHON_VERSION }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools tox - - name: Test with tox - run: tox -e style + use-python-cache: false - tests: - name: Tests and coverage - needs: [freeze] - runs-on: ${{ matrix.os }} - strategy: - # max-parallel: 1 - matrix: - os: [ubuntu-latest] - cfg: - - {python-version: "3.10", toxenv: "py310"} - fail-fast: false - - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.cfg.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.cfg.python-version }} - - - uses: extractions/netrc@v1 - with: - machine: github.com - username: pyansys-ci-bot - password: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools tox tox-gh-actions - - name: Test with tox - run: tox -e ${{ matrix.cfg.toxenv }}-coverage - # env: - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - if: always() - with: - report_paths: '**/test*.xml' - check_name: Test Report ${{ matrix.os }}:${{ matrix.cfg.python-version }} - - wheels: - name: Wheels + doc-style: + name: Documentation style runs-on: ubuntu-latest - outputs: - version: ${{ steps.wheels.outputs.version }} steps: - - uses: actions/checkout@v3 - - - name: Set up python - uses: actions/setup-python@v3 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - - uses: extractions/netrc@v1 - with: - machine: github.com - username: pyansys-ci-bot - password: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} - - - name: Install dependencies and build the library - id: wheels - run: | - python -m pip install --upgrade pip setuptools - python -m pip install -r requirements/requirements_build.txt - python build.py dev - python build.py wheels - python -m twine check dist/* - version=$(ls dist/ | grep template | grep -E -o "[0-9]+.[0-9]+.[0-9]+") - echo "version=$version" >> $GITHUB_OUTPUT - echo "Version: $version" - - # - name: Version - # run: | - # ver=$(dev_env/bin/pip show ansys-rep-common | grep Version | awk '{print $2}') - # echo "version=$ver" >> $GITHUB_OUTPUT - # id: version - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: ansys-rep-repo-template-package - path: | - dist/*.whl - retention-days: 5 + - uses: ansys/actions/doc-style@v5 + with: + token: ${{ secrets.GITHUB_TOKEN }} - freeze: - name: Freeze - runs-on: - group: "Default Larger Runners" - labels: ubuntu-latest-16-cores - if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.freeze_linux == 'true' }} - needs: [wheels, style] - strategy: - matrix: - image: [default] - fail-fast: false + doc-build: + name: Build documentation + runs-on: [windows-latest, pyaedt] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 + - name: Set up Python ${{ env.MAIN_PYTHON_VERSION }} + uses: actions/setup-python@v5 with: - registry: ghcr.io/ansys - username: pyansys-ci-bot - password: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} + python-version: ${{ env.MAIN_PYTHON_VERSION }} - - name: Create .netrc + - name: Create virtual environment run: | - printf "machine github.com\n\ - login pyansys-ci-bot\n\ - password ${{ secrets.PYANSYS_CI_BOT_TOKEN }}\n"\ >> ./.netrc - chmod 600 ./.netrc + python -m venv .venv + .venv\Scripts\Activate.ps1 + python -m pip install pip -U + python -m pip install wheel setuptools -U + python -c "import sys; print(sys.executable)" - - name: Image and docker properties - id: props + - name: Install project and documentation dependencies run: | - echo "image=rep-repo-template-${{ matrix.image }}:${{github.run_id}}" >> $GITHUB_OUTPUT - echo "container=rep-repo-template-${{ matrix.image }}-${{github.run_id}}" >> $GITHUB_OUTPUT - echo "revision=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - echo "short_revision=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + .venv\Scripts\Activate.ps1 + pip install . + pip install .[doc] + # Copy-Item -Path "C:\actions-runner\opengl32.dll" -Destination ".venv\Lib\site-packages\vtkmodules" -Force - - name: Build image - uses: docker/build-push-action@v3 - with: - push: false - context: . - tags: ${{ steps.props.outputs.image }} - file: docker/Dockerfile.${{ matrix.image }} - secret-files: | - "netrc=./.netrc" - outputs: type=docker,dest=/tmp/rep-repo-template-${{ matrix.image }}-image.tar - cache-from: type=gha - cache-to: type=gha,mode=max - secrets: | - GIT_AUTH_TOKEN=${{ secrets.PYANSYS_CI_BOT_TOKEN }} - build-args: | - branch=${{github.ref_name}} - revision=${{steps.props.outputs.revision}} - short_revision=${{steps.props.outputs.short_revision}} - - - name: Load images + - name: Create HTML documentation run: | - docker load --input /tmp/rep-repo-template-${{ matrix.image }}-image.tar - - - name: Get binary - id: get-binary - run: | - docker image ls - docker run -d --name ${{ steps.props.outputs.container }} ${{ steps.props.outputs.image }} - docker cp ${{ steps.props.outputs.container }}:/app/rep-repo-template ./rep-repo-template-${{ matrix.image }} - chmod +x ./rep-repo-template-${{ matrix.image }} + .venv\Scripts\Activate.ps1 + cd doc + .\make.bat html - - name: Test binary - run: | - version=$(docker exec ${{ steps.props.outputs.container }} /app/rep-repo-template) - echo "$version" - echo "$version" >> $GITHUB_STEP_SUMMARY - - - name: Stop container - if: ${{ always() }} - run: | - docker container stop ${{steps.props.outputs.container}} - - # - name: Upload image - # uses: actions/upload-artifact@v3 - # with: - # name: rep-repo-template-${{ matrix.image }}-image - # path: /tmp/rep-repo-template-${{ matrix.image }}-image.tar - # retention-days: 1 - - - name: Upload artifact + - name: Upload HTML documentation artifact uses: actions/upload-artifact@v3 with: - name: rep-repo-template-${{matrix.image}} - path: rep-repo-template-${{matrix.image}} - - freeze-windows: - name: Freeze (windows) - runs-on: - group: "Default Larger Runners" - labels: windows-latest-8-cores - if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.freeze_windows == 'true' }} - needs: [wheels, style] - steps: - - uses: actions/checkout@v3 - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Set up python - uses: actions/setup-python@v4 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - cache: 'pip' - cache-dependency-path: | - requirements/requirements_*.txt - **/setup.py - - - uses: extractions/netrc@v1 - with: - machine: github.com - username: pyansys-ci-bot - password: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} + name: documentation-html + path: doc/_build/html + retention-days: 7 - - name: Prepare venv + - name: Create PDF documentation run: | - python -m venv dev_env - dev_env\Scripts\python build.py dev + .venv\Scripts\Activate.ps1 + cd doc + .\doc\make.bat pdf - - name: Freeze - run: | - dev_env\Scripts\python build.py dist - - # - name: Test binary - # run: | - # ./freeze/build/rep-repo-template.exe --version - # $version = (./freeze/build/rep-repo-template.exe --version) | Out-String - # echo "$version" - # echo "$version" >> $env:GITHUB_STEP_SUMMARY - - # - name: Setup tmate session - # if: ${{ failure() && github.event_name == 'workflow_dispatch' && inputs.ssh_enabled }} - # uses: mxschmitt/action-tmate@v3 - # with: - # ## limits ssh access and adds the ssh public key for the user which triggered the workflow - # limit-access-to-actor: true - # ## limits ssh access and adds the ssh public keys of the listed GitHub users - # # limit-access-to-users: [username] - - - name: Upload artifact + - name: Upload HTML documentation artifact uses: actions/upload-artifact@v3 with: - name: rep-repo-template-windows - path: freeze/build/rep-repo-template.exe - - release: - name: Create release - uses: ansys-internal/rep-job-management/.github/workflows/release.yml@main - needs: ['freeze','wheels','tests'] - secrets: inherit - with: - tag: v${{ needs.wheels.outputs.version }} - force_release: ${{ github.event.inputs.force_release == 'true' }} - artifact: .*rep-launcher-service.* - files: | - /tmp/bin/*/*.whl - /tmp/bin/*/rep-launcher-service-* + name: documentation-html-edb + path: doc/_build/html/EDBAPI + retention-days: 7 + +# - name: Upload PDF documentation artifact +# uses: actions/upload-artifact@v3 +# with: +# name: documentation-pdf +# path: doc/_build/pdf +# retention-days: 7 + +# - name: Release +# uses: softprops/action-gh-release@v1 +# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') +# with: +# generate_release_notes: true +# files: | +# doc/_build/pdf + + + + # release: + # if: github.event_name == 'push' && contains(github.ref, 'refs/tags') + # needs: [doc-style, code-style] + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + + # - uses: actions/download-artifact@v3 + + # - name: Display structure of downloaded files + # run: ls -R + + # - name: Zip HTML documentation + # uses: vimtor/action-zip@v1.1 + # with: + # files: documentation-html + # dest: documentation-html.zip + + # - name: Release + # uses: softprops/action-gh-release@v1 + # with: + # generate_release_notes: true + # files: | + # ./documentation-html.zip + # ./documentation-pdf/*.pdf \ No newline at end of file