summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
blob: 86b74fe0120a9a52833a4b666086bb4c579c0576 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
name: "Build"

concurrency:
  # for PR's cancel the running task, if another commit is pushed
  group: ${{ github.workflow }} ${{ github.ref }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}

on:
  # build on PR and push-to-main. This works for short-lived branches, and saves
  # CPU cycles on duplicated tests.
  # For long-lived branches that diverge, you'll want to run on all pushes, not
  # just on push-to-main.
  pull_request: {}
  push:
    branches:
    - master

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        os: ['ubuntu-20.04', 'macos-11.0']
        luaVersion:
        - "5.1"
        - "5.2"
        - "5.3"
        - "5.4"
        - "luajit"
        - "luajit-openresty"
        include:
          - os: "macos-latest"
            luaVersion: "5.4"
          # On Windows builds:
          # 'hishamhm/gh-actions-lua' will build the PuC Rio Lua versions using MSVC, and
          # the LuaJIT version using MinGW/gcc. By running against both below, we test
          # both toolchains.
          - os: "windows-latest"
            toolchain: "msvc"
            luaVersion: "5.1"
          - os: "windows-latest"
            toolchain: "msvc"
            luaVersion: "5.2"
          - os: "windows-latest"
            toolchain: "msvc"
            luaVersion: "5.3"
          - os: "windows-latest"
            toolchain: "msvc"
            luaVersion: "5.4"
          - os: "windows-latest"
            toolchain: "mingw"  # unused, other than for display in the UI
            luaVersion: "luajit"

    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout
        uses: actions/checkout@master

      - name: Setup MSVC
        # the 'hishamhm/gh-actions-lua' step requires msvc to build PuC Rio Lua
        # versions on Windows (LuaJIT will be build using MinGW/gcc).
        if: ${{ matrix.toolchain == 'msvc' }}
        uses: ilammy/msvc-dev-cmd@v1

      # - name: install Dependencies analyzer
      #   # action step used for troubleshooting if Windows dll's build incorrectly
      #   run: |
      #     $version = "1.11.1"
      #     echo "Installing Dependencies version: $version"
      #     $url = 'https://github.com/lucasg/Dependencies/releases/download/v' + $version + '/Dependencies_x64_Release.zip'
      #     $dest = Join-Path -Path $PWD -ChildPath ".dependencies"

      #     # Download and extract Dependencies
      #     New-Item -ItemType Directory -Path "$dest"
      #     Invoke-WebRequest -Uri $url -OutFile "$dest\dependencies.zip"
      #     Expand-Archive -Path "$dest\dependencies.zip" -DestinationPath "$dest"
      #     Remove-Item -Path "$dest\dependencies.zip"
      #     # dir "$dest"

      #     # Add Dependencies to PATH
      #     $env:PATH += ";$dest"
      #     echo $env:PATH

      #     # Verify Dependencies Installation
      #     dir "$dest\*.exe"
      #     dir ".\.dependencies\Dependencies.exe"
      #     .\.dependencies\Dependencies.exe -help

      - uses: hishamhm/gh-actions-lua@master
        with:
          luaVersion: ${{ matrix.luaVersion }}

      - uses: hishamhm/gh-actions-luarocks@master
        with:
          luarocksVersion: "3.11.0"

      - name: dependencies
        run: |
          luarocks install busted

      - name: install
        run: |
          luarocks remove --force luasystem
          luarocks make

      - name: test
        run: |
          busted --exclude-tags=manual --Xoutput "--color"