Merge pull request #161 from aewallin/dependabot/npm_and_yarn/src/npm… #327
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: CD | |
on: | |
push: | |
branches: | |
- master | |
- develop | |
tags: | |
- v* | |
release: | |
types: | |
- published | |
jobs: | |
cxx: | |
name: ${{ matrix.os_short }} c++ ${{ matrix.architecture }} | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 120 | |
strategy: | |
fail-fast: false | |
matrix: | |
os_arch: [ | |
"windows-ia32", | |
"windows-x64", | |
"macos-x86_64", | |
"macos-arm64", | |
"linux-x86_64", | |
"linux-aarch64", | |
] | |
include: | |
- os_arch: "windows-ia32" | |
os: "windows-2022" | |
os_short: "windows" | |
architecture: "ia32" | |
cmake_generator_platform: "Win32" | |
- os_arch: "windows-x64" | |
os: "windows-2022" | |
os_short: "windows" | |
architecture: "x64" | |
cmake_generator_platform: "x64" | |
- os_arch: "macos-x86_64" | |
os: "macos-11.0" | |
os_short: "macos" | |
architecture: "x86_64" | |
- os_arch: "macos-arm64" | |
os: "macos-11.0" | |
os_short: "macos" | |
architecture: "arm64" | |
- os_arch: linux-x86_64 | |
os: "ubuntu-22.04" | |
os_short: "linux" | |
architecture: "x86_64" | |
docker_image: "dockcross/linux-x64:latest" | |
- os_arch: linux-aarch64 | |
os: "ubuntu-22.04" | |
os_short: "linux" | |
architecture: "aarch64" | |
docker_image: "dockcross/linux-arm64-lts:latest" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: cxxlib | |
shell: bash | |
run: | | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
version="${GITHUB_REF##*/}" | |
else | |
version="$(date '+%Y.%-m.%-d').dev${GITHUB_RUN_NUMBER}" | |
fi | |
echo "${version}" > src/git-tag.txt | |
if [ "${{ matrix.docker_image }}" != "" ]; then | |
export OCL_DOCKER_IMAGE="${{ matrix.docker_image }}" | |
fi | |
if [ "${{ matrix.macos_architecture }}" != "" ]; then | |
export OCL_MACOS_ARCHITECTURE="${{ matrix.architecture }}" | |
fi | |
if [ "${{ matrix.cmake_generator_platform }}" != "" ]; then | |
export OCL_GENERATOR_PLATFORM="${{ matrix.cmake_generator_platform }}" | |
fi | |
./install.sh \ | |
--build-library cxx \ | |
--build-type release \ | |
--install-ci-deps \ | |
--install-boost \ | |
--boost-prefix $(pwd) \ | |
--install \ | |
--install-prefix $(pwd)/dist | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.os_short }}-cxx-${{ matrix.architecture }} | |
path: | | |
dist | |
nodejs: | |
name: ${{ matrix.os_short }} node.js ${{ matrix.architecture }} | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 120 | |
strategy: | |
fail-fast: false | |
matrix: | |
os_arch: [ | |
"windows-ia32", | |
"windows-x64", | |
"macos-x86_64", | |
"macos-arm64", | |
"linux-x86_64", | |
"linux-aarch64", | |
] | |
include: | |
- os_arch: "windows-ia32" | |
os: "windows-2022" | |
os_short: "windows" | |
architecture: "ia32" | |
cmake_generator_platform: "Win32" | |
node_architecture: "ia32" | |
- os_arch: "windows-x64" | |
os: "windows-2022" | |
os_short: "windows" | |
architecture: "x64" | |
cmake_generator_platform: "x64" | |
node_architecture: "x64" | |
- os_arch: "macos-x86_64" | |
os: "macos-11.0" | |
os_short: "macos" | |
architecture: "x86_64" | |
node_architecture: "x64" | |
macos_architecture: "x86_64" | |
- os_arch: "macos-arm64" | |
os: "macos-11.0" | |
os_short: "macos" | |
architecture: "arm64" | |
node_architecture: "arm64" | |
macos_architecture: "arm64" | |
- os_arch: linux-x86_64 | |
os: "ubuntu-22.04" | |
os_short: "linux" | |
architecture: "x86_64" | |
node_architecture: "x64" | |
- os_arch: linux-aarch64 | |
os: "ubuntu-22.04" | |
os_short: "linux" | |
architecture: "aarch64" | |
node_architecture: "arm64" | |
docker_image: ghcr.io/prebuild/linux-arm64-lts:latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: nodejslib | |
shell: bash | |
run: | | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
version="${GITHUB_REF##*/}" | |
else | |
version="$(date '+%Y.%-m.%-d')-dev.${GITHUB_RUN_NUMBER}" | |
fi | |
echo "${version}" > src/git-tag.txt | |
if [ "${{ matrix.docker_image }}" != "" ]; then | |
export OCL_DOCKER_IMAGE="${{ matrix.docker_image }}" | |
# there is an issue with the ghcr.io/prebuild/linux-arm64-lts:latest image, cmake --install does not work, so we install cmake ourselves in the container | |
export OCL_DOCKER_IMAGE_BEFORE_INSTALL="curl https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh --output /tmp/cmake.sh --silent --location && chmod +x /tmp/cmake.sh && /tmp/cmake.sh --skip-license --prefix=/usr/local" | |
elif [ "${{ matrix.macos_architecture }}" != "" ]; then | |
export OCL_MACOS_ARCHITECTURE="${{ matrix.macos_architecture }}" | |
elif [ "${{ matrix.cmake_generator_platform }}" != "" ]; then | |
export OCL_GENERATOR_PLATFORM="${{ matrix.cmake_generator_platform }}" | |
fi | |
./install.sh \ | |
--build-library nodejs \ | |
--build-type release \ | |
--install-ci-deps \ | |
--install-boost \ | |
--boost-prefix $(pwd) \ | |
--node-architecture ${{ matrix.node_architecture }} \ | |
--install \ | |
--install-prefix $(pwd)/dist | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.os_short }}-nodejs-${{ matrix.node_architecture }} | |
path: | | |
dist | |
python: | |
name: ${{ matrix.os_short }} python ${{ matrix.architecture }} cp${{ matrix.python_version }} | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 240 | |
strategy: | |
fail-fast: false | |
matrix: | |
os_arch: [ | |
"windows-ia32", | |
"windows-x64", | |
# "windows-arm64", | |
"macos-x86_64", | |
"macos-arm64", | |
"linux-x86_64", | |
"linux-aarch64", | |
] | |
python_version: [ | |
"37", | |
"38", | |
"39", | |
"310", | |
"311", | |
] | |
exclude: | |
- os_arch: "macos-arm64" | |
python_version: "37" | |
include: | |
- os_arch: "windows-ia32" | |
os: "windows-2022" | |
os_short: "windows" | |
architecture: "ia32" | |
boost_architecture: "x86" | |
cibuildwheel_architecture: "x86" | |
boost_address_model: "32" | |
cmake_generator_platform: "Win32" | |
- os_arch: "windows-x64" | |
os: "windows-2022" | |
os_short: "windows" | |
architecture: "x64" | |
boost_architecture: "x86" | |
boost_address_model: "64" | |
cibuildwheel_architecture: "AMD64" | |
cmake_generator_platform: "x64" | |
# - os_arch: "windows-arm64" | |
# os: "windows-2022" | |
# os_short: "windows" | |
# architecture: "arm64" | |
# boost_architecture: "arm" | |
# boost_address_model: "64" | |
# cibuildwheel_architecture: "ARM64" | |
# cmake_generator_platform: "ARM64" | |
- os_arch: "macos-x86_64" | |
os: "macos-11.0" | |
os_short: "macos" | |
architecture: "x86_64" | |
boost_architecture: "x86" | |
- os_arch: "macos-arm64" | |
os: "macos-11.0" | |
os_short: "macos" | |
architecture: "arm64" | |
boost_architecture: "arm" | |
- os_arch: linux-x86_64 | |
os: "ubuntu-22.04" | |
os_short: "linux" | |
architecture: "x86_64" | |
boost_architecture: "x86" | |
- os_arch: linux-aarch64 | |
os: "ubuntu-22.04" | |
os_short: "linux" | |
architecture: "aarch64" | |
boost_architecture: "arm" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
# - name: Cache Boost.Python | |
# id: cache-boost-python | |
# uses: actions/cache@v3 | |
# with: | |
# path: boost-precompiled.tar.gz | |
# key: boost-1.80.0-${{ matrix.os_short }}-${{ matrix.architecture }} | |
- name: prepare | |
shell: bash | |
run: | | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
version="${GITHUB_REF##*/}" | |
else | |
version="$(date '+%Y.%-m.%-d').dev${GITHUB_RUN_NUMBER}" | |
fi | |
sed -i.bak "s/^version = .*/version = \"${version}\"/g" pyproject.toml && rm pyproject.toml.bak | |
echo "${version}" > src/git-tag.txt | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
if: matrix.architecture == 'aarch64' | |
with: | |
platforms: arm64 | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: "cp${{ matrix.python_version }}-*" | |
CIBW_PLATFORM: "${{ matrix.os_short }}" | |
CIBW_BUILD_VERBOSITY: "1" | |
CIBW_ARCHS_WINDOWS: "${{ matrix.cibuildwheel_architecture }}" | |
CIBW_ENVIRONMENT_WINDOWS: > | |
BOOST_ROOT="$(cygpath -w $(pwd))" | |
OCL_BOOST_ADDRESS_MODEL="${{ matrix.boost_address_model }}" | |
OCL_BOOST_ARCHITECTURE="${{ matrix.boost_architecture }}" | |
CMAKE_GENERATOR="Visual Studio 17 2022" | |
CMAKE_GENERATOR_PLATFORM="${{ matrix.cmake_generator_platform }}" | |
CIBW_ENVIRONMENT_PASS_WINDOWS: "BOOST_ROOT OCL_BOOST_ADDRESS_MODEL OCL_BOOST_ARCHITECTURE CMAKE_GENERATOR CMAKE_GENERATOR_PLATFORM" | |
CIBW_ARCHS_MACOS: "${{ matrix.architecture }}" | |
CIBW_ENVIRONMENT_MACOS: > | |
BOOST_ROOT="$(pwd)" | |
OCL_MACOS_ARCHITECTURE="${{ matrix.architecture }}" | |
OCL_BOOST_ARCHITECTURE="${{ matrix.boost_architecture }}" | |
OPENMP_PREFIX_MACOS="/tmp/libomp/libomp/fixed" | |
CIBW_ENVIRONMENT_PASS_MACOS: "BOOST_ROOT OCL_BOOST_ARCHITECTURE OPENMP_PREFIX_MACOS" | |
CIBW_ARCHS_LINUX: "${{ matrix.architecture }}" | |
CIBW_ENVIRONMENT_LINUX: > | |
BOOST_ROOT="$(pwd)" | |
OCL_BOOST_ARCHITECTURE="${{ matrix.boost_architecture }}" | |
CMAKE_GENERATOR="Unix Makefiles" | |
CIBW_ENVIRONMENT_PASS_LINUX: "BOOST_ROOT OCL_BOOST_ARCHITECTURE CMAKE_GENERATOR" | |
# - name: Compress Boost.Python | |
# shell: bash | |
# run: | | |
# if [ -d "boost_1_80_0" ]; then | |
# tar -czf boost-precompiled.tar.gz boost_1_80_0 || true | |
# fi | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.os_short }}-python-${{ matrix.architecture }} | |
path: | | |
./wheelhouse/*.whl | |
emscripten: | |
name: emscripten | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 120 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: emscripten | |
shell: bash | |
run: | | |
./install.sh \ | |
--build-library emscripten \ | |
--build-type release \ | |
--install-ci-deps \ | |
--install-boost \ | |
--boost-prefix $(pwd) \ | |
--install \ | |
--install-prefix $(pwd)/dist | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: emscripten | |
path: | | |
dist | |
publish-npm: | |
name: publish to NPM | |
needs: [ | |
nodejs, | |
emscripten, | |
python, | |
cxx | |
] | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: prebuilds | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '14.x' | |
- name: Publish node.js library | |
shell: bash | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: | | |
# add readme to npm package | |
cp README* src/npmpackage | |
# bump version | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
version="${GITHUB_REF##*/}" | |
else | |
version="$(date '+%Y.%-m.%-d')-dev.${GITHUB_RUN_NUMBER}" | |
is_dev="1" | |
fi | |
jq --arg version "${version}" '.version = $version' src/npmpackage/package.json > package.json.tmp | |
mv package.json.tmp src/npmpackage/package.json | |
mkdir -p src/npmpackage/build/Release | |
mv prebuilds/*-nodejs-* src/npmpackage/build/Release | |
mv prebuilds/emscripten/ocl.js src/npmpackage/build | |
cd src/npmpackage | |
npm install | |
npm run build-emscripten | |
if [ "${is_dev}" == "1" ]; then | |
npm publish --access public --tag dev | |
else | |
npm publish --access public | |
fi | |
publish-pypi: | |
name: publish to PyPi | |
needs: [ | |
nodejs, | |
emscripten, | |
python, | |
cxx | |
] | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: prebuilds | |
- name: prepare | |
shell: bash | |
run: | | |
mkdir dist | |
mv prebuilds/*-python-*/* dist | |
- name: Publish wheels to Test PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
repository_url: https://test.pypi.org/legacy/ | |
- name: Publish wheels to PyPI | |
if: startsWith(github.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
publish-github: | |
name: publish to Github | |
if: startsWith(github.ref, 'refs/tags/') | |
needs: [ | |
nodejs, | |
emscripten, | |
python, | |
cxx | |
] | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: prebuilds | |
- name: prepare | |
shell: bash | |
run: | | |
mkdir dist | |
zip -r dist/linux-cxx-x86_64.zip prebuilds/linux-cxx-x86_64 | |
zip -r dist/macos-cxx-arm64.zip prebuilds/macos-cxx-arm64 | |
zip -r dist/macos-cxx-x86_64.zip prebuilds/macos-cxx-x86_64 | |
zip -r dist/windows-cxx-ia32.zip prebuilds/windows-cxx-ia32 | |
zip -r dist/windows-cxx-x64.zip prebuilds/windows-cxx-x64 | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
files: | | |
dist/* |