diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7c2706cba..9bf12a63b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,139 +1,132 @@ -on: - push: {} - pull_request: - types: [closed] - release: - types: [published] - -jobs: - run-tests: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] - steps: - - uses: actions/checkout@v3 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - - name: Upgrade pip, setuptools, and wheel - run: | - pip install --upgrade pip setuptools wheel - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install libhdf5-serial-dev zlib1g-dev libatlas-base-dev lcov swig3.0 libpcsclite-dev - mkdir -p ~/bin/ && ln -s /usr/bin/swig3.0 ~/bin/swig && export PATH=~/bin/:$PATH - pip install wheel # Ensure wheel is installed - pip install -e .[ci,test,yubikey] - - - name: Setup GitHub user - run: | - git config --global user.name oll-bot - git config --global user.email developers@openlawlib.org - - - name: Run pre-commit and test with pytest - run: | - pre-commit run --all-files - pytest taf/tests - - build-and-test-executables: - needs: run-tests - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macos-latest] - runs-on: ${{ matrix.os }} - if: ${{ needs.run-tests.result == 'success' }} - steps: - - name: Checkout Repository - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.10' - - - name: Upgrade pip windows - if: matrix.os == 'windows-latest' - run: | - python -m pip install --upgrade pip setuptools wheel - - - name: Upgrade pip - if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' - run: | - pip install --upgrade pip setuptools wheel - - - name: Install Linux dependencies - if: matrix.os == 'ubuntu-latest' - run: | - sudo apt-get update - sudo apt-get install -y \ - libhdf5-serial-dev \ - zlib1g-dev \ - libatlas-base-dev \ - lcov \ - swig3.0 \ - libpcsclite-dev \ - libssl-dev \ - libgit2-dev \ - ca-certificates - mkdir -p ~/bin/ && ln -s /usr/bin/swig3.0 ~/bin/swig && export PATH=~/bin/:$PATH - - - name: Install Windows dependencies - if: matrix.os == 'windows-latest' - run: | - choco install swig - - - name: Install macOS dependencies - if: matrix.os == 'macos-latest' - run: | - brew install swig - - - name: Install dependencies - run: | - pip install .[yubikey] - pip install pyinstaller - - - name: Build and test standalone executable (Linux) - if: matrix.os == 'ubuntu-latest' - run: | - pyinstaller --onefile --name taf -y taf/tools/cli/taf.py - chmod +x dist/taf - ./dist/taf --help | grep "TAF Command Line Interface" || { echo "Error: Expected text not found in the executable output"; exit 1; } - - - name: Build and test standalone executable (Windows) - if: matrix.os == 'windows-latest' - run: | - pyinstaller --onefile --name taf.exe -y taf/tools/cli/taf.py - ./dist/taf.exe --help | Select-String "TAF Command Line Interface" -quiet - - - name: Build and test standalone executable (macOS) - if: matrix.os == 'macos-latest' - run: | - pyinstaller --onefile --name taf -y taf/tools/cli/taf.py - ./dist/taf --help | grep "TAF Command Line Interface" || { echo "Error: Expected text not found in the executable output"; exit 1; } - - - name: Upload standalone executable (Linux) - if: matrix.os == 'ubuntu-latest' - uses: actions/upload-artifact@v3 - with: - name: taf-executable-linux - path: dist/taf - - - name: Upload standalone executable (Windows) - if: matrix.os == 'windows-latest' - uses: actions/upload-artifact@v3 - with: - name: taf-executable-windows - path: dist/taf.exe - - - name: Upload standalone executable (macOS) - if: matrix.os == 'macos-latest' - uses: actions/upload-artifact@v3 - with: - name: taf-executable-macos - path: dist/taf +# on: +# push: {} +# pull_request: +# types: [closed] +# release: +# types: [published] + +# jobs: + +# run-tests: +# runs-on: ubuntu-latest +# strategy: +# matrix: +# python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] +# steps: +# - uses: actions/checkout@v3 + +# - name: Set up Python ${{ matrix.python-version }} +# uses: actions/setup-python@v3 +# with: +# python-version: ${{ matrix.python-version }} + +# - name: Upgrade pip, setuptools, and wheel +# run: | +# pip install --upgrade pip setuptools wheel + +# - name: Install dependencies +# run: | +# sudo apt-get update +# sudo apt-get install libhdf5-serial-dev zlib1g-dev libatlas-base-dev lcov swig3.0 libpcsclite-dev +# mkdir -p ~/bin/ && ln -s /usr/bin/swig3.0 ~/bin/swig && export PATH=~/bin/:$PATH +# pip install wheel # Ensure wheel is installed +# pip install -e .[ci,test,yubikey] + +# - name: Setup GitHub user +# run: | +# git config --global user.name oll-bot +# git config --global user.email developers@openlawlib.org + +# - name: Run pre-commit and test with pytest +# run: | +# pre-commit run --all-files +# pytest taf/tests + +# build-and-test-executables: +# needs: run-tests +# strategy: +# matrix: +# os: [ubuntu-latest, windows-latest, macos-latest] +# runs-on: ${{ matrix.os }} + +# if: ${{ needs.run-tests.result == 'success' }} +# steps: +# - name: Checkout Repository +# uses: actions/checkout@v3 + +# - name: Set up Python +# uses: actions/setup-python@v2 +# with: +# python-version: '3.10' + +# - name: Upgrade pip windows +# if: matrix.os == 'windows-latest' +# run: | +# python -m pip install --upgrade pip setuptools wheel + +# - name: Upgrade pip +# if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' +# run: | +# pip install --upgrade pip setuptools wheel + +# - name: Install Linux dependencies +# if: matrix.os == 'ubuntu-latest' +# run: | +# sudo apt-get update +# sudo apt-get install libhdf5-serial-dev zlib1g-dev libatlas-base-dev lcov swig3.0 libpcsclite-dev +# mkdir -p ~/bin/ && ln -s /usr/bin/swig3.0 ~/bin/swig && export PATH=~/bin/:$PATH + +# - name: Install Windows dependencies +# if: matrix.os == 'windows-latest' +# run: | +# choco install swig + +# - name: Install macOS dependencies +# if: matrix.os == 'macos-latest' +# run: | +# brew install swig + +# - name: Install dependencies +# run: | +# pip install .[yubikey] +# pip install pyinstaller + +# - name: Build and test standalone executable (Linux) +# if: matrix.os == 'ubuntu-latest' +# run: | +# pyinstaller --onefile --name taf -y taf/tools/cli/taf.py +# chmod +x dist/taf +# ./dist/taf --help | grep "TAF Command Line Interface" || { echo "Error: Expected text not found in the executable output"; exit 1; } + +# - name: Build and test standalone executable (Windows) +# if: matrix.os == 'windows-latest' +# run: | +# pyinstaller --onefile --name taf.exe -y taf/tools/cli/taf.py +# ./dist/taf.exe --help | Select-String "TAF Command Line Interface" -quiet + +# - name: Build and test standalone executable (macOS) +# if: matrix.os == 'macos-latest' +# run: | +# pyinstaller --onefile --name taf -y taf/tools/cli/taf.py +# ./dist/taf --help | grep "TAF Command Line Interface" || { echo "Error: Expected text not found in the executable output"; exit 1; } + +# - name: Upload standalone executable (Linux) +# if: matrix.os == 'ubuntu-latest' +# uses: actions/upload-artifact@v3 +# with: +# name: taf-executable-linux +# path: dist/taf + +# - name: Upload standalone executable (Windows) +# if: matrix.os == 'windows-latest' +# uses: actions/upload-artifact@v3 +# with: +# name: taf-executable-windows +# path: dist/taf.exe + +# - name: Upload standalone executable (macOS) +# if: matrix.os == 'macos-latest' +# uses: actions/upload-artifact@v3 +# with: +# name: taf-executable-macos +# path: dist/taf diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..226ed03aa --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,104 @@ +name: Build and Deploy TAF + +on: + push: + branches: + - '**' + pull_request: + branches: + - '**' + +jobs: + build_and_upload: + strategy: + matrix: + # os: [ubuntu-latest, windows-latest, macos-latest] + # python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + # architecture: ['x64', 'x86'] + os: [ubuntu-latest] + python-version: ['3.10'] + architecture: ['x64', 'x86'] + exclude: + # Exclude macOS and Linux with x86 architecture + - os: macos-latest + architecture: x86 + - os: ubuntu-latest + architecture: x86 + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + + - name: Set up 32-bit Python on Windows + if: matrix.os == 'windows-latest' && matrix.architecture == 'x86' + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + architecture: 'x86' + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.10' + + - name: Upgrade pip windows + if: matrix.os == 'windows-latest' + run: | + python -m pip install --upgrade pip setuptools wheel + + - name: Upgrade pip + if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' + run: | + pip install --upgrade pip setuptools wheel + + - name: Install Linux dependencies + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install libhdf5-serial-dev zlib1g-dev libatlas-base-dev lcov swig3.0 libpcsclite-dev + mkdir -p ~/bin/ && ln -s /usr/bin/swig3.0 ~/bin/swig && export PATH=~/bin/:$PATH + + - name: Install Windows dependencies + if: matrix.os == 'windows-latest' + run: | + choco install swig + + - name: Install macOS dependencies + if: matrix.os == 'macos-latest' + run: | + brew install swig + + - name: Install dependencies + run: | + pip install .[yubikey] + pip install pyinstaller + pip install twine==3.8.0 + + - name: Build TAF + run: | + python setup.py sdist bdist_wheel clean --all + + - name: Upload to TestPyPi + # if: startsWith(github.ref, 'refs/tags/v') + run: | + twine upload --repository-url https://test.pypi.org/legacy/ dist/* + env: + TWINE_USERNAME: ${{ secrets.TEST_PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.TEST_PYPI_PASSWORD }} + # - name: Upload wheels to PyPI + # if: startsWith(github.ref, 'refs/tags/v') + # run: | + # python -m pip install twine + # twine check dist/* + # twine upload --skip-existing dist/* -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} + # env: + # PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} + # PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + # displayName: "Upload wheels"