diff --git a/.github/workflows/cron-test.yaml b/.github/workflows/cron-test.yaml new file mode 100644 index 0000000000..812da0368f --- /dev/null +++ b/.github/workflows/cron-test.yaml @@ -0,0 +1,54 @@ +name: Cron Test +on: + schedule: + - cron: "0 0 * * 1" # Run on the first day over every week +jobs: + test: + name: cron unit tests on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04, macos-11, windows-2019] + node-version: [16.x] + steps: + - name: Checkout Release from lens + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file + if: runner.os == 'Linux' + run: | + echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts + + - name: Using Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Get npm cache directory path + if: ${{ runner.os != 'Windows' }} + id: npm-cache-dir-path + shell: bash + run: echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + if: ${{ runner.os != 'Windows' }} + id: npm-cache # use this to check for `cache-hit` (`steps.npm-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.npm-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-npm- + + - uses: nick-fields/retry@v2 + name: Install dependencies + with: + timeout_minutes: 20 + max_attempts: 3 + retry_on: error + command: npm ci + + - run: npm run test:unit + name: Run tests diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 47567ac44b..4f43c1a343 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,7 +57,7 @@ jobs: - run: npm run test:unit name: Run tests - if: ${{ matrix.type == 'unit' }} + if: ${{ runner.os == 'Linux' && matrix.type == 'unit' }} - name: Install integration test dependencies id: minikube