diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..73f389a9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,242 @@ +name: CI + +on: + push: + branches: [ release ] + pull_request: + branches: [ dev, release ] + +jobs: + + + build: + strategy: + fail-fast: false + matrix: + lua_ver: [51, 53] + numbers: ['float'] + include: + - lua_ver: 51 + numbers: 'integral' + - lua_ver: 53 + numbers: '64bit' + runs-on: ubuntu-16.04 + + env: + LUA: ${{ matrix.lua_ver }} + + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - run: pip install pyserial + shell: bash + - run: sudo apt install srecord + shell: bash + - name: Build firmware + if: matrix.numbers == 'float' + run: make + shell: bash + - name: Build integral firmware + if: ${{ matrix.numbers == 'integral' }} + run: | + make EXTRA_CCFLAGS="-DLUA_NUMBER_INTEGRAL" + mv luac.cross.int luac.cross + shell: bash + - name: Build 64bit firmware + if: ${{ matrix.numbers == '64bit' }} + run: | + make EXTRA_CCFLAGS="-DLUA_NUMBER_64BITS" + shell: bash + - name: Upload luac.cross + if: ${{ success() }} + uses: actions/upload-artifact@v2 + with: + name: luac.cross_${{ matrix.lua_ver }}_${{ matrix.numbers }} + path: luac.cross + + + build_luac_cross_win: + + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Build luac.cross.exe + run: | + set + "%programfiles%\git\usr\bin\xargs" + cd msvc + "%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Release /p:Platform=x64 + mv luac-cross/x64/Release/luac.cross.exe .. + shell: cmd + - name: Upload luac.cross + if: ${{ success() }} + uses: actions/upload-artifact@v2 + with: + name: luac.cross_51_float_win + path: luac.cross.exe + + + compile_lua: + + strategy: + fail-fast: false + matrix: + lua_ver: [51, 53] + numbers: ['float'] + filter: [ 'cat' ] + include: + - lua_ver: 51 + numbers: 'integral' + filter: 'grep -v "lua_modules/lm92/lm92.lua\|lua_modules/hdc1000/HDC1000.lua\|lua_examples/u8g2/graphics_test.lua"' + - lua_ver: 53 + numbers: '64bit' + filter: 'cat' + needs: build + runs-on: ubuntu-16.04 + + steps: + - name: Checkout repo + uses: actions/checkout@v2 + with: + submodules: false + - name: Download luac.cross + uses: actions/download-artifact@v1 + with: + name: luac.cross_${{ matrix.lua_ver }}_${{ matrix.numbers }} + path: ./ + - name: Fix file permission + run: chmod +x luac.cross + - name: compile Lua + run: | + find lua_modules lua_examples tests/NTest* -iname "*.lua" | ${{ matrix.filter }} | xargs --delimiter="\n" echo + find lua_modules lua_examples tests/NTest* -iname "*.lua" | ${{ matrix.filter }} | xargs --delimiter="\n" ./luac.cross -p + shell: bash + + + compile_lua_win: + + strategy: + fail-fast: false + matrix: + lua_ver: [51] + numbers: ['float'] + filter: [ 'cat' ] + needs: build_luac_cross_win + runs-on: windows-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v2 + with: + submodules: false + - name: Download luac.cross + uses: actions/download-artifact@v1 + with: + name: luac.cross_${{ matrix.lua_ver }}_${{ matrix.numbers }}_win + path: ./ + - name: compile Lua + run: | + PATH="/C/Program\ Files/Git/usr/bin:${PATH}" + find lua_modules lua_examples tests/NTest* -iname "*.lua" | ${{ matrix.filter }} | xargs --delimiter="\n" echo + find lua_modules lua_examples tests/NTest* -iname "*.lua" | ${{ matrix.filter }} | xargs --delimiter="\n" ./luac.cross -p + shell: bash + + + NTest: + + strategy: + fail-fast: false + matrix: + lua_ver: [51, 53] + numbers: ['float'] + include: + - lua_ver: 51 + numbers: 'integral' + - lua_ver: 53 + numbers: '64bit' + needs: build + runs-on: ubuntu-16.04 + + steps: + - name: Checkout repo + uses: actions/checkout@v2 + with: + submodules: false + - name: Download luac.cross + uses: actions/download-artifact@v1 + with: + name: luac.cross_${{ matrix.lua_ver }}_${{ matrix.numbers }} + path: ./ + - name: Fix file permission + run: chmod +x luac.cross + - name: NTest selfcheck + run: | + cd tests/NTest + ../../luac.cross -e ../NTest/NTest_NTest.lua | tee log + grep "failed. 0" log + shell: bash + + + NTest_win: + + strategy: + fail-fast: false + matrix: + lua_ver: [51] + numbers: ['float'] + needs: build_luac_cross_win + runs-on: windows-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v2 + with: + submodules: false + - name: Download luac.cross + uses: actions/download-artifact@v1 + with: + name: luac.cross_${{ matrix.lua_ver }}_${{ matrix.numbers }}_win + path: ./ + - name: NTest selfcheck + run: | + cd tests/NTest + ../../luac.cross.exe -e ../NTest/NTest_NTest.lua | tee log + grep "failed. 0" log + shell: bash + + + luacheck: + + strategy: + fail-fast: false + matrix: + include: + - os: 'linux' + vm: 'ubuntu-16.04' + - os: 'windows' + vm: 'windows-latest' + runs-on: ${{ matrix.vm }} + + steps: + - uses: actions/checkout@v2 + with: + submodules: false + - run: sudo apt install luarocks + if : matrix.os == 'linux' + shell: bash + - name: get luacheck.exe # is also done in the travis script but in this action it does not run in bash + if : matrix.os == 'windows' + run: | + mkdir cache + C:msys64\usr\bin\wget.exe --tries=5 --timeout=10 --waitretry=10 --read-timeout=10 --retry-connrefused -O cache/luacheck.exe https://github.com/mpeterv/luacheck/releases/download/0.23.0/luacheck.exe + shell: cmd + - name: luacheck + run: | + PATH="/C/Program\ Files/Git/usr/bin:${PATH}" + ./tools/travis/run-luacheck-${{ matrix.os }}.sh + shell: bash +