diff --git a/.github/workflows/test-ci-sw.yml b/.github/workflows/test-ci-sw.yml index c08d744a..a0840b17 100644 --- a/.github/workflows/test-ci-sw.yml +++ b/.github/workflows/test-ci-sw.yml @@ -19,17 +19,37 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive - - uses: actions/setup-go@v4 - with: - go-version: 'stable' - - name: "Install deps" + - name: Retrieve the secret and decode it to a file + env: + ENCLAVE_PK_BASE64: ${{ secrets.ENCLAVE_PK_BASE64 }} run: | - sudo apt-get install -y protobuf-compiler curl - go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2 - go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.4.0 - cargo install protobuf-codegen --version "2.8.1" -f + rm sgxvm/Enclave_dev_private.pem || true + rm sgxvm/Enclave_private.pem || true + echo $ENCLAVE_PK_BASE64 | base64 --decode > sgxvm/Enclave_private.pem + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - - name: "Build SW mode" - run: SGX_MODE=SW make build - - name: "Test SW mode" - run: make test-all \ No newline at end of file + - name: Build Test Image + uses: docker/build-push-action@v4 + with: + file: ./docker/test-sw.Dockerfile + context: . + load: true + tags: test-sw + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + SGX_MODE=SW + ENCLAVE_HOME="/usr/lib/" + PRODUCTION_MODE=true + target: compile-chain + - name: Run Test Image + run: | + docker run -v $GITHUB_WORKSPACE/build:/build test-sw \ No newline at end of file diff --git a/docker/test-sw.Dockerfile b/docker/test-sw.Dockerfile new file mode 100644 index 00000000..a14defec --- /dev/null +++ b/docker/test-sw.Dockerfile @@ -0,0 +1,45 @@ +############ Install Intel SGX SDK & SGX PSW +FROM ghcr.io/sigmagmbh/sgx:2.23-jammy-554238b as base +RUN wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add - +RUN apt-get update + + +############ Compilation base +FROM base as compile-base + +RUN apt-get install -y protobuf-compiler curl + +# Install rust +ENV PATH="/usr/local/go/bin:/go/bin:/root/.cargo/bin:${PATH}" +ENV GOROOT=/usr/local/go +ENV GOPATH=/go/ + +RUN curl https://sh.rustup.rs -sSf | bash -s -- -y > /dev/null 2>&1 +RUN cargo install protobuf-codegen --version "2.8.1" -f + +# Install golang +ADD https://go.dev/dl/go1.22.5.linux-amd64.tar.gz go.linux-amd64.tar.gz +RUN tar -C /usr/local -xzf go.linux-amd64.tar.gz && rm go.linux-amd64.tar.gz +RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2 && \ + go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.4.0 > /dev/null 2>&1 + + + +############ Compile enclave & chain +FROM compile-base as compile-chain + +RUN apt-get install -y automake autoconf build-essential libtool git + +ARG SGX_MODE=SW +ENV SGX_MODE=${SGX_MODE} +ARG PRODUCTION_MODE=true +ENV PRODUCTION_MODE=${PRODUCTION_MODE} +ENV SGX_SDK="/opt/intel/sgxsdk" +ENV PATH="${PATH}:${SGX_SDK}/bin:${SGX_SDK}/bin/x64" +ENV PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SGX_SDK}/pkgconfig" +ENV LD_LIBRARY_PATH="/opt/intel/sgxsdk/sdk_libs:${LD_LIBRARY_PATH}" + +COPY . /root/chain +WORKDIR /root/chain +RUN make build +RUN make test-all \ No newline at end of file