builder/build/cnb/dependency_mirror.go
Rama main · réplica de lectura del repositorio original.
package cnb
import (
"os"
"strings"
"github.com/sirupsen/logrus"
)
// defaultOnlineMirror is the public object storage URL for CNB dependencies.
const defaultOnlineMirror = "https://buildpack.rainbond.com/cnb"
// offlineMirrorMarker is the file path inside the build pod (grdata mount)
// that an offline provisioning tool writes to switch to local file:// mirror.
var offlineMirrorMarker = "/grdata/cnb/BP_DEPENDENCY_MIRROR"
func applyDependencyMirrorAnnotation(annotations map[string]string) {
setAnnotationValue(annotations, "cnb-bp-dependency-mirror", getDependencyMirror())
}
// getDependencyMirror returns the CNB dependency mirror URL.
// Priority: env var > offline marker file > default online URL.
//
// For offline/air-gapped environments, write the mirror URL into the marker
// file at /opt/rainbond/grdata/cnb/BP_DEPENDENCY_MIRROR. Example content:
//
// file://../../../../grdata/cnb
//
// Note: Paketo resolves file:// URIs relative to the buildpack install dir
// (/cnb/buildpacks/xxx/version/), so use ../../../../ to traverse back to /.
func getDependencyMirror() string {
if v := strings.TrimSpace(os.Getenv("BP_DEPENDENCY_MIRROR")); v != "" {
return v
}
if data, err := os.ReadFile(offlineMirrorMarker); err == nil {
if m := strings.TrimSpace(string(data)); m != "" {
logrus.Infof("Using dependency mirror from %s: %s", offlineMirrorMarker, m)
return m
}
}
return defaultOnlineMirror
}