Skip to content

bump C-API version #384

bump C-API version

bump C-API version #384

Workflow file for this run

# Copyright (c) 2016-2023 Knuth Project developers.
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
name: Build and Test
on: [push, pull_request]
jobs:
generate-matrix:
name: Generate Job Matrix
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-22.04
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Generate Job Matrix
id: set-matrix
env:
# MATRIX: '{"config":[{"name":"Linux NodeJS 16","nodejs_version":"16","os":"ubuntu-20.04","os_kind":"linux","march_id":"x64-ZLm9Pjh","test":"1"},
# {"name":"Linux NodeJS 14","nodejs_version":"14","os":"ubuntu-20.04","os_kind":"linux","march_id":"x64-ZLm9Pjh","test":"1"},
# {"name":"Linux NodeJS 12","nodejs_version":"12","os":"ubuntu-20.04","os_kind":"linux","march_id":"x64-ZLm9Pjh","test":"1"},
# {"name":"macOS NodeJS 16","nodejs_version":"16","os":"macos-11","os_kind":"macos","march_id":"x64-ZLm9Pjh","test":"0"},
# {"name":"macOS NodeJS 14","nodejs_version":"14","os":"macos-11","os_kind":"macos","march_id":"x64-ZLm9Pjh","test":"0"},
# {"name":"macOS NodeJS 12","nodejs_version":"12","os":"macos-11","os_kind":"macos","march_id":"x64-ZLm9Pjh","test":"0"},
# {"name":"Windows NodeJS 16","nodejs_version":"16","os":"windows-2022","os_kind":"windows","march_id":"x64-ZLm9Pjh","test":"1"},
# {"name":"Windows NodeJS 14","nodejs_version":"14","os":"windows-2022","os_kind":"windows","march_id":"x64-ZLm9Pjh","test":"1"},
# {"name":"Windows NodeJS 12","nodejs_version":"12","os":"windows-2022","os_kind":"windows","march_id":"x64-ZLm9Pjh","test":"1"},
# ]}'
# MATRIX: '{"config":[{"name":"Linux (GCC11) NodeJS 16","nodejs_version":"16","os":"ubuntu-20.04","os_kind":"linux","march_id":"x64-ZLm9Pjh","test":"1"},
# {"name":"Linux (GCC11) NodeJS 14","nodejs_version":"14","os":"ubuntu-20.04","os_kind":"linux","march_id":"x64-ZLm9Pjh","test":"1"},
# {"name":"Linux (GCC11) NodeJS 12","nodejs_version":"12","os":"ubuntu-20.04","os_kind":"linux","march_id":"x64-ZLm9Pjh","test":"1"},
# {"name":"macOS 12 NodeJS 16","nodejs_version":"16","os":"macos-12","os_kind":"macos","march_id":"x64-ZLm9Pjh","test":"0"},
# {"name":"macOS 12 NodeJS 14","nodejs_version":"14","os":"macos-12","os_kind":"macos","march_id":"x64-ZLm9Pjh","test":"0"},
# {"name":"macOS 12 NodeJS 12","nodejs_version":"12","os":"macos-12","os_kind":"macos","march_id":"x64-ZLm9Pjh","test":"0"},
# ]}'
MATRIX: '{"config":[{"name":"Linux (GCC 13) NodeJS 18","nodejs_version":"18","os":"ubuntu-22.04","os_kind":"linux","march_id":"x64-ZLm9Pjh","test":"1", "compiler_version":"13", "docker_suffix":"-ubuntu20.04"},
{"name":"Linux (GCC 13) NodeJS 16","nodejs_version":"16","os":"ubuntu-22.04","os_kind":"linux","march_id":"x64-ZLm9Pjh","test":"1", "compiler_version":"13", "docker_suffix":"-ubuntu20.04"},
{"name":"macOS 12 NodeJS 18","nodejs_version":"18","os":"macos-12","os_kind":"macos","march_id":"x64-ZLm9Pjh","test":"0"},
{"name":"macOS 12 NodeJS 16","nodejs_version":"16","os":"macos-12","os_kind":"macos","march_id":"x64-ZLm9Pjh","test":"0"},
]}'
run: |
echo "${MATRIX}"
echo "matrix=${MATRIX}" >> $GITHUB_OUTPUT
build-with-container:
needs: [generate-matrix]
strategy:
fail-fast: false
matrix: ${{fromJson(needs.generate-matrix.outputs.matrix)}}
name: ${{ matrix.config.name }}
uses: k-nuth/js-native/.github/workflows/build-with-container.yml@master
with:
if: ${{ matrix.config.os_kind == 'linux' }}
upload: ${{ github.event_name == 'push' }} # && needs.check.outputs.permitted == 'true'
os: ${{ matrix.config.os }}
image: "kthnode/gcc${{ matrix.config.compiler_version }}${{ matrix.config.docker_suffix }}"
# NPM_EMAIL:
NODEJS_VERSION: ${{ matrix.config.nodejs_version }}
secrets:
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
NODE_PRE_GYP_GITHUB_TOKEN: ${{ secrets.NODE_PRE_GYP_GITHUB_TOKEN }}
builds:
needs: generate-matrix
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix: ${{fromJson(needs.generate-matrix.outputs.matrix)}}
name: ${{ matrix.config.name }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: Settting EnvVars (Unix)
if: ${{ matrix.config.os_kind != 'windows' }}
shell: bash
run: |
echo "NODEJS_VERSION=${{ matrix.config.nodejs_version }}" >> $GITHUB_ENV
echo "KTH_GHA_MARCH_ID=${{ matrix.config.march_id }}" >> $GITHUB_ENV
echo "KTH_GHA_RUN_TESTS=${{ matrix.config.test }}" >> $GITHUB_ENV
- name: Settting EnvVars (Windows)
if: ${{ matrix.config.os_kind == 'windows' }}
shell: powershell
run: |
echo "NODEJS_VERSION=${{ matrix.config.nodejs_version }}" >> $Env:GITHUB_ENV
echo "KTH_GHA_MARCH_ID=${{ matrix.config.march_id }}" >> $Env:GITHUB_ENV
echo "KTH_GHA_RUN_TESTS=${{ matrix.config.test }}" >> $Env:GITHUB_ENV
# - name: Build (Linux)
# if: ${{ matrix.config.os_kind == 'linux' }}
# env:
# NODE_PRE_GYP_GITHUB_TOKEN: ${{ secrets.NODE_PRE_GYP_GITHUB_TOKEN }}
# NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
# shell: bash
# run: |
# # echo ${NPM_AUTH_TOKEN}
# # echo ${NPM_EMAIL}
# # echo ${NODEJS_VERSION}
# # echo ${NODE_PRE_GYP_GITHUB_TOKEN}
# echo "-------------------------------------------------------"
# whoami
# echo "-------------------------------------------------------"
# chmod a+x .cicd/entrypoint.sh
# chmod -R 777 ${PWD}
# /usr/bin/docker run --rm -e KTH_GHA_MARCH_ID=$KTH_GHA_MARCH_ID -e NPM_AUTH_TOKEN=$NPM_AUTH_TOKEN -e NPM_EMAIL=$NPM_EMAIL -e NODEJS_VERSION=$NODEJS_VERSION -e NODE_PRE_GYP_GITHUB_TOKEN=$NODE_PRE_GYP_GITHUB_TOKEN -v ${PWD}:/home/conan/project -v ${PWD}/.cicd/entrypoint.sh:/tmp/entrypoint.sh conanio/gcc11-ubuntu16.04 /bin/bash -c /tmp/entrypoint.sh
- uses: actions/setup-node@v2
if: ${{ matrix.config.os_kind != 'linux' }}
with:
node-version: '${{ matrix.config.nodejs_version }}'
- name: Install (macOS)
if: ${{ matrix.config.os_kind == 'macos' }}
env:
NODE_PRE_GYP_GITHUB_TOKEN: ${{ secrets.NODE_PRE_GYP_GITHUB_TOKEN }}
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
shell: bash
run: |
set -x
node --version
npm --version
brew update
brew outdated pyenv || brew upgrade pyenv
brew install pyenv-virtualenv
# brew install cmake || true
if which pyenv > /dev/null; then
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
fi
pyenv install --list
pyenv install 3.8.7
pyenv virtualenv 3.8.7 conan
pyenv rehash
pyenv activate conan
npm install -g node-gyp
npm install -g @mapbox/node-pre-gyp
# npm install -g aws-sdk
# npm install -g node-pre-gyp-github
npm install -g @mmomtchev/node-pre-gyp-github
# pip install conan_package_tools --upgrade
# pip install conan --upgrade
pip install kthbuild --upgrade
python3 -m pip install "conan>=2.0" --upgrade --ignore-installed
conan --version
# conan profile detect
conan config install -t dir ./.conan
# conan user
- name: Build (macOS)
if: ${{ matrix.config.os_kind == 'macos' }}
env:
NODE_PRE_GYP_GITHUB_TOKEN: ${{ secrets.NODE_PRE_GYP_GITHUB_TOKEN }}
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
shell: bash
run: |
if which pyenv > /dev/null; then
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
fi
pyenv activate conan
python --version
# conan user
# echo "-----------------------------------------------------------"
# conan config get
# echo "-----------------------------------------------------------"
# conan config set general.revisions_enabled=1
# echo "-----------------------------------------------------------"
# conan config get
# echo "-----------------------------------------------------------"
# conan remote add kth_temp https://packages.kth.cash/api || true
conan profile detect
conan install . --build=missing -s compiler.cppstd=20
# -o c-api/*:march_id=ZLm9Pjh
# npm install --loglevel verbose
npm install --loglevel verbose
if [[ "${KTH_GHA_RUN_TESTS}" == "1" ]]; then
npm run test
# /Users/runner/work/_temp/1cbd6dec-60ec-4181-81bd-cceaf2210ae3.sh: line 13: 37183 Illegal instruction: 4 npm run test
fi
# node-pre-gyp configure build package --verbose --target_arch=${KTH_GHA_MARCH_ID}
node-pre-gyp configure build package --verbose
node-pre-gyp-github publish --release || true
# node-pre-gyp clean
# node-gyp clean
# npm install
# npm publish || true
- name: Install (Windows)
if: ${{ matrix.config.os_kind == 'windows' }}
shell: powershell
run: |
# Write-Host "CONAN_VISUAL_VERSIONS: $Env:CONAN_VISUAL_VERSIONS"
$ErrorActionPreference = 'SilentlyContinue'
npm --version
npm -g install npm@next
npm --version
npm install -g [email protected]
npm install -g @mapbox/node-pre-gyp
npm install -g aws-sdk
# npm install -g node-pre-gyp-github
npm install -g @mmomtchev/node-pre-gyp-github
pip --version
pip install kthbuild --upgrade
python --version
# conan user # It creates the conan data directory
node --version
npm --version
python --version
# cl /version
Write-Host "----------------------------"
node -p "process.arch"
Write-Host "----------------------------"
# conan user
conan remote add kth_temp https://packages.kth.cash/api
# conan install . -s compiler.runtime=MT
# conan user
$ErrorActionPreference = 'Continue'
- name: Build (Windows)
if: ${{ matrix.config.os_kind == 'windows' }}
env:
NODE_PRE_GYP_GITHUB_TOKEN: ${{ secrets.NODE_PRE_GYP_GITHUB_TOKEN }}
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
shell: powershell
run: |
$ErrorActionPreference = 'SilentlyContinue'
# npm install
# npm install --loglevel verbose
# npm install --target_arch=${KTH_GHA_MARCH_ID} --loglevel verbose
Write-Host "****************************************************"
Write-Host "BEFORE npm install"
Write-Host "****************************************************"
npm install --loglevel verbose
Write-Host "****************************************************"
Write-Host "AFTER npm install"
Write-Host "****************************************************"
Write-Host "****************************************************"
Write-Host "BEFORE npm run test"
Write-Host "****************************************************"
npm run test
Write-Host "****************************************************"
Write-Host "AFTER npm run test"
Write-Host "****************************************************"
Remove-Item './deps' -Recurse
Write-Host "****************************************************"
Write-Host "BEFORE node-pre-gyp configure build package"
Write-Host "****************************************************"
# node-pre-gyp configure build package --target_arch=${KTH_GHA_MARCH_ID}
node-pre-gyp configure build package
# node-pre-gyp configure --verbose
# node-pre-gyp build --verbose
# node-pre-gyp package --verbose
Write-Host "****************************************************"
Write-Host "AFTER node-pre-gyp configure build package"
Write-Host "****************************************************"
$ErrorActionPreference = 'SilentlyContinue'
node-pre-gyp-github publish --release
$ErrorActionPreference = 'Continue'
# $ErrorActionPreference = 'SilentlyContinue'
# conan remove "*" -f
# conan remote remove kth
# conan remote remove kthbuild_kth_temp_
# $ErrorActionPreference = 'Continue'
# References:
# https://github.com/radareorg/radare2