Merge branch 'master' into dependabot/npm_and_yarn/webui/ajv-and-eslint-6.12.6
diff --git a/.asf.yaml b/.asf.yaml
index bb6197c..a2faa26 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -26,8 +26,8 @@
         strict: true
         # contexts are the names of checks that must pass
         contexts:
-          - Java CI with Maven / Build on Java 11 and ubuntu-18.04 (pull_request)
-          - Node.js CI / build (16.x, ubuntu-18.04) (pull_request)
+          - Build on Java 11 and ubuntu-18.04
+          - Build on Node 16.x and ubuntu-18.04
 
       required_pull_request_reviews:
         dismiss_stale_reviews: true
diff --git a/.github/workflows/README.md b/.github/workflows/README.md
new file mode 100644
index 0000000..7b5f8fa
--- /dev/null
+++ b/.github/workflows/README.md
@@ -0,0 +1,56 @@
+<!--
+
+    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.
+
+-->
+
+## GitHub Workflows
+
+This directory contains all Nemo CI checks. (Excerpt from the [Pulsar project](https://github.com/apache/pulsar/blob/master/.github/workflows/README.md))
+
+### Required Workflows
+
+This project uses the [.asf.yaml](../../.asf.yaml) to configure which workflows are required to pass before a PR can be merged.
+When adding new CI workflows, please update the [.asf.yaml](../../.asf.yaml) if the workflow is required to pass before a PR can be merged.
+
+You can view the currently required status checks by running the following command:
+
+```shell
+curl -s -H 'Accept: application/vnd.github.v3+json' https://api.github.com/repos/apache/incubator-nemo/branches/master | \
+jq .protection
+```
+
+These contexts get their names in one of two ways depending on how the workflow file is written in this directory. The
+following command will print out the names of each file and the associated with the check. If the `name` field is `null`,
+the context will be named by the `id`.
+
+```shell
+for f in .github/workflows/*.yaml; \
+do FILE=$f yq eval -o j '.jobs | to_entries | {"file": env(FILE),"id":.[].key, "name":.[].value.name}' $f; \
+done
+```
+
+Duplicate names are allowed, and all checks with the same name will be treated the same (required or not required).
+
+When working on workflow changes, one way to find out the names of the status checks is to retrieve the names
+from the PR build run. The "check-runs" can be found by commit id. Here's an example:
+
+```shell
+curl -s "https://api.github.com/repos/apache/incubator-nemo/commits/$(git rev-parse HEAD)/check-runs" | \
+  jq -r '.check_runs | .[] | .name' |sort
+```
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 51a9503..930c41c 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -34,6 +34,8 @@
         node-version: [14.x, 16.x]
         os: [ubuntu-latest, ubuntu-18.04]
         # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
+
+    name: Build on Node ${{ matrix.node-version }} and ${{ matrix.os }}
     runs-on: ${{ matrix.os }}
 
     steps:
diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml
index 93a9c24..12134ad 100644
--- a/.github/workflows/sonarcloud.yml
+++ b/.github/workflows/sonarcloud.yml
@@ -49,8 +49,9 @@
 on:
   push:
     branches: [ "master" ]
-  pull_request:
-    branches: [ "master" ]
+#    SONAR_TOKEN value cannot be filled in from a fork :(
+#  pull_request:
+#    branches: [ "master" ]
   workflow_dispatch:
 
 permissions:
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 7a900fb..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# 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.
-
-# .travis.yml
-dist: bionic
-
-# For maven builds
-language: java
-jdk:
-  - openjdk11
-env:
-  global:
-    - HADOOP_HOME="/"
-  jobs:
-    - GOAL="verify -B -q -ff -Dsurefire.useFile=false -Dorg.slf4j.simpleLogger.defaultLogLevel=info"
-before_install:
-  - nvm install 16.15.1 # for Web UI build
-install: true
-script:
-  # the following command line builds the project, runs the tests with coverage
-  - travis_retry mvn clean $GOAL
-  # Web UI Build
-  - pushd webui && npm install && npm test && popd
-cache:
-  directories:
-  - '$HOME/.m2/repository'
-  - 'webui/node_modules'  # for Web UI build
-
-notifications:
-  slack:
-    rooms:
-      # Apache
-      - secure: iDNSliZcKu4PW55tOe8a2jxvr1OGfqaX2sCqAmHMkAH7rvOBFwln5UBaeUY8p8BIa0P12oHLCOAtqWzHiXqe2CGVz7xyXhMHD2FzAtUIQ6GocNRXkdU5JJBXMN4XOPGMX/r38GbHRhO1ThjHr3hJIhfISjnXaOMxUoIOE6aLr/Dk9LUm6iQ2eBUajmcz4vy7BuS8Wec1DOaUIH025SRDyxzkhezJjB2JgPdLsc91amWfV04tZg+NBLZmn3DhB6Jl3dRrvABbszhBqDM2tZfV1MXuI522fzKa2tMuT2dd1BxUIkIicF+IB5tLnlKmnbRXCT7gQR0KAP5bXzdZnRY8UZo+Bbd6AlHHdIHWcNItJ2b0k4LLOVJ0MfoaKmoOJoQgkAYNPIGaDHM+q1FrhJSGtPCRKN4oaGevwWQPBZot9RY8QCU0v07p+MG9wQ8sR1nbfjF0jLQiLODSVsSNVSv2c01t6HkwmOfHe+YbTy9WkKIxQq3wMLcPT7iNcHAzsY3QQ+MSJn+xWrWcvJmfsGocVUUy20DV946NGUzpfHlXnfAxLTSOkUIj4kTXmUthIolzsRDqueoTeliIN5yeHFhQr7aX+NMrrVPba48EXRLsdQUzq6okTF6XnTDoDiLSu/AxKzItqz2lAVmpc011L6F9YIN/RQi6kK44++CvHf5kaHw=
-      # Nemo Dev
-      - secure: T6NnhwIw61J2yCzC9icgB1ez90LDcfbiJR5I5/OOCT694d0apHSWeQshTfYBoWbMa1XYiQgSHqzIzRFsTQZHDOY+6TXeP3XljUcnLij6zFw6pW6IgiJalgUso/4+wVun3QfgNDDDouuSvzov+h+MPR32UasYM/3d0MbwcDjf34asIf6aq7cbN9b4B9FU2WzNGi7wo84B4yLSxkKQHSKrm+I923UzUFza1kyuqwAHHf/XknaJvI5ZKm3Lszo4BpM1vzIcXYhahIi5yYvI8SIwYYooZUooEIYzOCZCBD5IzfKyM3XQWw5tldkMVwssQy0NL3eHdXU7+xCFSZuJ9dAqp8UMcikE/QEXG5jdLRNtjz836gfOl2U8OWXQ7vPKciPIQL/8tpltkuBGjR8Du4qW4P0B3vOcjAnwhF4WrMkGqODy6GqxBS38ZTtVsUP0OdlVUCeA4XlqB7gycTxLzcphaGCCYui6zvI7nGuR+C5+5L2o56dd26j+5L4J2fvN4ArpXoWtGIn0SJRJR+Y+ABUApZq3SDnlC+2hzIaduORRG72R6rTjJm1tEnv0XNGOgJJsnQ+M+27y9y1BPOuJL0RnDYjTw6Z5OYJ14wvNIrDgoaJ5gogwwfHH5VzzOSUCiOYrq9dqwDgiv/28r+BwJf8coFmjs/GI0U/ykDYUvGvECoA=
diff --git a/README.md b/README.md
index afb62d2..6b4cb02 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,6 @@
 
 [![Java CI with Maven](https://github.com/apache/incubator-nemo/actions/workflows/maven.yml/badge.svg)](https://github.com/apache/incubator-nemo/actions/workflows/maven.yml)
 [![Node.js CI](https://github.com/apache/incubator-nemo/actions/workflows/node.js.yml/badge.svg)](https://github.com/apache/incubator-nemo/actions/workflows/node.js.yml)
-[![Build Status](https://app.travis-ci.com/apache/incubator-nemo.svg?branch=master)](https://app.travis-ci.com/apache/incubator-nemo)
 [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=org.apache.nemo%3Anemo-project&metric=alert_status)](https://sonarcloud.io/dashboard?id=org.apache.nemo%3Anemo-project)
 
 A Data Processing System for Flexible Employment With Different Deployment Characteristics.