name: CI on: push: # Don't run this workflow when a tag is pushed. branches: - '*' pull_request: env: MSVC_CONFIG: RelWithDebInfo jobs: windows: runs-on: windows-2025 strategy: matrix: platform: [Win32, x64] python-version: [3.7] steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Get Python architecture id: get-python-architecture shell: bash run: | if [[ "${{ matrix.platform }}" == "Win32" ]] then PLATFORM=x86 else PLATFORM=x64 fi echo "architecture=$PLATFORM" >> $GITHUB_OUTPUT - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} architecture: ${{ steps.get-python-architecture.outputs.architecture }} - name: Get descriptive version id: get-version shell: bash run: | GIT_DESCRIBE=$(git describe --tags --long --abbrev=7) DESC_REF=${GIT_DESCRIBE}_${GITHUB_REF#refs/*/} SAFE_DESC_REF=${DESC_REF//[\/<>\"|]/_} echo "version=$SAFE_DESC_REF" >> $GITHUB_OUTPUT - name: Run CMake run: | mkdir build cd build cmake .. -G "Visual Studio 17 2022" -A ${{ matrix.platform }} -DCPACK_PACKAGE_VERSION="${{ steps.get-version.outputs.version }}-python${{ matrix.python-version }}" cmake --build . --config ${{ env.MSVC_CONFIG }} - name: Run tests run: | cd build ctest -C ${{ env.MSVC_CONFIG }} - name: Build archive id: build-archive shell: bash run: | cd build cpack -C ${{ env.MSVC_CONFIG }} VERSION="${{ steps.get-version.outputs.version }}-python${{ matrix.python-version }}" if [[ "${{ matrix.platform }}" == "Win32" ]] then PLATFORM=win32 else PLATFORM=win64 fi echo "filename=libloot-python-${VERSION}-${PLATFORM}.zip" >> $GITHUB_OUTPUT - name: Upload archive uses: actions/upload-artifact@v4 with: name: ${{ steps.build-archive.outputs.filename }} path: build/package/${{ steps.build-archive.outputs.filename }} if: github.event_name == 'push'