|
| 1 | +#!/bin/bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +### cd to Git on Borg folder in Kokoro |
| 5 | +cd "$KOKORO_ARTIFACTS_DIR/git/serverless/functions-framework-nodejs" |
| 6 | + |
| 7 | +### Configure Airlock |
| 8 | +# APT |
| 9 | +rm -f /etc/apt/sources.list.d/* /etc/apt/sources.list |
| 10 | +echo 'deb https://us-apt.pkg.dev/remote/artifact-foundry-prod/debian-3p-remote-bookworm bookworm main' | \ |
| 11 | + tee -a /etc/apt/sources.list.d/artifact-registry.list |
| 12 | + |
| 13 | +# NPM |
| 14 | +cat > .npmrc <<EOF |
| 15 | +registry=https://us-npm.pkg.dev/artifact-foundry-prod/npm-3p-trusted/ |
| 16 | +//us-npm.pkg.dev/artifact-foundry-prod/npm-3p-trusted/:always-auth=true |
| 17 | +EOF |
| 18 | +cp .npmrc "$HOME/.npmrc" |
| 19 | + |
| 20 | +### Build all package.json |
| 21 | +ARTIFACTS="${KOKORO_ARTIFACTS_DIR}/artifacts" |
| 22 | +mkdir "${ARTIFACTS}" |
| 23 | + |
| 24 | +readarray -t package_jsons < <(find "." -type d -name "node_modules" -prune -o -name "package.json" -print) |
| 25 | +for package_file in "${package_jsons[@]}"; do |
| 26 | + echo "Building package ${package_file}" |
| 27 | + package_dir="$(dirname "${package_file}")" |
| 28 | + pushd "${package_dir}" |
| 29 | + npm ci |
| 30 | + # npm pack and npm publish needs to be distinct steps to ensure the |
| 31 | + # artifacts will be stored locally for attestation generation. |
| 32 | + npm pack --pack-destination="${ARTIFACTS}" |
| 33 | + popd |
| 34 | +done |
| 35 | + |
| 36 | +### Authenticate to OSS Exit Gate |
| 37 | +# Replace default registry with OSS Exit Gate |
| 38 | +cat > .npmrc <<EOF |
| 39 | +registry=https://us-npm.pkg.dev/oss-exit-gate-prod/ff-releases--npm/ |
| 40 | +//us-npm.pkg.dev/oss-exit-gate-prod/ff-releases--npm/:always-auth=true |
| 41 | +EOF |
| 42 | + |
| 43 | +cp .npmrc "$HOME/.npmrc" |
| 44 | + |
| 45 | +npx google-artifactregistry-auth |
| 46 | + |
| 47 | +### Publish all packages |
| 48 | +echo "Publish package" |
| 49 | +for file in "${ARTIFACTS}"/*.tgz; do |
| 50 | + if [[ -e "${file}" ]]; then |
| 51 | + echo "Publishing TGZ: ${file}" |
| 52 | + npm publish "${file}" |
| 53 | + fi |
| 54 | +done |
0 commit comments