Browse Source

Add GitHub Actions (#3337)

Will build in parallel and covers more environments than the Travis build.
Gregor Hartmann 3 years ago
parent
commit
0fb2a121c1
1 changed files with 242 additions and 0 deletions
  1. 242 0
      .github/workflows/build.yml

+ 242 - 0
.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
+