| name: Create release |
| |
| on: |
| push: |
| tags: |
| - '*' |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| build: |
| name: Build libraries |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - os: ubuntu-latest |
| optional_args: -pt |
| - os: windows-latest |
| optional_args: -pt --cmake_gen ninja |
| - os: macos-latest |
| steps: |
| - name: Checkout sources |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
| - name: Config environment |
| if: runner.os == 'Linux' |
| run: sudo apt-get update && sudo apt-get install gcc-multilib |
| - name: Setup Fortran compiler |
| uses: fortran-lang/setup-fortran@8821f57b53846d35d62632eb51c60ac6c4bff4ce # v1.6.1 |
| with: |
| compiler: intel |
| - name: Build C library |
| run: python buildall.py -ft ${{ matrix.optional_args }} |
| - name: Display structure of files |
| run: ls -R |
| - name: Upload artifact |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 |
| with: |
| name: build-artifacts-${{ matrix.os }} |
| path: | |
| build*/**/bin |
| build*/**/fortran |
| |
| # build wheels only for cpython versions 3.8-3.12 on linux and windows 64-bits |
| python_build: |
| name: Build ittapi wheels |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - os: ubuntu-latest |
| cibw_skip_args: "*_i686 *-musllinux_* cp313-*" |
| - os: windows-latest |
| cibw_skip_args: "*-win32 *_i686 cp313-*" |
| steps: |
| - name: Checkout sources |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
| - name: Install cibuildwheels |
| run: python -m pip install cibuildwheel==2.20.0 |
| - name: Build ittapi python wheels |
| run: python -m cibuildwheel python --output-dir python_dist |
| env: |
| CIBW_BUILD: cp3* |
| CIBW_SKIP: ${{ matrix.cibw_skip_args }} |
| - name: Upload artifact |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 |
| with: |
| name: build-artifacts-python-${{ matrix.os }} |
| path: python_dist*/** |
| |
| create_release: |
| permissions: |
| contents: write # for actions/create-release to create a release |
| id-token: write # for actions/attest-build-provenance to attest provenance |
| attestations: write # for actions/attest-build-provenance to attest provenance |
| name: Create release |
| runs-on: ubuntu-latest |
| needs: [build, python_build] |
| steps: |
| - name: Checkout sources |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
| - name: Create release |
| id: create_release |
| uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| tag_name: ${{ github.ref }} |
| release_name: release ${{ github.ref_name }} |
| draft: false |
| prerelease: false |
| - name: Download artifacts |
| uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 |
| with: |
| path: build-artifacts |
| pattern: build-artifacts-* |
| merge-multiple: true |
| - name: Display structure of downloaded files |
| run: ls -R |
| - name: Zip files |
| run: | |
| zip -r ittapi_build_${{ github.ref_name }}.zip include && |
| cd build-artifacts && |
| zip -rg ../ittapi_build_${{ github.ref_name }}.zip build*/**/bin build*/**/fortran python_dist && |
| cd - |
| - name: Generate release provenance |
| uses: actions/attest-build-provenance@00014ed6ed5efc5b1ab7f7f34a39eb55d41aa4f8 # v3.1.0 |
| with: |
| subject-path: ./ittapi_build_${{ github.ref_name }}.zip |
| - name: Upload release asset |
| id: upload-release-asset |
| uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release.outputs.upload_url }} |
| asset_path: ./ittapi_build_${{ github.ref_name }}.zip |
| asset_name: ittapi_build_${{ github.ref_name }}.zip |
| asset_content_type: application/zip |
| |
| # upload the built wheels to PyPi |
| upload_to_pypi: |
| name: Upload the wheel files to PyPi |
| runs-on: ubuntu-latest |
| needs: [python_build, create_release] |
| steps: |
| - name: Download artifacts |
| uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 |
| with: |
| pattern: build-artifacts-* |
| merge-multiple: true |
| - name: List wheel files |
| run: find -name *.whl |
| - name: Publish package distributions to PyPi |
| uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4 |
| with: |
| password: ${{ secrets.PYPI }} |
| repository-url: https://upload.pypi.org/legacy/ |
| packages-dir: python_dist |
| skip-existing: true |