1212 BRANCH_NAME : ${{ github.head_ref || github.ref_name }}
1313 EXCLUDE_ENTERPRISE : true
1414 GO_VERSION : 1.24.6
15+ COSIGN_VERSION : 2.2.2
1516
1617jobs :
1718 webapp-test :
@@ -104,11 +105,84 @@ jobs:
104105 GO_VERSION : ${{ env.GO_VERSION }}
105106 run : cd focalboard; make dist-all
106107
108+ - name : ci/setup-cosign
109+ uses : sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2
110+ with :
111+ cosign-release : v${{ env.COSIGN_VERSION }}
112+
113+ - name : ci/sign-plugin-artifacts
114+ env :
115+ COSIGN_PRIVATE_KEY : ${{ secrets.COSIGN_PRIVATE_KEY }}
116+ COSIGN_PASSWORD : ${{ secrets.COSIGN_PASSWORD }}
117+ run : |
118+ cd focalboard
119+ echo "Signing plugin artifacts with cosign..."
120+
121+ # Sign normal distribution
122+ if [ -f dist/*.tar.gz ]; then
123+ for package in dist/*.tar.gz; do
124+ echo "Signing ${package}..."
125+ if [ -n "$COSIGN_PRIVATE_KEY" ]; then
126+ # Use private key signing if available
127+ cosign sign-blob --yes --key env://COSIGN_PRIVATE_KEY --output-signature "${package}.sig" "${package}"
128+ else
129+ echo "Warning: COSIGN_PRIVATE_KEY not available, skipping signing for ${package}"
130+ fi
131+ done
132+ fi
133+
134+ # Sign FIPS distribution
135+ if [ -f dist-fips/*.tar.gz ]; then
136+ for package in dist-fips/*.tar.gz; do
137+ echo "Signing ${package}..."
138+ if [ -n "$COSIGN_PRIVATE_KEY" ]; then
139+ # Use private key signing if available
140+ cosign sign-blob --yes --key env://COSIGN_PRIVATE_KEY --output-signature "${package}.sig" "${package}"
141+ else
142+ echo "Warning: COSIGN_PRIVATE_KEY not available, skipping signing for ${package}"
143+ fi
144+ done
145+ fi
146+
147+ echo "Artifact signing completed"
148+
149+ - name : ci/verify-signatures
150+ if : ${{ secrets.COSIGN_PRIVATE_KEY != '' && secrets.COSIGN_PUBLIC_KEY != '' }}
151+ env :
152+ COSIGN_PUBLIC_KEY : ${{ secrets.COSIGN_PUBLIC_KEY }}
153+ run : |
154+ cd focalboard
155+ echo "Verifying artifact signatures..."
156+
157+ # Verify normal distribution signatures
158+ if [ -f dist/*.tar.gz ]; then
159+ for package in dist/*.tar.gz; do
160+ if [ -f "${package}.sig" ] && [ -n "$COSIGN_PUBLIC_KEY" ]; then
161+ echo "Verifying ${package}..."
162+ cosign verify-blob --key env://COSIGN_PUBLIC_KEY --signature "${package}.sig" "${package}"
163+ fi
164+ done
165+ fi
166+
167+ # Verify FIPS distribution signatures
168+ if [ -f dist-fips/*.tar.gz ]; then
169+ for package in dist-fips/*.tar.gz; do
170+ if [ -f "${package}.sig" ] && [ -n "$COSIGN_PUBLIC_KEY" ]; then
171+ echo "Verifying ${package}..."
172+ cosign verify-blob --key env://COSIGN_PUBLIC_KEY --signature "${package}.sig" "${package}"
173+ fi
174+ done
175+ fi
176+
177+ echo "Signature verification completed"
178+
107179 - name : Upload all artifacts
108180 uses : actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.5.0
109181 with :
110182 name : all-plugin-artifacts
111183 path : |
112184 focalboard/dist/*.tar.gz
185+ focalboard/dist/*.tar.gz.sig
113186 focalboard/dist-fips/*.tar.gz
187+ focalboard/dist-fips/*.tar.gz.sig
114188 retention-days : 7
0 commit comments