Enhance SGX hardware mode CI test

1. Add FISH and XGBoost demo test
2. Resolve cargo network error when there is too much concurrency
3. Add git proxy for git download
This commit is contained in:
Hui, Chunyang 2020-11-27 08:31:49 +00:00 committed by Zongmin.Gu
parent 4301d6dfe6
commit 92a8db7938

@ -13,7 +13,8 @@ jobs:
run: | run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- uses: actions/checkout@v1 - name: Checkout code
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
@ -22,7 +23,7 @@ jobs:
- name: Create container - name: Create container
run: | run: |
occlum_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04) occlum_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04)
echo "occlum_test=$occlum_test" >> $GITHUB_ENV echo "occlum_test=$occlum_test" >> $GITHUB_ENV
- name: Change download source of crates.io - name: Change download source of crates.io
@ -35,10 +36,10 @@ jobs:
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\" registry = \"git://mirrors.ustc.edu.cn/crates.io-index\"
EOF" EOF"
- name: Build Dependencies - name: Build dependencies
run: docker exec $occlum_test bash -c "cd /root/occlum; make submodule" run: docker exec $occlum_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Build Source - name: Build source
run: docker exec $occlum_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=y make install" run: docker exec $occlum_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=y make install"
- name: Integration test - name: Integration test
@ -56,7 +57,8 @@ jobs:
run: | run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- uses: actions/checkout@v1 - name: Checkout code
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
@ -65,7 +67,7 @@ jobs:
- name: Create container - name: Create container
run: | run: |
language_support_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04) language_support_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04)
echo "language_support_test=$language_support_test" >> $GITHUB_ENV echo "language_support_test=$language_support_test" >> $GITHUB_ENV
- name: Configure dependency source - name: Configure dependency source
@ -78,8 +80,8 @@ jobs:
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\" registry = \"git://mirrors.ustc.edu.cn/crates.io-index\"
EOF" EOF"
- name: Build Dependencies - name: Build dependencies
run: docker exec $language_support_test bash -c "cd /root/occlum; make submodule" run: docker exec $language_support_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install - name: Make install
run: docker exec $language_support_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" run: docker exec $language_support_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install"
@ -105,7 +107,7 @@ jobs:
run: docker exec $language_support_test bash -c "cd /root/occlum/demos/embedded_mode && make; run: docker exec $language_support_test bash -c "cd /root/occlum/demos/embedded_mode && make;
make test" make test"
- name: Go Server set up and run - name: Go server set up and run
run: docker exec $language_support_test bash -c "export GO111MODULE=on && export GOPROXY=https://goproxy.cn; run: docker exec $language_support_test bash -c "export GO111MODULE=on && export GOPROXY=https://goproxy.cn;
cd /root/occlum/demos/golang/web_server && occlum-go get -u -v github.com/gin-gonic/gin; cd /root/occlum/demos/golang/web_server && occlum-go get -u -v github.com/gin-gonic/gin;
occlum-go build -o web_server ./web_server.go; occlum-go build -o web_server ./web_server.go;
@ -144,7 +146,8 @@ jobs:
run: | run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- uses: actions/checkout@v1 - name: Checkout code
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
@ -153,7 +156,7 @@ jobs:
- name: Create container - name: Create container
run: | run: |
java_support_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04) java_support_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04)
echo "java_support_test=$java_support_test" >> $GITHUB_ENV echo "java_support_test=$java_support_test" >> $GITHUB_ENV
- name: Configure dependency source - name: Configure dependency source
@ -166,8 +169,8 @@ jobs:
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\" registry = \"git://mirrors.ustc.edu.cn/crates.io-index\"
EOF" EOF"
- name: Build Dependencies - name: Build dependencies
run: docker exec $java_support_test bash -c "cd /root/occlum; make submodule" run: docker exec $java_support_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install - name: Make install
run: docker exec $java_support_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" run: docker exec $java_support_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install"
@ -190,7 +193,8 @@ jobs:
run: | run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- uses: actions/checkout@v1 - name: Checkout code
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
@ -199,7 +203,7 @@ jobs:
- name: Create container - name: Create container
run: | run: |
hello_bazel_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04) hello_bazel_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04)
echo "hello_bazel_test=$hello_bazel_test" >> $GITHUB_ENV echo "hello_bazel_test=$hello_bazel_test" >> $GITHUB_ENV
- name: Configure dependency source - name: Configure dependency source
@ -212,12 +216,17 @@ jobs:
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\" registry = \"git://mirrors.ustc.edu.cn/crates.io-index\"
EOF" EOF"
- name: Build Dependencies - name: Build dependencies
run: docker exec $hello_bazel_test bash -c "cd /root/occlum; make submodule" run: docker exec $hello_bazel_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install - name: Make install
run: docker exec $hello_bazel_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" run: docker exec $hello_bazel_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install"
- name: Config git proxy
run: |
docker exec $hello_bazel_test bash -c "git config --global http.proxy socks5://localhost:5432"
docker exec $hello_bazel_test bash -c "git config --global https.proxy socks5://localhost:5432"
- name: Install bazel - name: Install bazel
run: docker exec $hello_bazel_test bash -c "cd /root/occlum/demos/hello_bazel && wget https://github.com/bazelbuild/bazel/releases/download/3.2.0/bazel-3.2.0-installer-linux-x86_64.sh; run: docker exec $hello_bazel_test bash -c "cd /root/occlum/demos/hello_bazel && wget https://github.com/bazelbuild/bazel/releases/download/3.2.0/bazel-3.2.0-installer-linux-x86_64.sh;
chmod +x bazel-3.2.0-installer-linux-x86_64.sh; chmod +x bazel-3.2.0-installer-linux-x86_64.sh;
@ -236,14 +245,15 @@ jobs:
run: docker stop $hello_bazel_test run: docker stop $hello_bazel_test
Sqlite_test: Fish_test:
runs-on: [self-hosted, SGX1-HW] runs-on: [self-hosted, SGX1-HW]
steps: steps:
- name: Clean before running - name: Clean before running
run: | run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- uses: actions/checkout@v1 - name: Checkout code
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
@ -252,7 +262,119 @@ jobs:
- name: Create container - name: Create container
run: | run: |
sqlite_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04) fish_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04)
echo "fish_test=$fish_test" >> $GITHUB_ENV
cat $GITHUB_ENV
- name: Configure dependency source
run: |
docker exec $fish_test bash -c "cat <<- EOF >/root/.cargo/config
[source.crates-io]
registry = \"https://github.com/rust-lang/crates.io-index\"
replace-with = 'ustc'
[source.ustc]
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\"
EOF"
- name: Build dependencies
run: docker exec $fish_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install
run: docker exec $fish_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install"
- name: Config git proxy
run: |
docker exec $fish_test bash -c "git config --global http.proxy socks5://localhost:5432"
docker exec $fish_test bash -c "git config --global https.proxy socks5://localhost:5432"
- name: Build Fish dependencies
run: docker exec $fish_test bash -c "cd /root/occlum/demos/fish && ./download_and_build.sh"
- name: Run Fish test
run: docker exec $fish_test bash -c "cd /root/occlum/demos/fish && ./run_fish_test.sh"
- name: Run Fish process rlimit test
run: docker exec $fish_test bash -c "cd /root/occlum/demos/fish && ./run_per_process_config_test.sh"
- name: Clean the environment
if: ${{ always() }}
run: docker stop $fish_test
Xgboost_test:
runs-on: [self-hosted, SGX1-HW]
steps:
- name: Clean before running
run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- name: Checkout code
uses: actions/checkout@v1
with:
submodules: true
- name: Get Occlum version
run: echo "OCCLUM_VERSION=$(grep 'Version =' src/pal/include/occlum_version.h | awk '{print $4}')" >> $GITHUB_ENV;
- name: Create container
run: |
xgboost_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04)
echo "xgboost_test=$xgboost_test" >> $GITHUB_ENV
cat $GITHUB_ENV
- name: Configure dependency source
run: |
docker exec $xgboost_test bash -c "cat <<- EOF >/root/.cargo/config
[source.crates-io]
registry = \"https://github.com/rust-lang/crates.io-index\"
replace-with = 'ustc'
[source.ustc]
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\"
EOF"
- name: Build dependencies
run: docker exec $xgboost_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install
run: docker exec $xgboost_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install"
- name: Config git proxy
run: |
docker exec $xgboost_test bash -c "git config --global http.proxy socks5://localhost:5432"
docker exec $xgboost_test bash -c "git config --global https.proxy socks5://localhost:5432"
- name: Build xgboost dependencies
run: docker exec $xgboost_test bash -c "cd /root/occlum/demos/xgboost && ./download_and_build_xgboost.sh"
- name: Run xgboost test
run: docker exec $xgboost_test bash -c "cd /root/occlum/demos/xgboost && make test"
- name: Run xgboost cluster test
run: docker exec $xgboost_test bash -c "cd /root/occlum/demos/xgboost && make test-local-cluster"
- name: Clean the environment
if: ${{ always() }}
run: docker stop $xgboost_test
Sqlite_test:
runs-on: [self-hosted, SGX1-HW]
steps:
- name: Clean before running
run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- name: Checkout code
uses: actions/checkout@v1
with:
submodules: true
- name: Get Occlum version
run: echo "OCCLUM_VERSION=$(grep 'Version =' src/pal/include/occlum_version.h | awk '{print $4}')" >> $GITHUB_ENV;
- name: Create container
run: |
sqlite_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04)
echo "sqlite_test=$sqlite_test" >> $GITHUB_ENV echo "sqlite_test=$sqlite_test" >> $GITHUB_ENV
- name: Configure dependency source - name: Configure dependency source
@ -265,12 +387,17 @@ jobs:
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\" registry = \"git://mirrors.ustc.edu.cn/crates.io-index\"
EOF" EOF"
- name: Build Dependencies - name: Build dependencies
run: docker exec $sqlite_test bash -c "cd /root/occlum; make submodule" run: docker exec $sqlite_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install - name: Make install
run: docker exec $sqlite_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" run: docker exec $sqlite_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install"
- name: Config git proxy
run: |
docker exec $sqlite_test bash -c "git config --global http.proxy socks5://localhost:5432"
docker exec $sqlite_test bash -c "git config --global https.proxy socks5://localhost:5432"
- name: Build sqlite dependencies - name: Build sqlite dependencies
run: docker exec $sqlite_test bash -c "cd /root/occlum/demos/sqlite && ./download_and_build_sqlite.sh" run: docker exec $sqlite_test bash -c "cd /root/occlum/demos/sqlite && ./download_and_build_sqlite.sh"
@ -289,14 +416,15 @@ jobs:
run: | run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- uses: actions/checkout@v1 - name: Checkout code
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
- name: Create container - name: Create container
run: | run: |
docker pull occlumbackup/occlum:latest-ubuntu18.04-python docker pull occlumbackup/occlum:latest-ubuntu18.04-python
python_support_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlumbackup/occlum:latest-ubuntu18.04-python) python_support_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlumbackup/occlum:latest-ubuntu18.04-python)
echo "python_support_test=$python_support_test" >> $GITHUB_ENV echo "python_support_test=$python_support_test" >> $GITHUB_ENV
- name: Configure dependency source - name: Configure dependency source
@ -304,13 +432,13 @@ jobs:
docker exec $python_support_test bash -c "cat <<- EOF >/root/.cargo/config docker exec $python_support_test bash -c "cat <<- EOF >/root/.cargo/config
[source.crates-io] [source.crates-io]
registry = \"https://github.com/rust-lang/crates.io-index\" registry = \"https://github.com/rust-lang/crates.io-index\"
replace-with = 'ustc' replace-with = 'tuna'
[source.ustc] [source.tuna]
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\" registry = \"https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git\"
EOF" EOF"
- name: Build Dependencies - name: Build dependencies
run: docker exec $python_support_test bash -c "cd /root/occlum; make submodule" run: docker exec $python_support_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install - name: Make install
run: docker exec $python_support_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" run: docker exec $python_support_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install"
@ -333,14 +461,15 @@ jobs:
run: | run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- uses: actions/checkout@v1 - name: Checkout code
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
- name: Create container - name: Create container
run: | run: |
docker pull occlumbackup/occlum:latest-ubuntu18.04-openvino docker pull occlumbackup/occlum:latest-ubuntu18.04-openvino
openvino_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlumbackup/occlum:latest-ubuntu18.04-openvino) openvino_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlumbackup/occlum:latest-ubuntu18.04-openvino)
echo "openvino_test=$openvino_test" >> $GITHUB_ENV echo "openvino_test=$openvino_test" >> $GITHUB_ENV
- name: Configure dependency source - name: Configure dependency source
@ -353,8 +482,8 @@ jobs:
registry = \"git://mirrors.ustc.edu.cn/crates.io-index\" registry = \"git://mirrors.ustc.edu.cn/crates.io-index\"
EOF" EOF"
- name: Build Dependencies - name: Build dependencies
run: docker exec $openvino_test bash -c "cd /root/occlum; make submodule" run: docker exec $openvino_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install - name: Make install
run: docker exec $openvino_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" run: docker exec $openvino_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install"
@ -374,14 +503,15 @@ jobs:
run: | run: |
sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}"
- uses: actions/checkout@v1 - name: Checkout code
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
- name: Create container - name: Create container
run: | run: |
docker pull occlumbackup/occlum:latest-ubuntu18.04-grpc docker pull occlumbackup/occlum:latest-ubuntu18.04-grpc
grpc_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlumbackup/occlum:latest-ubuntu18.04-grpc) grpc_test=$(docker run -itd --privileged --rm --env CARGO_HTTP_MULTIPLEXING=false --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlumbackup/occlum:latest-ubuntu18.04-grpc)
echo "grpc_test=$grpc_test" >> $GITHUB_ENV echo "grpc_test=$grpc_test" >> $GITHUB_ENV
- name: Change download source of crates.io - name: Change download source of crates.io
@ -395,7 +525,7 @@ jobs:
EOF" EOF"
- name: Build dependencies - name: Build dependencies
run: docker exec $grpc_test bash -c "cd /root/occlum; make submodule" run: docker exec $grpc_test bash -c "cargo uninstall sccache || true; cd /root/occlum; make submodule"
- name: Make install - name: Make install
run: docker exec $grpc_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=y make install" run: docker exec $grpc_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=y make install"