From fe74bb91ddc46797c1699e5681f00a92eb59c6d7 Mon Sep 17 00:00:00 2001 From: "Hui, Chunyang" Date: Mon, 19 Jul 2021 05:34:38 +0000 Subject: [PATCH] Fix deb package building error and add extra checks for version --- .../workflows/package_repo_setup_and_test.yml | 49 +++++++++++++++++-- tools/installer/deb/occlum/rules | 3 +- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/.github/workflows/package_repo_setup_and_test.yml b/.github/workflows/package_repo_setup_and_test.yml index 88772d16..ec9a3f12 100644 --- a/.github/workflows/package_repo_setup_and_test.yml +++ b/.github/workflows/package_repo_setup_and_test.yml @@ -1,13 +1,26 @@ name: Set up Package Repository and Test (Manual Trigger) # This is a manual trigger. -on: [workflow_dispatch] +on: + workflow_dispatch: + inputs: + only_test: + description: 'Only Test? ' + required: true + default: 'N' + test_version: + description: 'Test Occlum version' + required: false jobs: Package_repository_setup_and_test: runs-on: ubuntu-18.04 + if: github.event.inputs.only_test == 'N' env: TOKEN: ${{ secrets.PAT_TOKEN }} + # Map a step output to a job output + outputs: + occlum_version: ${{ steps.occlum_version.outputs.version }} steps: # This step is added to get more free space - name: Clean virtual environment @@ -36,6 +49,10 @@ jobs: cd $GITHUB_WORKSPACE/occlum echo "OCCLUM_VERSION=$(grep "Version =" src/pal/include/occlum_version.h | awk '{print $4}')" >> $GITHUB_ENV + - name: Set occlum version as output + id: occlum_version + run: echo "::set-output name=version::${{ env.OCCLUM_VERSION }}" + - name: Create ubuntu container run: docker run -itd --name=ubuntu -v $GITHUB_WORKSPACE:/root/workspace occlum/occlum:${{ env.OCCLUM_VERSION }}-ubuntu18.04 @@ -98,12 +115,21 @@ jobs: Test_deb_package: + if: ${{ always() }} needs: Package_repository_setup_and_test runs-on: ubuntu-18.04 + steps: - name: Create a clean ubuntu container run: docker run -itd --name=ubuntu ubuntu:18.04 + - name: Get occlum version from user inputs + run: echo "OCCLUM_VERSION=${{github.event.inputs.test_version}}" >> $GITHUB_ENV + + - name: Update occlum version from previous job + if: github.event.inputs.only_test == 'N' + run: echo "OCCLUM_VERSION=${{needs.Package_repository_setup_and_test.outputs.occlum_version}}" >> $GITHUB_ENV + - name: Configure sgx and occlum deb repo run: | # Set the default timezone to make tzdata work @@ -115,20 +141,33 @@ jobs: wget -qO - https://occlum.io/occlum-package-repos/debian/public.key | apt-key add -;" - name: Install sgx dependencies and occlum - run: docker exec ubuntu bash -c "apt-get update; apt-cache policy occlum; apt-get install -y occlum libsgx-uae-service libsgx-dcap-ql" + run: docker exec ubuntu bash -c "apt-get update; apt-cache policy occlum | grep -n5 ${{ env.OCCLUM_VERSION }} && apt-get install -y occlum libsgx-uae-service libsgx-dcap-ql" - name: Hello world test run: docker exec ubuntu bash -c "source /etc/profile; cd /root; wget https://raw.githubusercontent.com/occlum/occlum/master/demos/hello_c/hello_world.c; occlum-gcc -o hello_world hello_world.c; occlum new occlum-instance; cp hello_world /root/occlum-instance/image/bin; cd /root/occlum-instance && SGX_MODE=SIM occlum build; occlum run /bin/hello_world" + # If there is no match, it will return 1. + - name: Check installed version + run: docker exec ubuntu bash -c "cat /opt/occlum/include/occlum_version.h | grep -n5 ${{ env.OCCLUM_VERSION }}" + Test_rpm_package: + if: ${{ always() }} needs: Package_repository_setup_and_test runs-on: ubuntu-18.04 + steps: - name: Create clean centos container run: docker run -itd --name=centos centos:centos8.2.2004 + - name: Get occlum version from user inputs + run: echo "OCCLUM_VERSION=${{github.event.inputs.test_version}}" >> $GITHUB_ENV + + - name: Update occlum version from previous job + if: github.event.inputs.only_test == 'N' + run: echo "OCCLUM_VERSION=${{needs.Package_repository_setup_and_test.outputs.occlum_version}}" >> $GITHUB_ENV + - name: Install sgx dependencies run: docker exec centos bash -c "yum install -y wget yum-utils make jq gdb; cd /root && wget https://download.01.org/intel-sgx/sgx-linux/2.13.3/distro/centos8.2-server/sgx_rpm_local_repo.tgz; tar -xvzf sgx_rpm_local_repo.tgz; yum-config-manager --add-repo file:///root/sgx_rpm_local_repo; yum --nogpgcheck install -y libsgx-dcap-ql libsgx-epid libsgx-urts; @@ -146,8 +185,12 @@ jobs: gpgkey=https://occlum.io/occlum-package-repos/rpm-repo/RPM-GPG-KEY-rpm-sign gpgcakey=https://occlum.io/occlum-package-repos/rpm-repo/RPM-GPG-KEY-rpm-sign-ca EOF" - docker exec centos bash -c "yum --showduplicate list -y occlum; yum install -y occlum" + docker exec centos bash -c "yum --showduplicate list -y occlum | grep -n5 ${{ env.OCCLUM_VERSION }} && yum install -y occlum" - name: Hello world test run: docker exec centos bash -c "source /etc/profile; cd /root; rm -rf hello_world*; wget https://raw.githubusercontent.com/occlum/occlum/master/demos/hello_c/hello_world.c; occlum-gcc -o hello_world hello_world.c; occlum new occlum-instance; cp hello_world /root/occlum-instance/image/bin; cd /root/occlum-instance && SGX_MODE=SIM occlum build; occlum run /bin/hello_world" + + # If there is no match, it will return 1. + - name: Check installed version + run: docker exec centos bash -c "cat /opt/occlum/include/occlum_version.h | grep -n5 ${{ env.OCCLUM_VERSION }}" diff --git a/tools/installer/deb/occlum/rules b/tools/installer/deb/occlum/rules index c539bec1..18c4bf77 100755 --- a/tools/installer/deb/occlum/rules +++ b/tools/installer/deb/occlum/rules @@ -22,7 +22,8 @@ override_dh_auto_build: override_dh_install: # install Occlum - cd $(deb_build_dir)/occlum-$(VERSION)/occlum-src; OCCLUM_RELEASE_BUILD=1 OCCLUM_PREFIX=$(buildroot)/opt/occlum make install + cd $(deb_build_dir)/occlum-$(VERSION)/occlum-src; source /opt/intel/sgxsdk/environment; \ + OCCLUM_RELEASE_BUILD=1 OCCLUM_PREFIX=$(buildroot)/opt/occlum make install mkdir -p $(buildroot)/etc/profile.d cp $(deb_build_dir)/occlum-$(VERSION)/debian/{occlum-pal.sh,occlum-runtime.sh} $(buildroot)/etc/profile.d chmod 644 $(buildroot)/etc/profile.d/{occlum-pal.sh,occlum-runtime.sh}