From c7315cb0916f59f87bdfad8ff91f1f75f2ccbe34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ata=20Hak=C3=A7=C4=B1l?= Date: Mon, 17 May 2021 00:06:48 +0300 Subject: [PATCH 1/6] Update build_minor.yml --- .../actions_linux_python_libs.sh | 18 ++ .../actions_linux_setup_boost.sh | 8 + .../actions_linux_setup_libboost.sh | 4 + .../actions_windows_libboost.ps1 | 17 ++ .../actions_windows_libpython.ps1 | 14 + .github/workflows/action_helpers/build.py | 77 ++++++ .../workflows/{build_minor.yml => build.yml} | 190 +++++++------ .github/workflows/build_dev.yml | 251 ------------------ .github/workflows/build_patch.yml | 229 ---------------- 9 files changed, 245 insertions(+), 563 deletions(-) create mode 100644 .github/workflows/action_helpers/actions_linux_python_libs.sh create mode 100644 .github/workflows/action_helpers/actions_linux_setup_boost.sh create mode 100644 .github/workflows/action_helpers/actions_linux_setup_libboost.sh create mode 100644 .github/workflows/action_helpers/actions_windows_libboost.ps1 create mode 100644 .github/workflows/action_helpers/actions_windows_libpython.ps1 create mode 100644 .github/workflows/action_helpers/build.py rename .github/workflows/{build_minor.yml => build.yml} (52%) delete mode 100644 .github/workflows/build_dev.yml delete mode 100644 .github/workflows/build_patch.yml diff --git a/.github/workflows/action_helpers/actions_linux_python_libs.sh b/.github/workflows/action_helpers/actions_linux_python_libs.sh new file mode 100644 index 00000000..3b257f8e --- /dev/null +++ b/.github/workflows/action_helpers/actions_linux_python_libs.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# work inside include folder +cd /opt/hostedtoolcache/Python/$1*/x64/include; + +echo "Working with python$1" + +# Create symlink without "m" in name +[[ -f "python$1" ]] || sudo ln -s python$1m python$1; + +# copy libraries and includes to global paths +sudo cp -r /opt/hostedtoolcache/Python/$1*/x64/lib/* /usr/local/lib/; +sudo cp -r /opt/hostedtoolcache/Python/$1*/x64/include/py* /usr/include/; +sudo ln -s /usr/include/$1m /usr/include/$1; + +# Create symlink without "m" in name +[[ -f "/usr/local/lib/libpython$1.so.1.0" ]] || sudo ln -s /usr/local/lib/libpython$1m.so.1.0 /usr/local/lib/libpython$1.so.1.0; +[[ -f "/usr/local/lib/libpython$1.so" ]] || sudo ln -s /usr/local/lib/libpython$1m.so /usr/local/lib/libpython$1.so; diff --git a/.github/workflows/action_helpers/actions_linux_setup_boost.sh b/.github/workflows/action_helpers/actions_linux_setup_boost.sh new file mode 100644 index 00000000..deb89e2e --- /dev/null +++ b/.github/workflows/action_helpers/actions_linux_setup_boost.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +wget https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz -O /home/runner/boost_1_76_0.tar.gz -q; +cd /home/runner/; +tar -xf /home/runner/boost_1_76_0.tar.gz; +cd /home/runner/boost_1_76_0/; +./bootstrap.sh --with-python=$(which python$1) --with-python-version=$1; +sudo ./b2 --with-python --with-program_options stage; \ No newline at end of file diff --git a/.github/workflows/action_helpers/actions_linux_setup_libboost.sh b/.github/workflows/action_helpers/actions_linux_setup_libboost.sh new file mode 100644 index 00000000..ced57da4 --- /dev/null +++ b/.github/workflows/action_helpers/actions_linux_setup_libboost.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo cp -r /home/runner/boost_1_76_0/stage/lib/* /usr/local/lib; +sudo cp -r /home/runner/boost_1_76_0/boost /usr/include/boost; \ No newline at end of file diff --git a/.github/workflows/action_helpers/actions_windows_libboost.ps1 b/.github/workflows/action_helpers/actions_windows_libboost.ps1 new file mode 100644 index 00000000..ce08ce99 --- /dev/null +++ b/.github/workflows/action_helpers/actions_windows_libboost.ps1 @@ -0,0 +1,17 @@ + +param ( + [string]$pythonver = "3.8" +) + +$a = $pythonver.substring(0,1) +$b = $pythonver.substring(2,1) +echo "$a$b" + +echo $env:RUNNER_WORKSPACE +mkdir $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\lib +dir $env:GITHUB_ACTION_WIN_PROJECT\boost; +cp $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\x64\Release\lib\boost_program_options.dll $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\lib\boost_program_options-vc142-mt-x64-1_76.dll; +cp $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\x64\Release\lib\boost_program_options.lib $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\lib\boost_program_options-vc142-mt-x64-1_76.lib; + +cp $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\x64\Release\lib\boost_python$a$b.dll $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\lib\libboost_python$a$b-vc142-mt-x64-1_76.dll; +cp $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\x64\Release\lib\boost_python$a$b.lib $env:GITHUB_ACTION_WIN_PROJECT\boost\stage\lib\libboost_python$a$b-vc142-mt-x64-1_76.lib; diff --git a/.github/workflows/action_helpers/actions_windows_libpython.ps1 b/.github/workflows/action_helpers/actions_windows_libpython.ps1 new file mode 100644 index 00000000..a07ab6b1 --- /dev/null +++ b/.github/workflows/action_helpers/actions_windows_libpython.ps1 @@ -0,0 +1,14 @@ + +param ( + [string]$pythonver = "3.8" +) + +which python; +mkdir D:\a\python$pythonver; + +Copy-Item -Path $env:pythonLocation\libs -Destination "D:\a\python$pythonver" -Recurse; +Copy-Item -Path $env:pythonLocation\include -Destination "D:\a\python$pythonver" -Recurse; +dir D:\a\python$pythonver; +echo $env:pythonLocation; +dir $env:pythonLocation\include; +Remove-Item -Recurse -Force %GITHUB_ACTION_WIN_PROJECT%\boost\stage -ErrorAction Ignore; \ No newline at end of file diff --git a/.github/workflows/action_helpers/build.py b/.github/workflows/action_helpers/build.py new file mode 100644 index 00000000..771763f1 --- /dev/null +++ b/.github/workflows/action_helpers/build.py @@ -0,0 +1,77 @@ +#!/ur/bin/python3 + +# This is a build script for the github workflows. You can use it for building the project too. +import argparse +import os + +parser = argparse.ArgumentParser() +parser.add_argument("step", help="Step to build") +parser.add_argument("-p", "--pyversion", help="Python version to use") + +args = parser.parse_args() + +def decide_action_type(ref,trigger): + print(f"ref: {ref}, trigger: {trigger}") + if(ref == "refs/heads/main" and trigger == "push"): + return "minor" + + elif(ref == "refs/heads/dev" and trigger == "push"): + return "patch" + elif(ref == "refs/heads/dev" and trigger == "pull_request"): + return "dev" + + +def set_action_outputs(**kwargs): + for key in kwargs: + val = kwargs[key] + print(f"Setting output for:{key}.") + print(f"Value: {val}") + print(f"::set-output name={key}::{val}") + + +if __name__ == "__main__": + print(os.environ) + ref = os.environ["GITHUB_REF"] + trigger = os.environ["GITHUB_EVENT_NAME"] + a_type = decide_action_type(ref, trigger) + print(f"Workflow configuration set to {a_type}.") + + + if(args.step == "version_bump"): + if(a_type == "minor"): + set_action_outputs(bump="minor", branch="main", prerelease="false", draft="false") + + elif(a_type == "patch"): + set_action_outputs(bump="patch", branch="", prerelease="true", draft="false") + + elif(a_type == "dev"): + set_action_outputs(bump="patch", branch="", prerelease="false", draft="true") + else: + set_action_outputs(bump="patch", branch="", prerelease="false", draft="true") + + if(args.step == "version_matrix"): + + if(a_type == "minor"): + lm = "[3.6, 3.7, 3.8, 3.9]" + wm = "[3.8, 3.9]" + + elif(a_type == "patch"): + lm = "[3.8]" + wm = "[3.8]" + + else: + lm = "[3.8]" + wm = "[3.8]" + + set_action_outputs(linux_matrix=lm, windows_matrix=wm) + + if(args.step == "linux_python_libs"): + os.system(f".github/action_helpers/actions_linux_python_libs.sh {args.pyversion}") + + if(args.step == "linux_setup_boost"): + os.system(f".github/action_helpers/actions_linux_setup_boost.sh {args.pyversion}") + + if(args.step == "linux_setup_libboost"): + os.system(f".github/action_helpers/actions_linux_setup_libboost.sh {args.pyversion}") + + diff --git a/.github/workflows/build_minor.yml b/.github/workflows/build.yml similarity index 52% rename from .github/workflows/build_minor.yml rename to .github/workflows/build.yml index 5f3f9a1f..5e4eae91 100644 --- a/.github/workflows/build_minor.yml +++ b/.github/workflows/build.yml @@ -1,27 +1,67 @@ -name: Build minor version +name: Check, build and Release on: push: branches: - main - + - dev + pull_request: + branches: + - dev +env: + + # Environment variables for building strategy + + GITHUB_ACTION_WIN_PROJECT: D:\a\MarkovPasswords + + # Solution path + SOLUTION_FILE_PATH: ./ + + # Configuration type to build. Required for MSBuild + BUILD_CONFIGURATION: Release + + # Include directory for MSBuild, python dependencies + WIN_INC_DIR: C:\hostedtoolcache\windows\Python\*\ + jobs: + + # Increment version depending on the action + + decide_version: + name: Decide Next Version + runs-on: ubuntu-latest + outputs: + bump: ${{ steps.core.outputs.bump }} + branch: ${{ steps.core.outputs.branch }} + prerelease: ${{ steps.core.outputs.prerelease }} + draft: ${{ steps.core.outputs.draft }} + + steps: + - uses: actions/checkout@v2 + - name: Decide versioning strategy + id: core + run: python3 ./.github/action_helpers/build.py version_bump + reversion: - name: Bump version and create release + needs: decide_version + name: Bump Version & Create Release runs-on: ubuntu-latest outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} steps: + - uses: actions/checkout@v2 - - name: Bump version and push tag + # Only if its a push to master branch + - name: Bump Version id: tag_version uses: anothrNick/github-tag-action@1.26.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DEFAULT_BUMP: minor + DEFAULT_BUMP: ${{ needs.decide_version.outputs.bump }} VERBOSE: true - RELEASE_BRANCHES: main + RELEASE_BRANCHES: ${{ needs.decide_version.outputs.branch }} + # Create a new release if its a push to master - name: Create Release id: create_release uses: actions/create-release@v1 @@ -30,16 +70,30 @@ jobs: with: tag_name: ${{ steps.tag_version.outputs.new_tag }} release_name: Release v${{ steps.tag_version.outputs.new_tag }} - draft: false - prerelease: false - + draft: ${{ needs.decide_version.outputs.draft }} + prerelease: ${{ needs.decide_version.outputs.prerelease }} + + + # set the matrix output depending on the build type + setup_build_matrix: + name: Configure version matrix + runs-on: ubuntu-latest + outputs: + windows_matrix: ${{ steps.core.outputs.windows_matrix }} + linux_matrix: ${{ steps.core.outputs.linux_matrix }} + steps: + - uses: actions/checkout@v2 + - name: Configure Version Matrix for Python + id: core + run: python3 ./.github/action_helpers/build.py version_matrix + build_linux: name: Build All on Linux with Makefile - needs: reversion + needs: [reversion, setup_build_matrix] runs-on: ubuntu-latest strategy: matrix: - python-version: [3.6, 3.7, 3.8, 3.9] + python-version: ${{fromJson(needs.setup_build_matrix.outputs.linux_matrix) }} steps: # Check cache for boost libraries - name: Cache Boost @@ -62,56 +116,22 @@ jobs: # Link Python includes and libraries - name: Set up libraries for Python ${{ matrix.python-version }} - run: | - ls -al /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/bin/; - cd /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/include; - - [[ -f "python${{ matrix.python-version }}" ]] || sudo ln -s python${{ matrix.python-version }}m python${{ matrix.python-version }}; - - sudo cp -r /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/lib/* /usr/local/lib/; - sudo cp -r /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/include/py* /usr/include/; - sudo ln -s /usr/include/${{ matrix.python-version }}m /usr/include/${{ matrix.python-version }}; - - [[ -f "/usr/local/lib/libpython${{ matrix.python-version }}.so.1.0" ]] || sudo ln -s /usr/local/lib/libpython${{ matrix.python-version }}m.so.1.0 /usr/local/lib/libpython${{ matrix.python-version }}.so.1.0; - [[ -f "/usr/local/lib/libpython${{ matrix.python-version }}.so" ]] || sudo ln -s /usr/local/lib/libpython${{ matrix.python-version }}m.so /usr/local/lib/libpython${{ matrix.python-version }}.so; - - ls -al /opt/hostedtoolcache/Python/3.6.13/x64/include/ -R; + run: ./.github/action_helpers/actions_linux_python_libs.sh ${{ matrix.python-version }} + # Setup boost - name: Setup boost if: steps.cache-boost.outputs.cache-hit != 'true' - run: | - wget https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz -O /home/runner/boost_1_76_0.tar.gz -q; - cd /home/runner/; - tar -xf /home/runner/boost_1_76_0.tar.gz; - cd /home/runner/boost_1_76_0/; - ./bootstrap.sh --with-python=$(which python${{ matrix.python-version }}) --with-python-version=${{ matrix.python-version }}; - sudo ./b2 --with-python --with-program_options stage; + run: ./.github/action_helpers/actions_linux_setup_boost.sh ${{ matrix.python-version }} - name: Link boost libraries - run: | - sudo cp -r /home/runner/boost_1_76_0/stage/lib/* /usr/local/lib; - ls -al /usr/local/lib; - sudo cp -r /home/runner/boost_1_76_0/boost /usr/include/boost; - - - - name: Check dep - run: - pwd; - echo ${{ github.ref }}; - ls -al /usr/include/; - ls -al /usr/local/lib/; + run: ./.github/action_helpers/actions_linux_setup_libboost.sh ${{ matrix.python-version }} - name: Compile CPP run: make PYTHON_VERSION=${{ matrix.python-version }} all - name: Zip built files # This would actually build your project, using zip for an example artifact - run: - pwd; - echo ${{ github.ref }}; - ls -al; - ls -al bin/; - zip --junk-paths linux-python${{ matrix.python-version }}.so.zip Markopy/src/CLI/markopy_cli.py bin/markopy.so; + run: zip --junk-paths linux-python${{ matrix.python-version }}.so.zip Markopy/src/CLI/markopy_cli.py bin/markopy.so; - name: Upload Release Asset id: upload-release-asset @@ -124,19 +144,15 @@ jobs: asset_name: linux-python${{ matrix.python-version }}.so.zip asset_content_type: application/zip - MSBuild: - name: Build All on Windows with MSBuild - needs: reversion + MSBuild: + name: Build All on Windows with MSBuild + needs: [reversion, setup_build_matrix] runs-on: windows-latest strategy: fail-fast: false max-parallel: 3 - matrix: - include: - - python-version: 3.8 - python-file-version: 38 - - python-version: 3.9 - python-file-version: 39 + matrix: + python-version: ${{ fromJson(needs.setup_build_matrix.outputs.windows_matrix) }} steps: - uses: actions/checkout@v2 @@ -146,23 +162,14 @@ jobs: python-version: ${{ matrix.python-version }} - name: Link python libraries And clean boost ones - run: | - which python; - mkdir D:\a\python${{ matrix.python-version }}; - - Copy-Item -Path $env:pythonLocation\libs -Destination "D:\a\python${{ matrix.python-version }}" -Recurse; - Copy-Item -Path $env:pythonLocation\include -Destination "D:\a\python${{ matrix.python-version }}" -Recurse; - dir D:\a\python${{ matrix.python-version }}; - echo $env:pythonLocation; - dir $env:pythonLocation\include; - Remove-Item -Recurse -Force D:\a\MarkovPasswords\boost\stage -ErrorAction Ignore; + run: .\.github\action_helpers\actions_windows_libpython.ps1 -pythonver ${{ matrix.python-version }} - name: Cache Boost uses: actions/cache@v2 id: cache-boost with: - path: D:\a\MarkovPasswords\boost - key: 'win-boost-1.76-${{ matrix.python-version }}' + path: ${{env.GITHUB_ACTION_WIN_PROJECT}}\boost + key: 'windows-libboost-1.76-${{ matrix.python-version }}' - name: Build Boost id: boost @@ -176,17 +183,7 @@ jobs: - name: Rename boost static and dynamic libraries if: steps.cache-boost.outputs.cache-hit != 'true' - run: | - dir D:\a\MarkovPasswords\boost; - ls -r D:\a\MarkovPasswords\boost\stage; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_program_options.dll D:\a\MarkovPasswords\boost\stage\lib\boost_program_options-vc142-mt-x64-1_76.dll; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_program_options.lib D:\a\MarkovPasswords\boost\stage\lib\boost_program_options-vc142-mt-x64-1_76.lib; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_python${{ matrix.python-file-version }}.dll D:\a\MarkovPasswords\boost\stage\lib\libboost_python${{ matrix.python-file-version }}-vc142-mt-x64-1_76.dll; - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_python${{ matrix.python-file-version }}.lib D:\a\MarkovPasswords\boost\stage\lib\libboost_python${{ matrix.python-file-version }}-vc142-mt-x64-1_76.lib; - + run: .\.github\action_helpers\actions_windows_libboost.ps1 -pythonver ${{ matrix.python-version }} - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v1 @@ -200,7 +197,7 @@ jobs: run: | $env:PYTHON_PATH = "D:\a\python${{ matrix.python-version }}"; - $env:BOOST_ROOT = "D:\a\MarkovPasswords\boost"; + $env:BOOST_ROOT = "${{env.GITHUB_ACTION_WIN_PROJECT}}\boost"; msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} - name: Zip built files # This would actually build your project, using zip for an example artifact @@ -218,3 +215,30 @@ jobs: asset_path: ./windows-python${{ matrix.python-version }}.pyd.zip asset_name: windows-python${{ matrix.python-version }}.pyd.zip asset_content_type: application/zip + + #Integrity check on pull requests with sonar + sonar: + if: github.event_name == 'pull_request' + name: Code Integrity Check with Sonarqube + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + #ref: TODO: with dispatch input + - uses: docker://sonarsource/sonar-scanner-cli:latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} + + + clear_draft: + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + name: Clear Draft Releases + steps: + - name: Delete drafts + uses: hugo19941994/delete-draft-releases@v0.1.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/build_dev.yml b/.github/workflows/build_dev.yml deleted file mode 100644 index 2bf7e088..00000000 --- a/.github/workflows/build_dev.yml +++ /dev/null @@ -1,251 +0,0 @@ -name: Build development version with draft release - -env: - # Path to the solution file relative to the root of the project. - SOLUTION_FILE_PATH: ./ - - # Configuration type to build. - # You can convert this to a build matrix if you need coverage of multiple configuration types. - # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - BUILD_CONFIGURATION: Release - - WIN_INC_DIR: C:\hostedtoolcache\windows\Python\*\ - -on: - workflow_dispatch: - inputs: - ref: - description: 'The branch, tag or SHA to checkout' - required: true - pull_request: - branches: - - dev - -jobs: - reversion: - name: Bump version and create release - runs-on: ubuntu-latest - outputs: - upload_url: ${{ steps.create_release.outputs.upload_url }} - steps: - - uses: actions/checkout@v2 - - - name: Bump version and push tag - id: tag_version - uses: anothrNick/github-tag-action@1.26.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DEFAULT_BUMP: patch - VERBOSE: true - RELEASE_BRANCHES: - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.tag_version.outputs.new_tag }} - release_name: Release ${{ steps.tag_version.outputs.new_tag }} - draft: true - prerelease: true - - build_linux: - name: Build All on Linux with Makefile - needs: reversion - runs-on: ubuntu-latest - strategy: - matrix: - include: - - python-version: 3.8 - python-file-version: 38 - steps: - # Check cache for boost libraries - - name: Cache Boost - uses: actions/cache@v2 - id: cache-boost - with: - path: | - /home/runner/boost_1_76_0/stage - /home/runner/boost_1_76_0/boost - key: 'nix-boost-src-latest-py${{ matrix.python-version }}' - - # Checkout current commit - - uses: actions/checkout@v2 - - # Set up Python - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - # Link Python includes and libraries - - name: Set up libraries for Python ${{ matrix.python-version }} - run: | - ls -al /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/bin/; - cd /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/include; - - [[ -f "python${{ matrix.python-version }}" ]] || sudo ln -s python${{ matrix.python-version }}m python${{ matrix.python-version }}; - - sudo cp -r /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/lib/* /usr/local/lib/; - sudo cp -r /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/include/py* /usr/include/; - sudo ln -s /usr/include/${{ matrix.python-version }}m /usr/include/${{ matrix.python-version }}; - - [[ -f "/usr/local/lib/libpython${{ matrix.python-version }}.so.1.0" ]] || sudo ln -s /usr/local/lib/libpython${{ matrix.python-version }}m.so.1.0 /usr/local/lib/libpython${{ matrix.python-version }}.so.1.0; - [[ -f "/usr/local/lib/libpython${{ matrix.python-version }}.so" ]] || sudo ln -s /usr/local/lib/libpython${{ matrix.python-version }}m.so /usr/local/lib/libpython${{ matrix.python-version }}.so; - - ls -al /opt/hostedtoolcache/Python/3.6.13/x64/include/ -R; - # Setup boost - - name: Setup boost - if: steps.cache-boost.outputs.cache-hit != 'true' - run: | - wget https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz -O /home/runner/boost_1_76_0.tar.gz -q; - cd /home/runner/; - tar -xf /home/runner/boost_1_76_0.tar.gz; - cd /home/runner/boost_1_76_0/; - ./bootstrap.sh --with-python=$(which python${{ matrix.python-version }}) --with-python-version=${{ matrix.python-version }}; - sudo ./b2 --with-python --with-program_options stage; - - - - name: Link boost libraries - run: | - sudo cp -r /home/runner/boost_1_76_0/stage/lib/* /usr/local/lib; - ls -al /usr/local/lib; - sudo cp -r /home/runner/boost_1_76_0/boost /usr/include/boost; - - - - name: Check dep - run: - pwd; - echo ${{ github.ref }}; - ls -al /usr/include/; - ls -al /usr/local/lib/; - - - name: Compile CPP - run: make PYTHON_VERSION=${{ matrix.python-version }} all - - - name: Zip built files # This would actually build your project, using zip for an example artifact - run: - pwd; - echo ${{ github.ref }}; - ls -al; - ls -al bin/; - zip --junk-paths linux-python${{ matrix.python-version }}.so.zip Markopy/src/CLI/markopy_cli.py bin/markopy.so; - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.reversion.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./linux-python${{ matrix.python-version }}.so.zip - asset_name: linux-python${{ matrix.python-version }}.so.zip - asset_content_type: application/zip - - MSBuild: - name: Build All on Windows with MSBuild - needs: reversion - runs-on: windows-latest - strategy: - fail-fast: false - max-parallel: 3 - matrix: - include: - - python-version: 3.8 - python-file-version: 38 - steps: - - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - - name: Link python libraries And clean boost ones - run: | - which python; - mkdir D:\a\python${{ matrix.python-version }}; - - Copy-Item -Path $env:pythonLocation\libs -Destination "D:\a\python${{ matrix.python-version }}" -Recurse; - Copy-Item -Path $env:pythonLocation\include -Destination "D:\a\python${{ matrix.python-version }}" -Recurse; - dir D:\a\python${{ matrix.python-version }}; - echo $env:pythonLocation; - dir $env:pythonLocation\include; - Remove-Item -Recurse -Force D:\a\MarkovPasswords\boost\stage -ErrorAction Ignore; - - - name: Cache Boost - uses: actions/cache@v2 - id: cache-boost - with: - path: D:\a\MarkovPasswords\boost - key: 'win-boost-1.76-${{ matrix.python-version }}' - - - name: Build Boost - id: boost - if: steps.cache-boost.outputs.cache-hit != 'true' - uses: egor-tensin/build-boost@v1 - with: - version: 1.76.0 - libraries: program_options python - platform: x64 - configuration: Release - - - name: Rename boost static and dynamic libraries - if: steps.cache-boost.outputs.cache-hit != 'true' - run: | - dir D:\a\MarkovPasswords\boost; - ls -r D:\a\MarkovPasswords\boost\stage; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_program_options.dll D:\a\MarkovPasswords\boost\stage\lib\boost_program_options-vc142-mt-x64-1_76.dll; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_program_options.lib D:\a\MarkovPasswords\boost\stage\lib\boost_program_options-vc142-mt-x64-1_76.lib; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_python${{ matrix.python-file-version }}.dll D:\a\MarkovPasswords\boost\stage\lib\libboost_python${{ matrix.python-file-version }}-vc142-mt-x64-1_76.dll; - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_python${{ matrix.python-file-version }}.lib D:\a\MarkovPasswords\boost\stage\lib\libboost_python${{ matrix.python-file-version }}-vc142-mt-x64-1_76.lib; - - - - name: Add MSBuild to PATH - uses: microsoft/setup-msbuild@v1 - - - name: Restore NuGet packages - working-directory: ${{env.GITHUB_WORKSPACE}} - run: nuget restore ${{env.SOLUTION_FILE_PATH}} - - - name: Build - working-directory: ${{env.GITHUB_WORKSPACE}} - - run: | - $env:PYTHON_PATH = "D:\a\python${{ matrix.python-version }}"; - $env:BOOST_ROOT = "D:\a\MarkovPasswords\boost"; - msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} - - - name: Zip built files # This would actually build your project, using zip for an example artifact - run: - powershell "Compress-Archive Markopy/src/CLI/markopy_cli.py,x64/Release/markopy.pyd windows-python${{ matrix.python-version }}.pyd.zip" - - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.reversion.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./windows-python${{ matrix.python-version }}.pyd.zip - asset_name: windows-python${{ matrix.python-version }}.pyd.zip - asset_content_type: application/zip - - sonar: - name: Code Integrity Check with Sonarqube - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - #ref: TODO: with dispatch input - - uses: docker://sonarsource/sonar-scanner-cli:latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} \ No newline at end of file diff --git a/.github/workflows/build_patch.yml b/.github/workflows/build_patch.yml deleted file mode 100644 index 2a5212a9..00000000 --- a/.github/workflows/build_patch.yml +++ /dev/null @@ -1,229 +0,0 @@ -name: Build patch version -env: - # Path to the solution file relative to the root of the project. - SOLUTION_FILE_PATH: ./ - - # Configuration type to build. - # You can convert this to a build matrix if you need coverage of multiple configuration types. - # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - BUILD_CONFIGURATION: Release - - WIN_INC_DIR: C:\hostedtoolcache\windows\Python\*\ - -on: - push: - branches: - - dev - -jobs: - reversion: - name: Bump version and create release - runs-on: ubuntu-latest - outputs: - upload_url: ${{ steps.create_release.outputs.upload_url }} - steps: - - uses: actions/checkout@v2 - - - name: Bump version and push tag - id: tag_version - uses: anothrNick/github-tag-action@1.26.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DEFAULT_BUMP: patch - VERBOSE: true - RELEASE_BRANCHES: dev - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.tag_version.outputs.new_tag }} - release_name: Release ${{ steps.tag_version.outputs.new_tag }} - draft: false - prerelease: true - - build_linux: - name: Build All on Linux with Makefile - needs: reversion - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.8] - steps: - # Check cache for boost libraries - - name: Cache Boost - uses: actions/cache@v2 - id: cache-boost - with: - path: | - /home/runner/boost_1_76_0/stage - /home/runner/boost_1_76_0/boost - key: 'nix-boost-src-latest-py${{ matrix.python-version }}' - - # Checkout current commit - - uses: actions/checkout@v2 - - # Set up Python - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - # Link Python includes and libraries - - name: Set up libraries for Python ${{ matrix.python-version }} - run: | - ls -al /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/bin/; - cd /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/include; - - [[ -f "python${{ matrix.python-version }}" ]] || sudo ln -s python${{ matrix.python-version }}m python${{ matrix.python-version }}; - - sudo cp -r /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/lib/* /usr/local/lib/; - sudo cp -r /opt/hostedtoolcache/Python/${{ matrix.python-version }}*/x64/include/py* /usr/include/; - sudo ln -s /usr/include/${{ matrix.python-version }}m /usr/include/${{ matrix.python-version }}; - - [[ -f "/usr/local/lib/libpython${{ matrix.python-version }}.so.1.0" ]] || sudo ln -s /usr/local/lib/libpython${{ matrix.python-version }}m.so.1.0 /usr/local/lib/libpython${{ matrix.python-version }}.so.1.0; - [[ -f "/usr/local/lib/libpython${{ matrix.python-version }}.so" ]] || sudo ln -s /usr/local/lib/libpython${{ matrix.python-version }}m.so /usr/local/lib/libpython${{ matrix.python-version }}.so; - - ls -al /opt/hostedtoolcache/Python/3.6.13/x64/include/ -R; - # Setup boost - - name: Setup boost - if: steps.cache-boost.outputs.cache-hit != 'true' - run: | - wget https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz -O /home/runner/boost_1_76_0.tar.gz -q; - cd /home/runner/; - tar -xf /home/runner/boost_1_76_0.tar.gz; - cd /home/runner/boost_1_76_0/; - ./bootstrap.sh --with-python=$(which python${{ matrix.python-version }}) --with-python-version=${{ matrix.python-version }}; - sudo ./b2 --with-python --with-program_options stage; - - - - name: Link boost libraries - run: | - sudo cp -r /home/runner/boost_1_76_0/stage/lib/* /usr/local/lib; - ls -al /usr/local/lib; - sudo cp -r /home/runner/boost_1_76_0/boost /usr/include/boost; - - - - name: Check dep - run: - pwd; - echo ${{ github.ref }}; - ls -al /usr/include/; - ls -al /usr/local/lib/; - - - name: Compile CPP - run: make PYTHON_VERSION=${{ matrix.python-version }} all - - - name: Zip built files # This would actually build your project, using zip for an example artifact - run: - pwd; - echo ${{ github.ref }}; - ls -al; - ls -al bin/; - zip --junk-paths linux-python${{ matrix.python-version }}.so.zip Markopy/src/CLI/markopy_cli.py bin/markopy.so; - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.reversion.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./linux-python${{ matrix.python-version }}.so.zip - asset_name: linux-python${{ matrix.python-version }}.so.zip - asset_content_type: application/zip - - MSBuild: - name: Build All on Windows with MSBuild - needs: reversion - runs-on: windows-latest - strategy: - fail-fast: false - max-parallel: 3 - matrix: - include: - - python-version: 3.8 - python-file-version: 38 - steps: - - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - - name: Link python libraries And clean boost ones - run: | - which python; - mkdir D:\a\python${{ matrix.python-version }}; - - Copy-Item -Path $env:pythonLocation\libs -Destination "D:\a\python${{ matrix.python-version }}" -Recurse; - Copy-Item -Path $env:pythonLocation\include -Destination "D:\a\python${{ matrix.python-version }}" -Recurse; - dir D:\a\python${{ matrix.python-version }}; - echo $env:pythonLocation; - dir $env:pythonLocation\include; - Remove-Item -Recurse -Force D:\a\MarkovPasswords\boost\stage -ErrorAction Ignore; - - - name: Cache Boost - uses: actions/cache@v2 - id: cache-boost - with: - path: D:\a\MarkovPasswords\boost - key: 'win-boost-1.76-${{ matrix.python-version }}' - - - name: Build Boost - id: boost - if: steps.cache-boost.outputs.cache-hit != 'true' - uses: egor-tensin/build-boost@v1 - with: - version: 1.76.0 - libraries: program_options python - platform: x64 - configuration: Release - - - name: Rename boost static and dynamic libraries - if: steps.cache-boost.outputs.cache-hit != 'true' - run: | - dir D:\a\MarkovPasswords\boost; - ls -r D:\a\MarkovPasswords\boost\stage; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_program_options.dll D:\a\MarkovPasswords\boost\stage\lib\boost_program_options-vc142-mt-x64-1_76.dll; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_program_options.lib D:\a\MarkovPasswords\boost\stage\lib\boost_program_options-vc142-mt-x64-1_76.lib; - - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_python${{ matrix.python-file-version }}.dll D:\a\MarkovPasswords\boost\stage\lib\libboost_python${{ matrix.python-file-version }}-vc142-mt-x64-1_76.dll; - cp D:\a\MarkovPasswords\boost\stage\x64\Release\lib\boost_python${{ matrix.python-file-version }}.lib D:\a\MarkovPasswords\boost\stage\lib\libboost_python${{ matrix.python-file-version }}-vc142-mt-x64-1_76.lib; - - - - name: Add MSBuild to PATH - uses: microsoft/setup-msbuild@v1 - - - name: Restore NuGet packages - working-directory: ${{env.GITHUB_WORKSPACE}} - run: nuget restore ${{env.SOLUTION_FILE_PATH}} - - - name: Build - working-directory: ${{env.GITHUB_WORKSPACE}} - - run: | - $env:PYTHON_PATH = "D:\a\python${{ matrix.python-version }}"; - $env:BOOST_ROOT = "D:\a\MarkovPasswords\boost"; - msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} - - - name: Zip built files # This would actually build your project, using zip for an example artifact - run: - powershell "Compress-Archive Markopy/src/CLI/markopy_cli.py,x64/Release/markopy.pyd windows-python${{ matrix.python-version }}.pyd.zip" - - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.reversion.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: ./windows-python${{ matrix.python-version }}.pyd.zip - asset_name: windows-python${{ matrix.python-version }}.pyd.zip - asset_content_type: application/zip \ No newline at end of file From 85d9f87ad893164e893dd5c2e3a48d89bf1711c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ata=20Hak=C3=A7=C4=B1l?= Date: Mon, 17 May 2021 00:13:31 +0300 Subject: [PATCH 2/6] Fix wrong directory location --- .../{workflows => }/action_helpers/actions_linux_python_libs.sh | 0 .../{workflows => }/action_helpers/actions_linux_setup_boost.sh | 0 .../action_helpers/actions_linux_setup_libboost.sh | 0 .../{workflows => }/action_helpers/actions_windows_libboost.ps1 | 0 .../{workflows => }/action_helpers/actions_windows_libpython.ps1 | 0 .github/{workflows => }/action_helpers/build.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename .github/{workflows => }/action_helpers/actions_linux_python_libs.sh (100%) rename .github/{workflows => }/action_helpers/actions_linux_setup_boost.sh (100%) rename .github/{workflows => }/action_helpers/actions_linux_setup_libboost.sh (100%) rename .github/{workflows => }/action_helpers/actions_windows_libboost.ps1 (100%) rename .github/{workflows => }/action_helpers/actions_windows_libpython.ps1 (100%) rename .github/{workflows => }/action_helpers/build.py (100%) diff --git a/.github/workflows/action_helpers/actions_linux_python_libs.sh b/.github/action_helpers/actions_linux_python_libs.sh similarity index 100% rename from .github/workflows/action_helpers/actions_linux_python_libs.sh rename to .github/action_helpers/actions_linux_python_libs.sh diff --git a/.github/workflows/action_helpers/actions_linux_setup_boost.sh b/.github/action_helpers/actions_linux_setup_boost.sh similarity index 100% rename from .github/workflows/action_helpers/actions_linux_setup_boost.sh rename to .github/action_helpers/actions_linux_setup_boost.sh diff --git a/.github/workflows/action_helpers/actions_linux_setup_libboost.sh b/.github/action_helpers/actions_linux_setup_libboost.sh similarity index 100% rename from .github/workflows/action_helpers/actions_linux_setup_libboost.sh rename to .github/action_helpers/actions_linux_setup_libboost.sh diff --git a/.github/workflows/action_helpers/actions_windows_libboost.ps1 b/.github/action_helpers/actions_windows_libboost.ps1 similarity index 100% rename from .github/workflows/action_helpers/actions_windows_libboost.ps1 rename to .github/action_helpers/actions_windows_libboost.ps1 diff --git a/.github/workflows/action_helpers/actions_windows_libpython.ps1 b/.github/action_helpers/actions_windows_libpython.ps1 similarity index 100% rename from .github/workflows/action_helpers/actions_windows_libpython.ps1 rename to .github/action_helpers/actions_windows_libpython.ps1 diff --git a/.github/workflows/action_helpers/build.py b/.github/action_helpers/build.py similarity index 100% rename from .github/workflows/action_helpers/build.py rename to .github/action_helpers/build.py From 8e39489dae2df04b5146817ae0a181ef330a0f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ata=20Hak=C3=A7=C4=B1l?= Date: Mon, 17 May 2021 00:17:04 +0300 Subject: [PATCH 3/6] Fix broken script permissions for build action helpers --- .github/workflows/build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5e4eae91..0ee2d19b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,7 +39,9 @@ jobs: - uses: actions/checkout@v2 - name: Decide versioning strategy id: core - run: python3 ./.github/action_helpers/build.py version_bump + run: | + chmod 755 ./.github/action_helpers/*; + python3 ./.github/action_helpers/build.py version_bump reversion: needs: decide_version From 0cc7f976cee481809c5e9666fd07ef2321191996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ata=20Hak=C3=A7=C4=B1l?= Date: Mon, 17 May 2021 00:20:20 +0300 Subject: [PATCH 4/6] Fix broken script permissions for build action helpers --- .github/workflows/build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0ee2d19b..d7126b5f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -118,7 +118,9 @@ jobs: # Link Python includes and libraries - name: Set up libraries for Python ${{ matrix.python-version }} - run: ./.github/action_helpers/actions_linux_python_libs.sh ${{ matrix.python-version }} + run: | + chmod 755 ./.github/action_helpers/*; + ./.github/action_helpers/actions_linux_python_libs.sh ${{ matrix.python-version }} # Setup boost - name: Setup boost From ce427aa521e6ba4f616088205aa7b8d87c9a6c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ata=20Hak=C3=A7=C4=B1l?= Date: Mon, 17 May 2021 00:26:47 +0300 Subject: [PATCH 5/6] Add missing libraries to the release archives --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7126b5f..6229ea32 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -135,7 +135,7 @@ jobs: run: make PYTHON_VERSION=${{ matrix.python-version }} all - name: Zip built files # This would actually build your project, using zip for an example artifact - run: zip --junk-paths linux-python${{ matrix.python-version }}.so.zip Markopy/src/CLI/markopy_cli.py bin/markopy.so; + run: zip --junk-paths linux-python${{ matrix.python-version }}.so.zip Markopy/src/CLI/markopy_cli.py bin/markopy.so /usr/local/lib/libboost_python38.so.1.76.0 /usr/local/lib/libboost_python38.so; - name: Upload Release Asset id: upload-release-asset @@ -206,7 +206,7 @@ jobs: - name: Zip built files # This would actually build your project, using zip for an example artifact run: - powershell "Compress-Archive Markopy/src/CLI/markopy_cli.py,x64/Release/markopy.pyd windows-python${{ matrix.python-version }}.pyd.zip" + powershell "Compress-Archive Markopy/src/CLI/markopy_cli.py,x64/Release/markopy.pyd,${{env.GITHUB_ACTION_WIN_PROJECT}}\boost\stage\lib\libboost_python$a$b-vc142-mt-x64-1_76.lib,${{env.GITHUB_ACTION_WIN_PROJECT}}\boost\stage\lib\libboost_python$a$b-vc142-mt-x64-1_76.dll windows-python${{ matrix.python-version }}.pyd.zip" - name: Upload Release Asset From a16e920e390b67eb63d4e39ee9442c36c87099c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ata=20Hak=C3=A7=C4=B1l?= Date: Mon, 17 May 2021 00:59:26 +0300 Subject: [PATCH 6/6] Modify filenames for zipped up windows release files --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6229ea32..f5f51efb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -206,7 +206,7 @@ jobs: - name: Zip built files # This would actually build your project, using zip for an example artifact run: - powershell "Compress-Archive Markopy/src/CLI/markopy_cli.py,x64/Release/markopy.pyd,${{env.GITHUB_ACTION_WIN_PROJECT}}\boost\stage\lib\libboost_python$a$b-vc142-mt-x64-1_76.lib,${{env.GITHUB_ACTION_WIN_PROJECT}}\boost\stage\lib\libboost_python$a$b-vc142-mt-x64-1_76.dll windows-python${{ matrix.python-version }}.pyd.zip" + powershell "Compress-Archive Markopy/src/CLI/markopy_cli.py,x64/Release/markopy.pyd,${{env.GITHUB_ACTION_WIN_PROJECT}}\boost\stage\lib\libboost_python* windows-python${{ matrix.python-version }}.pyd.zip" - name: Upload Release Asset