Sign comparison #160
This file contains 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
name: Build | |
# This workflow is triggered on pushes to the repository. | |
on: push | |
env: | |
BUILD_TYPE: Release | |
jobs: | |
build: | |
name: ${{matrix.config.name}} | |
runs-on: ${{matrix.config.os}} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Ubuntu GCC", artifact: "qi-linux.tar.gz", | |
os: ubuntu-22.04, | |
cc: "gcc-11", cxx: "g++-11" | |
} | |
- { | |
name: "macOS", artifact: "qi-macos.tar.gz", | |
os: macos-12, | |
cc: "clang", cxx: "clang++" | |
} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 | |
- name: Install Build Tools | |
shell: bash | |
run: | | |
if [ "${{runner.os}}" == "macOS" ]; then | |
brew install gnu-tar automake autoconf autoconf-archive | |
else | |
sudo apt-get update | |
sudo apt-get install automake autoconf autoconf-archive | |
fi | |
- name: Restore vcpkg binary cache | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cache/vcpkg/ | |
key: ${{runner.os}}-${{hashFiles( 'vcpkg.json' ) }}-${{hashFiles( '.git/modules/cmake/HEAD' )}}-vcpkg-cache | |
- name: Build | |
shell: bash | |
env: | |
CC: ${{matrix.config.cc}} | |
CXX: ${{matrix.config.cxx}} | |
run: | | |
TC="${{github.workspace}}/cmake/toolchain.cmake" | |
export VCPKG_OVERLAY_TRIPLETS="${{github.workspace}}/cmake/triplets" | |
export FLAGS="ci" | |
cd ${{github.workspace}} | |
cmake -B build -S . \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_TOOLCHAIN_FILE="$TC" | |
cmake --build build | |
- name: Set up Python | |
uses: actions/setup-python@v1 | |
with: | |
python-version: 3.7 | |
- name: Prepare Python | |
run: | | |
python -m pip install --upgrade pip | |
pip install nipype | |
pip install -e ./Python/ | |
shell: bash | |
- name: Run Tests | |
working-directory: ./Python/Tests | |
shell: bash | |
run: | | |
if [ "${{runner.os}}" != "macOS" ]; then # MacOS runners do not have AVX2 | |
export PATH="$PWD/../../build/Source:$PATH"; python -m unittest discover | |
fi | |
- name: Save release | |
run: | | |
mv ./build/Source/qi ./qi | |
if [ "${{runner.os}}" == "macOS" ]; then | |
echo "Using GNU tar" | |
gtar -czf ${{matrix.config.artifact}} qi | |
else | |
echo "Using system tar" | |
tar -czf ${{matrix.config.artifact}} qi | |
fi | |
shell: bash | |
- name: Upload | |
uses: actions/upload-artifact@v1 | |
with: | |
path: ./${{matrix.config.artifact}} | |
name: ${{matrix.config.artifact}} | |
release: | |
if: contains(github.ref, 'tags/v') | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Create Release | |
id: create_release | |
uses: actions/[email protected] | |
env: | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
with: | |
tag_name: ${{github.ref}} | |
release_name: Release ${{github.ref}} | |
draft: true | |
prerelease: false | |
- name: Store Release URL | |
run: | | |
echo "${{steps.create_release.outputs.upload_url}}" > ./upload_url | |
- uses: actions/upload-artifact@v1 | |
with: | |
path: ./upload_url | |
name: upload_url | |
publish: | |
if: contains(github.ref, 'tags/v') | |
name: ${{matrix.config.name}} | |
runs-on: ${{matrix.config.os}} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Ubuntu GCC", artifact: "qi-linux.tar.gz", | |
os: ubuntu-16.04 | |
} | |
- { | |
name: "macOS", artifact: "qi-macos.tar.gz", | |
os: macos-10.15 | |
} | |
needs: release | |
steps: | |
- name: Download Artifact | |
uses: actions/download-artifact@v1 | |
with: | |
name: ${{matrix.config.artifact}} | |
path: ./ | |
- name: Download URL | |
uses: actions/download-artifact@v1 | |
with: | |
name: upload_url | |
path: ./ | |
- name: Set Upload URL | |
id: set_upload_url | |
run: | | |
URL=`cat ./upload_url` | |
echo ${URL} | |
echo "::set-output name=upload_url::${URL}" | |
- name: Upload to Release | |
id: upload_to_release | |
uses: actions/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.set_upload_url.outputs.upload_url }} | |
asset_path: ./${{ matrix.config.artifact }} | |
asset_name: ${{ matrix.config.artifact }} | |
asset_content_type: application/gzip |