Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge commits from main in attestation-dev branch #507

Merged
merged 4 commits into from
Nov 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions .github/workflows/configured_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#
# SPDX-License-Identifier: Apache-2.0
#

# This workflow is intended to provide an interactive way of configuring
# PDO tests. Common configuration variables can be set interactively to
# debug differences between local and github.

name: Run specific PDO tests
on:
workflow_dispatch:
inputs:
interpreter:
description: 'Interpreter'
required: true
default: 'wawaka'
type: choice
options:
- wawaka
- wawaka-opt
logLevel:
description: 'Log level'
required: true
default: 'warning'
type: choice
options:
- debug
- info
- warning
memoryConfiguration:
description: 'Interpreter memory configuration'
required: false
default: MEDIUM
type: choice
options:
- SMALL
- MEDIUM
- LARGE

jobs:
pdo_specific_tests:
name: Run specific PDO tests
runs-on: ubuntu-22.04

steps:
- name: Check out repo
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
fetch-tags: true

- name: Display branch name
run: |
echo "Building branch $GITHUB_HEAD_REF"
echo PDO VERSION is $(bin/get_version)

- name: Build and run tests
env:
PDO_INTERPRETER: ${{ inputs.interpreter }}
PDO_LOG_LEVEL: ${{ inputs.logLevel }}
PDO_MEMORY_CONFIG: ${{ inputs.memoryConfiguration }}
PDO_DEBUG_BUILD: 1
run: |
# The creation of a dummy branch is necessary for the CI tests
# to work on PRs. Based on empirical results, in the absence of
# this command, CI tests work on the main branch and on local
# branches. However, they fail as a PR is created.
git checkout -b ci-test-branch
. build/common-config.sh
make -C docker test
76 changes: 76 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#
# SPDX-License-Identifier: Apache-2.0
#

# This workflow will generate docker images for the
# current branch and push those images into the
# repository owners resources.

name: Build and Push PDO Docker Images

on:
workflow_dispatch:

# This section is commented out for the moment until a
# reasonable policy is determined for automated generation.
# The conditional execution must be evaluated as well. These
# are left here to serve as potential documentation for how
# the policy may be implemented.

# pull_request:
# types: [closed]
# branches: [main]

jobs:

docker_build:

# if: >
# github.event.name == 'workflow_dispatch' ||
# github.event.name == 'pull_request' && github.event.pull_request.merged == true
name: Build PDO Images
runs-on: ubuntu-22.04

steps:
- name: Check out repo
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
fetch-tags: true

- name: Display branch name
run: |
echo "Building branch images for $GITHUB_HEAD_REF"
echo PDO VERSION is $(bin/get_version)
echo "PDO_VERSION=$(bin/get_version)" >> $GITHUB_ENV
echo "EVENT NAME: ${{ github.event.name }}"
echo "MERGED: ${{ github.event.pull_request.merged }}"

- name: Build Docker Images
env:
PDO_INTERPRETER: wawaka
PDO_LOG_LEVEL: warning
run: |
git checkout -b ci-test-branch
. build/common-config.sh
make -C docker

- name: Login to the ghcr.io Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Tag and push the images
env:
OWNER: ${{ github.repository_owner }}
run: |
echo "Push images to ghcr.io/$OWNER"
for image in pdo_services pdo_ccf pdo_client
do
docker image tag $image:$PDO_VERSION ghcr.io/$OWNER/$image:$PDO_VERSION
docker image tag $image:$PDO_VERSION ghcr.io/$OWNER/$image:latest
docker image push --all-tags ghcr.io/$OWNER/$image
done
32 changes: 12 additions & 20 deletions .github/workflows/ci.yaml → .github/workflows/full_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,19 @@
# SPDX-License-Identifier: Apache-2.0
#

name: PDO CI
on: [pull_request, push]
# This workflow is intended to be used as a validity test for any
# pull request. That is, this is a minimal functionality that must
# be successfully executed prior to merging a pull request. Note
# that this can be overridden by adding '[skip ci]' in the commit
# name. This should not be done on the main PDO branch.

name: Run full PDO tests
on: [ pull_request ]

jobs:
pdo_ci:
pdo_full_tests:
if: "!contains(github.event.commits[0].message, '[skip ci]')"
name: PDO CI Job
name: Run full PDO tests
runs-on: ubuntu-22.04

strategy:
Expand All @@ -25,11 +32,10 @@ jobs:

- name: Display branch name
run: |
echo "Building branch $GITHUB_HEAD_REF"
echo PDO VERSION is $(bin/get_version)
echo "BRANCH is $GITHUB_HEAD_REF"

- name: Build and run tests
if: "!contains(github.event.commits[0].message, '[debug]')"
env:
PDO_INTERPRETER: ${{ matrix.interpreter }}
PDO_LOG_LEVEL: warning
Expand All @@ -41,17 +47,3 @@ jobs:
git checkout -b ci-test-branch
. build/common-config.sh
make -C docker test

- name: Build and run tests (DEBUG MODE)
if: "contains(github.event.commits[0].message, '[debug]')"
env:
PDO_INTERPRETER: ${{ matrix.interpreter }}
PDO_LOG_LEVEL: debug
run: |
# The creation of a dummy branch is necessary for the CI tests
# to work on PRs. Based on empirical results, in the absence of
# this command, CI tests work on the main branch and on local
# branches. However, they fail as a PR is created.
git checkout -b ci-test-branch
. build/common-config.sh
make -C docker test
6 changes: 3 additions & 3 deletions docker/pdo_services_base.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ FROM pdo_base:${PDO_VERSION}
ARG UBUNTU_VERSION=22.04
ARG UBUNTU_NAME=jammy

ARG SGX=2.22
ARG OPENSSL=3.0.12
ARG SGXSSL=3.0_Rev1
ARG SGX=2.25
ARG OPENSSL=3.0.14
ARG SGXSSL=3.0_Rev4

RUN echo "deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu ${UBUNTU_NAME} main" >> /etc/apt/sources.list \
&& wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add - \
Expand Down
6 changes: 6 additions & 0 deletions python/pdo/common/block_store_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,20 @@

# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
import threading
__block_manager_lock__ = threading.Lock()
__local_block_manager__ = None

def local_block_manager() :
global __local_block_manager__

__block_manager_lock__.acquire()
if __local_block_manager__ is None :
block_store_file = pconfig.shared_configuration(['StorageService','BlockStore'], "./blockstore.mdb")

__local_block_manager__ = BlockStoreManager(block_store_file, True)
__block_manager_lock__.release()

return __local_block_manager__

# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Expand Down
9 changes: 9 additions & 0 deletions python/pdo/common/key_value.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,19 @@
import logging
logger = logging.getLogger(__name__)

# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
import threading
__block_store_lock__ = threading.Lock()
__block_store_initialized__ = False

# -----------------------------------------------------------------
# -----------------------------------------------------------------
def KeyValueInitialize(block_store_file = None) :
global __block_store_initialized__

__block_store_lock__.acquire()

if __block_store_initialized__ :
raise Exception("duplicate block store initialization")

Expand All @@ -41,6 +48,8 @@ def KeyValueInitialize(block_store_file = None) :
kvs.block_store_open(block_store_file)
__block_store_initialized__ = True

__block_store_lock__.release()

# -----------------------------------------------------------------
# -----------------------------------------------------------------
def KeyValueTerminate() :
Expand Down