File tree Expand file tree Collapse file tree 5 files changed +120
-0
lines changed Expand file tree Collapse file tree 5 files changed +120
-0
lines changed Original file line number Diff line number Diff line change 1+ name : " Load docker image"
2+ description : " Load docker image"
3+ inputs :
4+ image-name :
5+ required : true
6+ description : " Docker image name"
7+ image-path :
8+ required : true
9+ description : " Path to save the docker image"
10+
11+ runs :
12+ using : " composite"
13+ steps :
14+ - uses : actions/checkout@v3
15+ - name : Download artifact
16+ uses : actions/download-artifact@v3
17+ with :
18+ name : ${{ inputs.image-name }}
19+ path : ${{ inputs.image-path }}
20+ - name : Load image
21+ run : docker load --input ${{ inputs.image-path }}/${{ inputs.image-name }}.tar
22+ shell : bash
Original file line number Diff line number Diff line change 1+ name : Continuous Integration
2+
3+ on :
4+ pull_request :
5+ workflow_dispatch :
6+ inputs :
7+ trigger_docker :
8+ description : " 'parsec-openssl-provider-test' if docker build should be triggered"
9+ required : false
10+ default : " "
11+ push :
12+
13+ env :
14+ TEST_DOCKER_IMAGE : ${{ github.event.inputs.trigger_docker || 'ghcr.io/parallaxsecond/parsec-openssl-provider-test' }}
15+
16+ jobs :
17+ build-and-export-test-docker :
18+ runs-on : ubuntu-latest
19+ # For running this job we need to manually trigger the CI and set the variable
20+ if : ${{ github.event.inputs.trigger_docker == 'parsec-openssl-provider-test' }}
21+ steps :
22+ - uses : actions/checkout@v3
23+ - name : Build the docker container
24+ run : pushd tests/docker_image && docker build -t parsec-openssl-provider-test -f parsec-openssl-provider-test.Dockerfile . && popd
25+ - name : Export the docker container
26+ run : docker save parsec-openssl-provider-test > /tmp/parsec-openssl-provider-test.tar
27+ - name : Upload artifact
28+ uses : actions/upload-artifact@v3
29+ with :
30+ name : parsec-openssl-provider-test
31+ path : /tmp/parsec-openssl-provider-test.tar
32+
33+ build-and-test :
34+ name : Build Parsec OpenSSL Provider and run tests
35+ runs-on : ubuntu-latest
36+ if : ${{ always() }}
37+ needs : [build-and-export-test-docker]
38+ steps :
39+ - uses : actions/checkout@v3
40+ - name : Load Docker
41+ uses : ./.github/actions/load_docker
42+ if : ${{ env.TEST_DOCKER_IMAGE == 'parsec-openssl-provider-test' }}
43+ with :
44+ image-name : " ${{ env.TEST_DOCKER_IMAGE }}"
45+ image-path : " /tmp"
46+ - name : Run the container to execute the test script
47+ run :
48+ docker run -v $(pwd):/tmp/parsec-openssl-provider -w /tmp/parsec-openssl-provider -t ${{ env.TEST_DOCKER_IMAGE }} ./ci.sh
Original file line number Diff line number Diff line change 1+ /target
2+ Cargo.lock
3+ .vscode
4+ * /Cargo.lock
5+ * /target
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+
3+ # Copyright 2023 Contributors to the Parsec project.
4+ # SPDX-License-Identifier: Apache-2.0
5+
6+ set -ex
7+
8+ # Build parsec provider shared library
9+ pushd parsec-openssl-provider-shared/ &&
10+ cargo build
11+ popd
12+
13+ # Try loading the build parsec provider
14+ openssl version
15+ openssl list -providers -provider-path ./target/debug/ -provider libparsec_openssl_provider_shared
Original file line number Diff line number Diff line change 1+ # Copyright 2023 Contributors to the Parsec project.
2+ # SPDX-License-Identifier: Apache-2.0
3+ FROM ubuntu:22.04
4+
5+ RUN apt-get update && apt-get -y upgrade
6+ RUN apt install -y autoconf-archive libcmocka0 libcmocka-dev procps
7+ RUN apt install -y iproute2 build-essential git pkg-config gcc libtool automake libssl-dev uthash-dev doxygen libjson-c-dev
8+ RUN apt install -y --fix-missing wget python3 cmake clang
9+ RUN apt install -y libini-config-dev libcurl4-openssl-dev curl libgcc1
10+ RUN apt install -y python3-distutils libclang-11-dev protobuf-compiler python3-pip
11+ RUN apt install -y libgcrypt20-dev uuid-dev
12+ RUN apt install -y libssl-dev git gcc openssl
13+
14+ # Setup git config
15+ RUN git config --global user.email "some@email.com"
16+ RUN git config --global user.name "Parsec Team"
17+
18+ WORKDIR /tmp
19+
20+ # Install Rust toolchain for all users
21+ # This way of installing allows all users to call the same binaries, but non-root
22+ # users cannot modify the toolchains or install new ones.
23+ # See: https://github.com/rust-lang/rustup/issues/1085
24+ ENV RUSTUP_HOME /opt/rust
25+ ENV CARGO_HOME /opt/rust
26+ RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path
27+ ENV PATH="/root/.cargo/bin:/opt/rust/bin:${PATH}"
28+
29+ # For running tests Parsec is configured with the socket in /tmp/
30+ ENV PARSEC_SERVICE_ENDPOINT="unix:/tmp/parsec.sock"
You can’t perform that action at this time.
0 commit comments