Skip to content

Commit f360b87

Browse files
authored
chore(release): setup kokoro builds (#766)
1 parent 243202d commit f360b87

4 files changed

Lines changed: 109 additions & 0 deletions

File tree

.kokoro/build.cfg

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# -*- protobuffer -*-
2+
# proto-file: google3/devtools/kokoro/config/proto/build.proto
3+
# proto-message: BuildConfig
4+
5+
build_file: "serverless/functions-framework-nodejs/.kokoro/build.sh"
6+
container_properties {
7+
docker_image: "us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/node:22.13.1-bookworm"
8+
}
9+
10+
fileset_artifacts {
11+
name: "artifacts"
12+
artifact_globs: "artifacts/*"
13+
error_if_missing: true
14+
destinations {
15+
store_attestation: true
16+
gcs {
17+
gcs_root_path: "oss-exit-gate-prod-projects-bucket/ff-releases/npm/attestations"
18+
}
19+
}
20+
generate_sbom_from_fileset: true
21+
generate_attestation: true
22+
}

.kokoro/build.sh

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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

.kokoro/release.cfg

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# -*- protobuffer -*-
2+
# proto-file: google3/devtools/kokoro/config/proto/build.proto
3+
# proto-message: BuildConfig
4+
5+
build_file: "serverless/functions-framework-nodejs/.kokoro/release.sh"
6+
container_properties {
7+
docker_image: "us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/ubuntu:22.04"
8+
}
9+
10+
fileset_artifacts {
11+
name: "manifest"
12+
artifact_globs: "manifest.json"
13+
error_if_missing: true
14+
destinations {
15+
store_attestation: false
16+
gcs {
17+
gcs_root_path: "oss-exit-gate-prod-projects-bucket/ff-releases/npm/manifests"
18+
populate_content_type: true
19+
}
20+
}
21+
generate_sbom_from_fileset: false
22+
generate_attestation: false
23+
}

.kokoro/release.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
cd "${KOKORO_ARTIFACTS_DIR}"
5+
6+
cat > manifest.json <<'EOF'
7+
{
8+
"publish_all": true
9+
}
10+
EOF

0 commit comments

Comments
 (0)