diff --git a/.github/workflows/rune_test.yml b/.github/workflows/rune_test.yml index 7aa6948d..3b4ac4b3 100644 --- a/.github/workflows/rune_test.yml +++ b/.github/workflows/rune_test.yml @@ -24,12 +24,13 @@ jobs: echo "RUNE_VERSION=$(wget -q https://raw.githubusercontent.com/alibaba/inclavare-containers/master/VERSION && cat VERSION)" >> $GITHUB_ENV && rm -f VERSION - name: Create container - run: docker rm -f rune_docker_test_ubuntu || true; - docker run -itd --privileged --rm --name=rune_docker_test_ubuntu --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04 + run: | + rune_ubuntu_test=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:$OCCLUM_VERSION-ubuntu18.04) + echo "rune_ubuntu_test=$rune_ubuntu_test" >> $GITHUB_ENV - name: Change download source of crates.io run: | - docker exec rune_docker_test_ubuntu bash -c "cat <<- EOF >/root/.cargo/config + docker exec $rune_ubuntu_test bash -c "cat <<- EOF >/root/.cargo/config [source.crates-io] registry = \"https://github.com/rust-lang/crates.io-index\" replace-with = 'ustc' @@ -38,24 +39,24 @@ jobs: EOF" - name: Build Occlum dependencies - run: docker exec rune_docker_test_ubuntu bash -c "cd /root/occlum; make submodule" + run: docker exec $rune_ubuntu_test bash -c "cd /root/occlum; make submodule" - name: Install Occlum - run: docker exec rune_docker_test_ubuntu bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make && make install" + run: docker exec $rune_ubuntu_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make && make install" - name: Install rune - run: docker exec rune_docker_test_ubuntu bash -c "wget $REPO/deb-repo/pool/main/r/rune/rune_$RUNE_VERSION-1_amd64.deb; + run: docker exec $rune_ubuntu_test bash -c "wget $REPO/deb-repo/pool/main/r/rune/rune_$RUNE_VERSION-1_amd64.deb; dpkg -i rune_$RUNE_VERSION-1_amd64.deb" - name: Install and configure docker run: | - docker exec rune_docker_test_ubuntu bash -c "apt-get update; + docker exec $rune_ubuntu_test bash -c "apt-get update; apt-get install -y apt-transport-https ca-certificates curl software-properties-common; curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -; add-apt-repository 'deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable'; apt-get install -y docker-ce" - docker exec rune_docker_test_ubuntu bash -c "mkdir /etc/docker; + docker exec $rune_ubuntu_test bash -c "mkdir /etc/docker; cat <<- EOF >/etc/docker/daemon.json { \"runtimes\":{ @@ -68,11 +69,11 @@ jobs: } EOF" - docker exec rune_docker_test_ubuntu bash -c "service docker start" + docker exec $rune_ubuntu_test bash -c "service docker start" - name: Build Occlum application image run: | - docker exec rune_docker_test_ubuntu bash -c "cat <<- EOF >/root/hello_world.c + docker exec $rune_ubuntu_test bash -c "cat <<- EOF >/root/hello_world.c "#include\" int main () { @@ -81,12 +82,12 @@ jobs: } EOF" - docker exec rune_docker_test_ubuntu bash -c "occlum-gcc -o hello_world hello_world.c; + docker exec $rune_ubuntu_test bash -c "occlum-gcc -o hello_world hello_world.c; occlum new occlum_instance && cd occlum_instance; cp ../hello_world image/bin/ && occlum build; occlum package occlum_instance.tar.gz" - docker exec rune_docker_test_ubuntu bash -c "cat <<- EOF >/root/occlum_instance/Dockerfile + docker exec $rune_ubuntu_test bash -c "cat <<- EOF >/root/occlum_instance/Dockerfile FROM centos:8.1.1911 RUN mkdir -p /run/rune WORKDIR /run/rune @@ -94,14 +95,15 @@ jobs: ENTRYPOINT [\"/bin/hello_world\"] EOF" - docker exec rune_docker_test_ubuntu bash -c "cd /root/occlum_instance; + docker exec $rune_ubuntu_test bash -c "cd /root/occlum_instance; docker build . -t occlum-app" - name: Run Occlum image - run: docker exec rune_docker_test_ubuntu bash -c "docker run -i --rm --runtime=rune -e ENCLAVE_TYPE=intelSgx -e ENCLAVE_RUNTIME_PATH=/opt/occlum/build/lib/libocclum-pal.so -e ENCLAVE_RUNTIME_ARGS=occlum_instance occlum-app" + run: docker exec $rune_ubuntu_test bash -c "docker run -i --rm --runtime=rune -e ENCLAVE_TYPE=intelSgx -e ENCLAVE_RUNTIME_PATH=/opt/occlum/build/lib/libocclum-pal.so -e ENCLAVE_RUNTIME_ARGS=occlum_instance occlum-app" - - name: Kill the container - run: docker stop rune_docker_test_ubuntu + - name: Clean the environment + if: ${{ always() }} + run: docker stop $rune_ubuntu_test Rune_with_docker_and_crictl_centos_test: runs-on: [self-hosted, SGX1-HW] @@ -115,12 +117,13 @@ jobs: submodules: true - name: Create container - run: docker rm -f rune-crictl-centos || true; - docker run -itd --privileged --rm --name=rune-crictl-centos --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum crictl-occlum:centos8.1 + run: | + rune_crictl_centos=$(docker run -itd --privileged --rm --net host --device /dev/isgx -v $GITHUB_WORKSPACE:/root/occlum crictl-occlum:centos8.1) + echo "rune_crictl_centos=$rune_crictl_centos" >> $GITHUB_ENV - name: Change download source of crates.io run: | - docker exec rune-crictl-centos bash -c "cat <<- EOF >/root/.cargo/config + docker exec $rune_crictl_centos bash -c "cat <<- EOF >/root/.cargo/config [source.crates-io] registry = \"https://github.com/rust-lang/crates.io-index\" replace-with = 'ustc' @@ -129,22 +132,22 @@ jobs: EOF" - name: Build Occlum dependencies - run: docker exec rune-crictl-centos bash -c "cd /root/occlum; make submodule" + run: docker exec $rune_crictl_centos bash -c "cd /root/occlum; make submodule" - name: Install Occlum - run: docker exec rune-crictl-centos bash -c "cd /root/occlum; + run: docker exec $rune_crictl_centos bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make && make install" - name: Get version run: echo "RUNE_VERSION=$(wget -q https://raw.githubusercontent.com/alibaba/inclavare-containers/master/VERSION && cat VERSION)" >> $GITHUB_ENV && rm -f VERSION - name: Install rune and shim-rune package - run: docker exec rune-crictl-centos bash -c "rpm -ivh $REPO/rpm-repo/rune-$RUNE_VERSION-1.el8.x86_64.rpm $REPO/rpm-repo/shim-rune-$RUNE_VERSION-1.el8.x86_64.rpm" + run: docker exec $rune_crictl_centos bash -c "rpm -ivh $REPO/rpm-repo/rune-$RUNE_VERSION-1.el8.x86_64.rpm $REPO/rpm-repo/shim-rune-$RUNE_VERSION-1.el8.x86_64.rpm" - name: Build Occlum application image - run: docker exec rune-crictl-centos bash -c "dockerd -b docker0 --storage-driver=vfs &" + run: docker exec $rune_crictl_centos bash -c "dockerd -b docker0 --storage-driver=vfs &" - docker exec rune-crictl-centos bash -c "occlum-gcc -o hello_world hello_world.c; + docker exec $rune_crictl_centos bash -c "occlum-gcc -o hello_world hello_world.c; occlum new occlum_instance && cd occlum_instance; cp ../hello_world image/bin/ && occlum build; occlum package occlum_instance.tar.gz; @@ -152,25 +155,30 @@ jobs: docker build . -t occlum-app" - name: Run Occlum application image - run: docker exec rune-crictl-centos bash -c "docker run -i --rm --runtime=rune -e ENCLAVE_TYPE=intelSgx -e ENCLAVE_RUNTIME_PATH=/opt/occlum/build/lib/libocclum-pal.so -e ENCLAVE_RUNTIME_ARGS=occlum_instance occlum-app" + run: docker exec $rune_crictl_centos bash -c "docker run -i --rm --runtime=rune -e ENCLAVE_TYPE=intelSgx -e ENCLAVE_RUNTIME_PATH=/opt/occlum/build/lib/libocclum-pal.so -e ENCLAVE_RUNTIME_ARGS=occlum_instance occlum-app" - name: Run occlum-hello pod - run: docker exec rune-crictl-centos bash -c "containerd" & + if: ${{ always() }} + run: docker exec $rune_crictl_centos bash -c "containerd" & - docker exec rune-crictl-centos bash -c "cd /root/samples && ./clean.sh; + docker exec $rune_crictl_centos bash -c "cd /root/samples && ./clean.sh; crictl run --timeout 3s hello.yaml pod.yaml && ./show.sh" - name: Run dragonwell-web pod - run: docker exec rune-crictl-centos bash -c "cd /root/samples && ./clean.sh; + if: ${{ always() }} + run: docker exec $rune_crictl_centos bash -c "cd /root/samples && ./clean.sh; crictl run --timeout 3s dragonwell.yaml pod.yaml && ./show.sh" - name: Run openjdk-web pod - run: docker exec rune-crictl-centos bash -c "cd /root/samples && ./clean.sh; + if: ${{ always() }} + run: docker exec $rune_crictl_centos bash -c "cd /root/samples && ./clean.sh; crictl run --timeout 3s jdk.yaml pod.yaml && ./show.sh" - name: Run golang-web pod - run: docker exec rune-crictl-centos bash -c "cd /root/samples && ./clean.sh; + if: ${{ always() }} + run: docker exec $rune_crictl_centos bash -c "cd /root/samples && ./clean.sh; crictl run --timeout 3s golang.yaml pod.yaml && ./show.sh" - - name: Kill the container - run: docker stop rune-crictl-centos + - name: Clean the environment + if: ${{ always() }} + run: docker stop $rune_crictl_centos