# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: CI

on:
  pull_request:
  push:
    branches:
      - master
    tags:
      - 'v*'

jobs:
  CI:
    runs-on: ubuntu-18.04
    timeout-minutes: 180
    strategy:
      fail-fast: true
    steps:
      - uses: actions/checkout@v2
      # In the checkout@v2, it doesn't support git submodule. Execute the commands manually.
      - name: checkout submodules
        shell: bash
        run: |
          git submodule sync --recursive
          git -c protocol.version=2 submodule update --init --force --recursive --depth=1
      - uses: leafo/gh-actions-lua@v5
        with:
          luaVersion: "5.3.5"
      - name: 'Install LuaRocks'
        run: |
          wget https://luarocks.org/releases/luarocks-3.3.0.tar.gz
          tar zxpf luarocks-3.3.0.tar.gz
          cd luarocks-3.3.0
          ./configure && make && sudo make install
          cd ..
      - name: 'Install Dependencies'
        run: |
          sudo luarocks install luaunit
          sudo luarocks install lua-cjson 2.1.0-1
          sudo luarocks install lua-resty-jit-uuid
      - name: "Install OpenResty"
        run: |
          wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
          sudo apt-get -y update --fix-missing
          sudo apt-get -y install software-properties-common
          sudo add-apt-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"
          sudo apt-get update
          sudo apt-get install openresty-debug
      - name: "Install test::nginx for testing"
        run: |
          sudo apt-get install -y cpanminus
          sudo cpanm --notest Test::Nginx >build.log 2>&1 || (cat build.log && exit 1)
          git clone https://github.com/iresty/test-nginx.git test-nginx
      - name: 'Run Lua Tests'
        run: |
          cd lib
          lua skywalking/util_test.lua
          lua skywalking/span_test.lua
          lua skywalking/tracing_context_test.lua
          lua skywalking/segment_ref_test.lua
          lua skywalking/correlation_context_test.lua
          cd ..
      - name: 'Run Nginx Lua Tests'
        run: |
          export PATH=/usr/local/openresty-debug/nginx/sbin:/usr/local/openresty-debug/luajit/bin:$/usr/local/openresty-debug/bin:$PATH
          prove -Itest-nginx/lib -r t
