99 openssl_ref :
1010 required : true
1111 type : string
12+ fips_ref :
13+ required : false
14+ type : string
1215 replace_default :
1316 required : false
1417 type : boolean
2023 runs-on : ubuntu-22.04
2124 # Run inside Debian Bookworm to match packaging environment
2225 container :
23- image : debian :bookworm
26+ image : ghcr.io/aidangarske/wolfprovider-build :bookworm
2427 env :
2528 DEBIAN_FRONTEND : noninteractive
2629 timeout-minutes : 20
@@ -29,31 +32,86 @@ jobs:
2932 OPENSSL_PACKAGES_PATH : /tmp/openssl-packages
3033 WOLFPROV_PACKAGES_PATH : /tmp/wolfprov-packages
3134 steps :
32- # Install git prior to cloning to ensure we have the full repo
33- # TODO: create a docker with these pre-installed
34- - name : Install common dependencies
35+ # Download pre-built packages from debs branch
36+ - name : Checkout debs branch
37+ uses : actions/checkout@v4
38+ with :
39+ repository : wolfSSL/wolfProvider
40+ ref : debs
41+ sparse-checkout : |
42+ fips
43+ nonfips
44+ openssl
45+ sparse-checkout-cone-mode : false
46+ path : debs
47+
48+ - name : Setup packages from debs branch
3549 run : |
36- apt-get update && apt-get install -y --no-install-recommends \
37- build-essential \
38- devscripts \
39- debhelper \
40- dh-autoreconf \
41- libtool \
42- pkg-config \
43- git \
44- wget \
45- curl \
46- ca-certificates \
47- openssl \
48- dpkg-dev \
49- lintian \
50- fakeroot \
51- dh-exec \
52- equivs \
53- expect \
54- xxd \
55- bc \
56- libdistro-info-perl
50+ mkdir -p ${{ env.WOLFSSL_PACKAGES_PATH }}
51+ mkdir -p ${{ env.OPENSSL_PACKAGES_PATH }}
52+
53+ echo "Available packages in debs branch:"
54+ ls -la debs/
55+
56+ # Copy packages based on build type
57+ if [ "${{ inputs.fips_ref }}" = "FIPS" ]; then
58+ if [ -d "debs/fips" ] && [ "$(ls -A debs/fips/*.deb 2>/dev/null)" ]; then
59+ echo "Copying FIPS wolfSSL packages..."
60+ cp debs/fips/*.deb ${{ env.WOLFSSL_PACKAGES_PATH }}/
61+ else
62+ echo "ERROR: No FIPS packages found in debs branch"
63+ exit 1
64+ fi
65+ else
66+ if [ -d "debs/nonfips" ] && [ "$(ls -A debs/nonfips/*.deb 2>/dev/null)" ]; then
67+ echo "Copying non-FIPS wolfSSL packages..."
68+ cp debs/nonfips/*.deb ${{ env.WOLFSSL_PACKAGES_PATH }}/
69+ else
70+ echo "ERROR: No non-FIPS packages found in debs branch"
71+ exit 1
72+ fi
73+ fi
74+ # Copy OpenSSL packages
75+ if [ -d "debs/openssl" ] && [ "$(ls -A debs/openssl/*.deb 2>/dev/null)" ]; then
76+ echo "Copying OpenSSL packages..."
77+ cp debs/openssl/*.deb ${{ env.OPENSSL_PACKAGES_PATH }}/
78+ else
79+ echo "WARNING: No OpenSSL packages found in debs branch"
80+ fi
81+
82+ echo ""
83+ echo "Packages ready for installation:"
84+ echo "wolfSSL packages:"
85+ ls -la ${{ env.WOLFSSL_PACKAGES_PATH }}
86+ echo ""
87+ echo "OpenSSL packages:"
88+ ls -la ${{ env.OPENSSL_PACKAGES_PATH }}
89+
90+ - name : Install OpenSSL and wolfSSL packages
91+ run : |
92+ echo "Installing OpenSSL and wolfSSL packages (${{ inputs.fips_ref }})..."
93+
94+ # Install OpenSSL packages first
95+ if [ -n "$(ls -A ${{ env.OPENSSL_PACKAGES_PATH }}/*.deb 2>/dev/null)" ]; then
96+ echo "Installing OpenSSL packages..."
97+ dpkg -i ${{ env.OPENSSL_PACKAGES_PATH }}/*.deb || true
98+ fi
99+ # Install wolfSSL packages
100+ if [ -n "$(ls -A ${{ env.WOLFSSL_PACKAGES_PATH }}/*.deb 2>/dev/null)" ]; then
101+ echo "Installing wolfSSL packages..."
102+ dpkg -i ${{ env.WOLFSSL_PACKAGES_PATH }}/*.deb || true
103+ fi
104+
105+ # Fix any dependency issues
106+ apt-get install -f -y
107+
108+ echo ""
109+ echo "Packages installed successfully:"
110+ echo "OpenSSL:"
111+ dpkg -l | grep openssl || echo " No OpenSSL packages found"
112+ echo ""
113+ echo "wolfSSL:"
114+ dpkg -l | grep wolfssl || echo " No wolfSSL packages found"
57115
58116 - name : Checkout wolfProvider
59117 uses : actions/checkout@v4
@@ -72,49 +130,38 @@ jobs:
72130 git remote add upstream https://github.com/wolfSSL/wolfProvider.git || true
73131 git fetch upstream --tags --no-recurse-submodules
74132
75- - name : Install wolfSSL
76- run : |
77- $GITHUB_WORKSPACE/debian/install-wolfssl.sh --tag ${{ inputs.wolfssl_ref }} ${{ env.WOLFSSL_PACKAGES_PATH }}
78-
79- - name : Install OpenSSL
80- run : |
81- $GITHUB_WORKSPACE/debian/install-openssl.sh ${{ inputs.replace_default && '--replace-default' || '' }} ${{ env.OPENSSL_PACKAGES_PATH }}
82-
83133 - name : Install wolfProvider
84134 run : |
85- $GITHUB_WORKSPACE/debian/install-wolfprov.sh ${{ env.WOLFPROV_PACKAGES_PATH }}
135+ $GITHUB_WORKSPACE/debian/install-wolfprov.sh ${{ inputs.fips_ref == 'FIPS' && '--fips' || '' }} ${{ env.WOLFPROV_PACKAGES_PATH }}
86136
87- - name : List packages directories
137+ - name : Setup packages directory
88138 run : |
139+ mkdir -p ${{ env.WOLFPROV_PACKAGES_PATH }}
140+
141+ # Copy wolfProvider packages (built in previous step)
142+ cp $GITHUB_WORKSPACE/../libwolfprov*.deb ${{ env.WOLFPROV_PACKAGES_PATH }}
143+ cp $GITHUB_WORKSPACE/../libwolfprov*.dsc ${{ env.WOLFPROV_PACKAGES_PATH }}
144+ cp $GITHUB_WORKSPACE/../libwolfprov*.tar.gz ${{ env.WOLFPROV_PACKAGES_PATH }}
145+
146+ # Note: OpenSSL and wolfSSL packages already copied from debs branch earlier
147+
148+ printf "Listing packages directory:\n"
149+ echo "wolfProvider packages:"
89150 ls -la ${{ env.WOLFPROV_PACKAGES_PATH }}
151+ echo ""
152+ echo "wolfSSL packages:"
90153 ls -la ${{ env.WOLFSSL_PACKAGES_PATH }}
154+ echo ""
155+ echo "OpenSSL packages:"
91156 ls -la ${{ env.OPENSSL_PACKAGES_PATH }}
92157
93- - name : Save all packages to cache for use by other workflows
94- uses : actions/cache/save@v4
95- continue-on-error : true
158+ # Save all packages as artifacts for consumers
159+ - name : Upload wolfProvider packages
160+ uses : actions/upload-artifact@v4
96161 with :
162+ name : debian-packages-${{ inputs.fips_ref }}${{ inputs.replace_default && '-replace-default' || '' }}-${{ inputs.wolfssl_ref }}-${{ inputs.openssl_ref }}
97163 path : |
98164 ${{ env.WOLFSSL_PACKAGES_PATH }}
99165 ${{ env.OPENSSL_PACKAGES_PATH }}
100166 ${{ env.WOLFPROV_PACKAGES_PATH }}
101- key : openssl-wolfprov-debian-packages-${{ github.sha }}${{ inputs.replace_default && '-replace-default' || '' }}
102-
103- # Save all packages in a single artifact for consumers
104- # TODO: support debug builds
105- - name : Upload wolfProvider artifacts
106- uses : actions/upload-artifact@v4
107- continue-on-error : true
108- with :
109- name : openssl-wolfprov-debian-packages-${{ github.sha }}${{ inputs.replace_default && '-replace-default' || '' }}
110- path : |
111- ${{ env.WOLFSSL_PACKAGES_PATH }}/*.deb
112- ${{ env.WOLFSSL_PACKAGES_PATH }}/*.dsc
113- ${{ env.WOLFSSL_PACKAGES_PATH }}/*.tar.gz
114- ${{ env.OPENSSL_PACKAGES_PATH }}/*.deb
115- ${{ env.OPENSSL_PACKAGES_PATH }}/*.dsc
116- ${{ env.OPENSSL_PACKAGES_PATH }}/*.tar.gz
117- ${{ env.WOLFPROV_PACKAGES_PATH }}/*.deb
118- ${{ env.WOLFPROV_PACKAGES_PATH }}/*.dsc
119- ${{ env.WOLFPROV_PACKAGES_PATH }}/*.tar.gz
120167 retention-days : 1
0 commit comments