Merge branch 'develop' #788
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
on: | |
push: | |
branches: | |
- master | |
- develop | |
tags: | |
- "*" | |
pull_request: | |
jobs: | |
tests: | |
name: ${{ matrix.os }} ${{ matrix.compiler }}${{ matrix.clang-version }} ${{ matrix.cppstd }} Python ${{ matrix.python-version }} Epic ${{ matrix.castxml-epic }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# UBUNTU 22.04 - CASTXML EPIC 0 | |
- os: ubuntu-22.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 13 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++98" | |
- os: ubuntu-22.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 14 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++98" | |
- os: ubuntu-22.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 15 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++98" | |
- os: ubuntu-22.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 15 | |
python-version: "3.13" | |
castxml-epic: 1 | |
cppstd: "-std=c++98" | |
# UBUNTU 24.04 - CASTXML EPIC 0 | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.9" | |
castxml-epic: 0 | |
cppstd: "-std=c++98" | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.10" | |
castxml-epic: 0 | |
cppstd: "-std=c++98" | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.11" | |
castxml-epic: 0 | |
cppstd: "-std=c++98" | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.12" | |
castxml-epic: 0 | |
cppstd: "-std=c++98" | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++98" | |
# UBUNTU 24.04 - CASTXML EPIC 0 - c++XX | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++11" | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++14" | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++17" | |
# UBUNTU 24.04 - CASTXML EPIC 1 | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.13" | |
castxml-epic: 1 | |
cppstd: "-std=c++98" | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.13" | |
castxml-epic: 1 | |
cppstd: "-std=c++11" | |
# UBUNTU ARM | |
- os: ubuntu-22.04-arm | |
arch: aarch64 | |
compiler: clang++ | |
clang-version: 15 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++17" | |
- os: ubuntu-24.04-arm | |
arch: aarch64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.13" | |
castxml-epic: 0 | |
cppstd: "-std=c++17" | |
# UBUNTU 24.04 - CASTXML EPIC 1 | |
- os: ubuntu-24.04-arm | |
arch: aarch64 | |
compiler: clang++ | |
clang-version: 16 | |
python-version: "3.13" | |
castxml-epic: 1 | |
cppstd: "-std=c++11" | |
# MACOS | |
- os: macos-13 | |
compiler: clang++ | |
python-version: "3.13" | |
castxml-epic: 0 | |
- os: macos-15 | |
compiler: clang++ | |
python-version: "3.13" | |
castxml-epic: 0 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Display Python version | |
run: python -c "import sys; print(sys.version)" | |
- name: Install Python lib and test libs | |
run: | | |
pip install '.[test]' | |
- name: Run pycodestyle | |
run: pycodestyle . --exclude=docs | |
- name: Write xml_generator.cfg | |
if: contains(matrix.os, 'ubuntu') | |
run: | | |
echo "[xml_generator]" > tests/xml_generator.cfg | |
echo "compiler_path=/usr/bin/${{ matrix.compiler }}-${{ matrix.clang-version }}" >> tests/xml_generator.cfg | |
echo "ccflags=${{ matrix.cppstd }}" >> tests/xml_generator.cfg | |
# ─── Setup CastXML for Linux x86_64 ────────────────────────────── | |
- name: Setup CastXML for Linux x86_64 (Ubuntu 24.04) | |
if: matrix.os == 'ubuntu-24.04' && matrix.arch == 'x86_64' | |
run: | | |
wget -q -O ~/castxml-ubuntu-24.04-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-24.04-x86_64.tar.gz | |
tar -xzf ~/castxml-ubuntu-24.04-x86_64.tar.gz -C ~/ | |
chmod +x ~/castxml/bin/castxml | |
- name: Setup CastXML for Linux x86_64 (Ubuntu 22.04) | |
if: matrix.os == 'ubuntu-22.04' && matrix.arch == 'x86_64' | |
run: | | |
wget -q -O ~/castxml-ubuntu-22.04-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-22.04-x86_64.tar.gz | |
tar -xzf ~/castxml-ubuntu-22.04-x86_64.tar.gz -C ~/ | |
chmod +x ~/castxml/bin/castxml | |
# ─── Setup CastXML for Linux aarch64 ────────────────────────────── | |
- name: Setup CastXML for Linux aarch64 (Ubuntu 24.04) | |
if: matrix.os == 'ubuntu-24.04-arm' && matrix.arch == 'aarch64' | |
run: | | |
wget -q -O ~/castxml-ubuntu-24.04-arm-aarch64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-24.04-arm-aarch64.tar.gz | |
tar -xzf ~/castxml-ubuntu-24.04-arm-aarch64.tar.gz -C ~/ | |
chmod +x ~/castxml/bin/castxml | |
- name: Setup CastXML for Linux aarch64 (Ubuntu 22.04) | |
if: matrix.os == 'ubuntu-22.04-arm' && matrix.arch == 'aarch64' | |
run: | | |
wget -q -O ~/castxml-ubuntu-22.04-arm-aarch64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-22.04-arm-aarch64.tar.gz | |
tar -xzf ~/castxml-ubuntu-22.04-arm-aarch64.tar.gz -C ~/ | |
chmod +x ~/castxml/bin/castxml | |
# ─── Setup CastXML for MacOS ────────────────────────────── | |
- name: Setup CastXML for macOS (arm64) | |
if: matrix.os == 'macos-15' | |
run: | | |
wget -q -O ~/castxml-macos-15-arm64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-macos-15-arm64.tar.gz | |
tar -xzf ~/castxml-macos-15-arm64.tar.gz -C ~/ | |
chmod +x ~/castxml/bin/castxml | |
- name: Setup CastXML for macOS (x86_64) | |
if: matrix.os == 'macos-13' | |
run: | | |
wget -q -O ~/castxml-macos-13-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-macos-13-x86_64.tar.gz | |
tar -xzf ~/castxml-macos-13-x86_64.tar.gz -C ~/ | |
chmod +x ~/castxml/bin/castxml | |
- name: Run tests | |
run: | | |
export PATH=~/castxml/bin:$PATH | |
pytest tests | |
build: | |
name: Build distribution 📦 | |
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes | |
needs: tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- name: Install pypa/build | |
run: >- | |
python3 -m | |
pip install | |
build | |
--user | |
- name: Build a binary wheel and a source tarball | |
run: python3 -m build | |
- name: Store the distribution packages | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
publish-to-pypi: | |
name: >- | |
Publish Python 🐍 distribution 📦 to PyPI | |
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/<package-name> # Replace <package-name> with your PyPI project name | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- name: Download all the dists | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
- name: Publish distribution 📦 to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
github-release: | |
name: >- | |
Sign the Python 🐍 distribution 📦 with Sigstore | |
and upload them to GitHub Release | |
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes | |
needs: | |
- publish-to-pypi | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write # IMPORTANT: mandatory for making GitHub Releases | |
id-token: write # IMPORTANT: mandatory for sigstore | |
steps: | |
- name: Download all the dists | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
- name: Sign the dists with Sigstore | |
uses: sigstore/[email protected] | |
with: | |
inputs: >- | |
./dist/*.tar.gz | |
./dist/*.whl | |
- name: Create GitHub Release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: >- | |
gh release create | |
"$GITHUB_REF_NAME" | |
--repo "$GITHUB_REPOSITORY" | |
--notes "" | |
- name: Upload artifact signatures to GitHub Release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
# Upload to GitHub Release using the `gh` CLI. | |
# `dist/` contains the built packages, and the | |
# sigstore-produced signatures and certificates. | |
run: >- | |
gh release upload | |
"$GITHUB_REF_NAME" dist/** | |
--repo "$GITHUB_REPOSITORY" |