ฟังก์ชันต่อไปนี้โหลดได้จาก @bazel_tools//tools/build_defs/repo:http.bzl
กฎสำหรับการดาวน์โหลดไฟล์และที่เก็บถาวรผ่าน HTTP
ตั้งค่า
หากต้องการใช้กฎเหล่านี้ ให้โหลดกฎในไฟล์ WORKSPACE
ดังนี้
load(
"@bazel_tools//tools/build_defs/repo:http.bzl",
"http_archive",
"http_file",
"http_jar",
)
กฎเหล่านี้เป็นกฎ http แบบเนทีฟเวอร์ชันที่ได้รับการปรับปรุง และจะเข้ามาแทนที่กฎเนทีฟในที่สุด
http_archive
http_archive(name, add_prefix, auth_patterns, build_file, build_file_content, canonical_id, integrity, netrc, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, remote_patch_strip, remote_patches, repo_mapping, sha256, strip_prefix, type, url, urls, workspace_file, workspace_file_content)
ดาวน์โหลดที่เก็บ Bazel เป็นไฟล์ที่เก็บถาวรที่บีบอัด แตกไฟล์ และทำให้เป้าหมายพร้อมสำหรับการเชื่อมโยง
โดยรองรับนามสกุลไฟล์ต่อไปนี้ "zip"
, "jar"
, "war"
, "aar"
, "tar"
,
"tar.gz"
, "tgz"
, "tar.xz"
, "txz"
, "tar.zst"
, "tzst"
, tar.bz2
, "ar"
หรือ "deb"
ตัวอย่างเช่น สมมติว่าที่เก็บปัจจุบันมีซอร์สโค้ดสำหรับโปรแกรมแชท ซึ่งรูทที่ไดเรกทอรี ~/chat-app
ซึ่งต้องขึ้นอยู่กับไลบรารี SSL ซึ่งมีให้ใช้งานจาก http://example.com/openssl.zip ไฟล์ .zip
นี้มีโครงสร้างไดเรกทอรีต่อไปนี้
WORKSPACE
src/
openssl.cc
openssl.h
ในที่เก็บภายใน ผู้ใช้สร้างไฟล์ openssl.BUILD
ที่มีคำจำกัดความเป้าหมายต่อไปนี้
cc_library(
name = "openssl-lib",
srcs = ["src/openssl.cc"],
hdrs = ["src/openssl.h"],
)
เป้าหมายในที่เก็บ ~/chat-app
อาจขึ้นอยู่กับเป้าหมายนี้หากเพิ่มบรรทัดต่อไปนี้ไปยัง ~/chat-app/WORKSPACE
:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "my_ssl",
url = "http://example.com/openssl.zip",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
build_file = "@//:openssl.BUILD",
)
จากนั้นเป้าหมายจะระบุ @my_ssl//:openssl-lib
เป็นการอ้างอิง
Attributes
name |
Name (ชื่อ) ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้ |
add_prefix |
สตริง (ไม่บังคับ)
ไดเรกทอรีปลายทางที่เกี่ยวข้องกับไดเรกทอรีที่เก็บ ระบบจะคลายแพ็กที่เก็บถาวรลงในไดเรกทอรีนี้หลังจากใช้ "strip_prefix" (หากมี) กับเส้นทางของไฟล์ภายในที่เก็บถาวร เช่น ระบบจะคลายแพ็กไฟล์ `foo-1.2.3/src/foo.h` ที่ `bar/src/foo.h` หาก `add_prefix = "bar" และ `strip_prefix = "foo-1.2.3"` |
auth_patterns |
Dictionary: String -> String ไม่บังคับ
ชื่อโฮสต์ที่ใช้จับคู่คำสั่งกับรูปแบบการให้สิทธิ์ที่กำหนดเอง (ไม่บังคับ)
หากมีชื่อโฮสต์ของ URL อยู่ในคำสั่งนี้ ระบบจะใช้ค่าเป็นรูปแบบเมื่อสร้างส่วนหัวการให้สิทธิ์สำหรับคำขอ HTTP ซึ่งทำให้สามารถใช้แผนการให้สิทธิ์ที่กำหนดเองสำหรับผู้ให้บริการพื้นที่เก็บข้อมูลระบบคลาวด์ทั่วไปหลายราย
ปัจจุบันรูปแบบรองรับโทเค็น 2 รายการ ได้แก่ auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENคำขอ HTTP สุดท้ายจะมีส่วนหัวต่อไปนี้ Authorization: Bearer RANDOM-TOKEN |
build_file |
ป้ายกำกับ ไม่บังคับ
ไฟล์ที่จะใช้เป็นไฟล์ BUILD สำหรับที่เก็บนี้ แอตทริบิวต์นี้เป็นป้ายกำกับแบบสัมบูรณ์ (ใช้ "@//" สำหรับที่เก็บหลัก) ไฟล์ไม่จำเป็นต้องมีชื่อว่า BUILD แต่ก็สามารถใช้ชื่อได้ (เช่น BUILD.new-repo-name อาจเหมาะกับการแยกออกจากไฟล์ BUILD จริงของที่เก็บ สามารถระบุบิลด์ [build_file] หรือ "build_file_content" ก็ได้ แต่ระบุทั้ง 2 อย่างไม่ได้ |
build_file_content |
สตริง (ไม่บังคับ)
เนื้อหาสำหรับไฟล์ BUILD สำหรับที่เก็บนี้ สามารถระบุบิลด์ [build_file] หรือ "build_file_content" ก็ได้ แต่ระบุทั้ง 2 อย่างไม่ได้ |
canonical_id |
สตริง (ไม่บังคับ)
รหัส Canonical ของไฟล์ที่ดาวน์โหลด หากระบุไว้และไม่ว่างเปล่า Bazel จะไม่นำไฟล์ออกจากแคช เว้นแต่จะเพิ่มไฟล์ลงในแคชโดยคำขอที่มีรหัส Canonical เดียวกัน หากไม่ระบุหรือเว้นว่างไว้ Bazel จะใช้ URL ของไฟล์เป็นรหัส Canonical โดยค่าเริ่มต้น การทำเช่นนี้จะช่วยดักจับข้อผิดพลาดที่พบบ่อยในการอัปเดต URL โดยไม่อัปเดตแฮชด้วย ส่งผลให้บิลด์ประสบความสำเร็จในเครื่องแต่ล้มเหลวในเครื่องที่ไม่มีไฟล์ในแคช คุณปิดใช้ลักษณะการทำงานนี้ได้ด้วย --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 |
integrity |
สตริง (ไม่บังคับ)
ต้องการ checksum ในรูปแบบ Integrity ของทรัพยากรย่อยของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ checksum ของไฟล์ที่ดาวน์โหลด _การละเลยการตรวจสอบข้อผิดพลาดเนื่องจากไฟล์ระยะไกลสามารถเปลี่ยนแปลงได้_ การละเว้นช่องนี้อาจทำให้บิลด์ของคุณไม่มีปัญหาใดๆ คุณจะทำให้การพัฒนาง่ายขึ้นก็ได้ แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "sha256" ก่อนจัดส่ง |
netrc |
สตริง (ไม่บังคับ)
ตำแหน่งของไฟล์ .netrc ที่จะใช้สำหรับการตรวจสอบสิทธิ์ |
patch_args |
รายการสตริง (ไม่บังคับ)
อาร์กิวเมนต์ที่มอบให้กับเครื่องมือแพตช์ ค่าเริ่มต้นคือ -p0 แต่โดยทั่วไปจะต้องใช้ -p1 สำหรับแพตช์ที่สร้างโดย Git ถ้ามีการระบุอาร์กิวเมนต์ -p หลายรายการ อาร์กิวเมนต์สุดท้ายจะมีผล หากระบุอาร์กิวเมนต์อื่นที่ไม่ใช่ -p Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์แทนการติดตั้งใช้งานแพตช์ของ Bazel เนทีฟ เมื่อกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์และไม่ได้ระบุแอตทริบิวต์ Pat_tool จะมีการใช้ "patch" โดยจะมีผลกับไฟล์แพตช์ในแอตทริบิวต์ "patches" เท่านั้น |
patch_cmds |
รายการสตริง (ไม่บังคับ)
ลำดับคำสั่ง Bash ที่จะนำไปใช้กับ Linux/Macos หลังการใช้แพตช์ |
patch_cmds_win |
รายการสตริง (ไม่บังคับ)
ลำดับคำสั่ง Powershell ที่จะใช้กับ Windows หลังจากนำแพตช์ไปใช้ หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะเรียกใช้แพตช์_cmds ใน Windows ซึ่งต้องใช้ไบนารี Bash อยู่ |
patch_tool |
สตริง (ไม่บังคับ)
โปรแกรมแพตช์(1) ที่จะใช้ หากมีการระบุไว้ Bazel จะใช้เครื่องมือแพตช์ที่ระบุแทนการติดตั้งใช้งานแพตช์แบบเนทีฟของ Bazel |
patches |
รายการป้ายกำกับ ไม่บังคับ
รายชื่อไฟล์ที่จะนำไปใช้เป็นแพตช์หลังจากแตกไฟล์ที่เก็บถาวร โดยค่าเริ่มต้น จะใช้การใช้งานแพตช์แบบเนทีฟของ Bazel ซึ่งไม่รองรับการจับคู่ Fuzz และแพตช์ไบนารี แต่ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์หากมีการระบุแอตทริบิวต์ "patch_tool" ไว้หรือมีอาร์กิวเมนต์อื่นที่ไม่ใช่ "-p" ในแอตทริบิวต์ "patch_args" |
remote_patch_strip |
จำนวนเต็ม ไม่บังคับ
จำนวนของเครื่องหมายทับที่จะตัดออกจากชื่อไฟล์ในแพตช์ระยะไกล |
remote_patches |
Dictionary: String -> String ไม่บังคับ
แมปของ URL ของไฟล์แพตช์กับค่าความสมบูรณ์ ระบบจะนำมาใช้หลังจากแตกไฟล์ที่เก็บถาวรและก่อนนำไฟล์แพตช์จากแอตทริบิวต์ "patches" มาใช้ โดยใช้การใช้แพตช์แบบเนทีฟของ Bazel คุณสามารถระบุหมายเลขแถบแพตช์ได้ด้วย "remote_patch_strip" |
repo_mapping |
พจนานุกรม: สตริง -> สตริง ต้องระบุ
พจนานุกรมจากชื่อที่เก็บในเครื่องไปจนถึงชื่อที่เก็บส่วนกลาง การดำเนินการนี้จะช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของพื้นที่ทำงานได้สำหรับทรัพยากร Dependency ของที่เก็บนี้ เช่น รายการ `"@foo": "@bar"` จะประกาศว่าที่เก็บนี้อ้างอิง "@foo" ทุกครั้งที่ที่เก็บ (เช่น การขึ้นต่อกันของ "@foo//some:target" ควรจะแก้ไขการพึ่งพากันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target") |
sha256 |
สตริง (ไม่บังคับ)
ดาวน์โหลดไฟล์ SHA-256 ที่คาดไว้ ซึ่งต้องตรงกับ SHA-256 ของไฟล์ที่ดาวน์โหลด _การละเลย SHA-256 อาจเป็นความเสี่ยงด้านความปลอดภัย เนื่องจากไฟล์ระยะไกลอาจเปลี่ยนแปลงได้ การละเว้นช่องนี้อาจทำให้บิลด์ของคุณไม่คงที่ คุณจะพัฒนาได้ง่ายขึ้นหรือไม่ แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "integrity" ก่อนจัดส่ง |
strip_prefix |
สตริง (ไม่บังคับ)
คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยกออกมา ไฟล์ที่เก็บถาวรจำนวนมากมีไดเรกทอรีระดับบนสุดที่มีไฟล์ที่มีประโยชน์ทั้งหมดในที่เก็บถาวร แทนที่จะต้องระบุคำนำหน้านี้ซ้ำแล้วซ้ำอีกใน "build_file" คุณสามารถใช้ช่องนี้เพื่อตัดออกจากไฟล์ที่แยกออกมาได้ทั้งหมด ตัวอย่างเช่น สมมติว่าคุณใช้ "foo-lib-latest.zip" ซึ่งมีไดเรกทอรี "foo-lib-1.2.3/" ใต้ที่มีไฟล์ "WORKSPACE" และเป็นไดเรกทอรี "src/", "lib/" และ "test/" ซึ่งมีโค้ดจริงที่คุณต้องการสร้าง ระบุ "strip_prefix = "foo-lib-1.2.3"" เพื่อใช้ไดเรกทอรี "foo-lib-1.2.3" เป็นไดเรกทอรีระดับบนสุด โปรดทราบว่า หากมีไฟล์นอกไดเรกทอรีนี้ ไฟล์เหล่านั้นจะถูกลบและไม่สามารถเข้าถึงได้ (เช่น ไฟล์ใบอนุญาตระดับบนสุด) ซึ่งรวมถึงไฟล์/ไดเรกทอรีที่ขึ้นต้นด้วยคำนำหน้า แต่ไม่อยู่ในไดเรกทอรี (เช่น "foo-lib-1.2.3.release-notes") หากคำนำหน้าที่ระบุไม่ตรงกับไดเรกทอรีในที่เก็บถาวร Bazel จะส่งกลับข้อผิดพลาด |
type |
สตริง (ไม่บังคับ)
ประเภทที่เก็บถาวรของไฟล์ที่ดาวน์โหลด โดยค่าเริ่มต้น ระบบจะกำหนดประเภทที่เก็บถาวรจากนามสกุลไฟล์ของ URL หากไฟล์ไม่มีนามสกุล คุณสามารถระบุค่าใดค่าหนึ่งต่อไปนี้ได้อย่างชัดเจน "zip", `"jar"`, `"war"`, `"aar"`, `"tar"`, `"tar.gz"`, `"tgz"`, `"tar.xz"`, "txz"`, "tar.xz"`, "txz"`, "tar.xz"`,"txz"`, |
url |
สตริง (ไม่บังคับ)
URL ไปยังไฟล์ที่จะเปิดให้ Bazel ใช้งานได้ ต้องเป็น URL ของไฟล์, http หรือ https ทำตามการเปลี่ยนเส้นทางแล้ว ไม่รองรับการตรวจสอบสิทธิ์ มีความยืดหยุ่นมากขึ้นได้โดยใช้พารามิเตอร์ urls ที่ช่วยระบุ URL อื่นๆ ที่จะดึงข้อมูล |
urls |
รายการสตริง (ไม่บังคับ)
รายการ URL ของไฟล์ที่จะทำให้ใช้งานได้ใน Bazel แต่ละรายการต้องเป็น URL ไฟล์, http หรือ https ทำตามการเปลี่ยนเส้นทางแล้ว ไม่รองรับการตรวจสอบสิทธิ์ ระบบจะพยายาม URL ตามลำดับจนกว่าจะสำเร็จรายการใดรายการหนึ่ง คุณควรแสดงรายการมิเรอร์ในเครื่องก่อน หากการดาวน์โหลดทั้งหมดล้มเหลว กฎจะล้มเหลว |
workspace_file |
ป้ายกำกับ ไม่บังคับ
ไฟล์ที่จะใช้เป็นไฟล์ "WORKSPACE" สำหรับที่เก็บนี้ คุณจะระบุ "workspace_file" หรือ "workspace_file_content" อย่างใดอย่างหนึ่งก็ได้ แต่จะระบุทั้ง 2 อย่างไม่ได้ |
workspace_file_content |
สตริง (ไม่บังคับ)
เนื้อหาสำหรับไฟล์ WORKSPACE สำหรับที่เก็บนี้ คุณจะระบุ "workspace_file" หรือ "workspace_file_content" อย่างใดอย่างหนึ่งก็ได้ แต่จะระบุทั้ง 2 อย่างไม่ได้ |
http_file
http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc, repo_mapping, sha256, url, urls)
ดาวน์โหลดไฟล์จาก URL และทำให้ไฟล์นำไปใช้เป็นกลุ่มไฟล์ได้
ตัวอย่างเช่น สมมติว่าคุณต้องมีแพ็กเกจ Debian สำหรับกฎที่กำหนดเอง แพ็กเกจนี้มีให้ที่ http://example.com/package.deb จากนั้นคุณจะเพิ่มไปยังไฟล์ WORKSPACE ได้โดยทำดังนี้
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
http_file(
name = "my_deb",
url = "http://example.com/package.deb",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
)
เป้าหมายจะระบุ @my_deb//file
เป็นทรัพยากร Dependency เพื่ออ้างอิงไฟล์นี้
Attributes
name |
Name (ชื่อ) ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้ |
auth_patterns |
Dictionary: String -> String ไม่บังคับ
ชื่อโฮสต์ที่ใช้จับคู่คำสั่งกับรูปแบบการให้สิทธิ์ที่กำหนดเอง (ไม่บังคับ)
หากมีชื่อโฮสต์ของ URL อยู่ในคำสั่งนี้ ระบบจะใช้ค่าเป็นรูปแบบเมื่อสร้างส่วนหัวการให้สิทธิ์สำหรับคำขอ HTTP ซึ่งทำให้สามารถใช้แผนการให้สิทธิ์ที่กำหนดเองสำหรับผู้ให้บริการพื้นที่เก็บข้อมูลระบบคลาวด์ทั่วไปหลายราย
ปัจจุบันรูปแบบรองรับโทเค็น 2 รายการ ได้แก่ auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENคำขอ HTTP สุดท้ายจะมีส่วนหัวต่อไปนี้ Authorization: Bearer RANDOM-TOKEN |
canonical_id |
สตริง (ไม่บังคับ)
รหัส Canonical ของไฟล์ที่ดาวน์โหลด หากระบุไว้และไม่ว่างเปล่า Bazel จะไม่นำไฟล์ออกจากแคช เว้นแต่จะเพิ่มไฟล์ลงในแคชโดยคำขอที่มีรหัส Canonical เดียวกัน หากไม่ระบุหรือเว้นว่างไว้ Bazel จะใช้ URL ของไฟล์เป็นรหัส Canonical โดยค่าเริ่มต้น การทำเช่นนี้จะช่วยดักจับข้อผิดพลาดที่พบบ่อยในการอัปเดต URL โดยไม่อัปเดตแฮชด้วย ส่งผลให้บิลด์ประสบความสำเร็จในเครื่องแต่ล้มเหลวในเครื่องที่ไม่มีไฟล์ในแคช คุณปิดใช้ลักษณะการทำงานนี้ได้ด้วย --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 |
downloaded_file_path |
สตริง (ไม่บังคับ)
เส้นทางที่กําหนดให้กับไฟล์ที่ดาวน์โหลด |
executable |
บูลีน ไม่บังคับ
ไฟล์ที่ดาวน์โหลดมาควรเป็นไฟล์สั่งการหรือไม่ |
integrity |
สตริง (ไม่บังคับ)
ต้องการ checksum ในรูปแบบ Integrity ของทรัพยากรย่อยของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ checksum ของไฟล์ที่ดาวน์โหลด _การละเลยการตรวจสอบข้อผิดพลาดเนื่องจากไฟล์ระยะไกลสามารถเปลี่ยนแปลงได้_ การละเว้นช่องนี้อาจทำให้บิลด์ของคุณไม่มีปัญหาใดๆ คุณจะทำให้การพัฒนาง่ายขึ้นก็ได้ แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "sha256" ก่อนจัดส่ง |
netrc |
สตริง (ไม่บังคับ)
ตำแหน่งของไฟล์ .netrc ที่จะใช้สำหรับการตรวจสอบสิทธิ์ |
repo_mapping |
พจนานุกรม: สตริง -> สตริง ต้องระบุ
พจนานุกรมจากชื่อที่เก็บในเครื่องไปจนถึงชื่อที่เก็บส่วนกลาง การดำเนินการนี้จะช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของพื้นที่ทำงานได้สำหรับทรัพยากร Dependency ของที่เก็บนี้ เช่น รายการ `"@foo": "@bar"` จะประกาศว่าที่เก็บนี้อ้างอิง "@foo" ทุกครั้งที่ที่เก็บ (เช่น การขึ้นต่อกันของ "@foo//some:target" ควรจะแก้ไขการพึ่งพากันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target") |
sha256 |
สตริง (ไม่บังคับ)
ดาวน์โหลดไฟล์ SHA-256 ที่คาดไว้ ซึ่งต้องตรงกับ SHA-256 ของไฟล์ที่ดาวน์โหลด _การละเลย SHA-256 อาจเป็นความเสี่ยงด้านความปลอดภัย เนื่องจากไฟล์ระยะไกลอาจเปลี่ยนแปลงได้ การละเว้นช่องนี้อาจทำให้บิลด์ของคุณไม่คงที่ คุณจะพัฒนาได้ง่ายขึ้นหรือไม่ แต่ควรตั้งค่าก่อนการจัดส่ง |
url |
สตริง (ไม่บังคับ)
URL ไปยังไฟล์ที่จะเปิดให้ Bazel ใช้งานได้ ต้องเป็น URL ของไฟล์, http หรือ https ทำตามการเปลี่ยนเส้นทางแล้ว ไม่รองรับการตรวจสอบสิทธิ์ มีความยืดหยุ่นมากขึ้นได้โดยใช้พารามิเตอร์ urls ที่ช่วยระบุ URL อื่นๆ ที่จะดึงข้อมูล |
urls |
รายการสตริง (ไม่บังคับ)
รายการ URL ของไฟล์ที่จะทำให้ใช้งานได้ใน Bazel แต่ละรายการต้องเป็น URL ไฟล์, http หรือ https ทำตามการเปลี่ยนเส้นทางแล้ว ไม่รองรับการตรวจสอบสิทธิ์ ระบบจะพยายาม URL ตามลำดับจนกว่าจะสำเร็จรายการใดรายการหนึ่ง คุณควรแสดงรายการมิเรอร์ในเครื่องก่อน หากการดาวน์โหลดทั้งหมดล้มเหลว กฎจะล้มเหลว |
http_jar
http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, repo_mapping, sha256, url, urls)
ดาวน์โหลดขวดโหลจาก URL และทำให้พร้อมใช้งานใน java_import
ไฟล์ที่ดาวน์โหลดต้องมีนามสกุล .jar
ตัวอย่างเช่น สมมติว่าที่เก็บปัจจุบันมีซอร์สโค้ดสำหรับโปรแกรมแชท ซึ่งรูทที่ไดเรกทอรี ~/chat-app
ซึ่งต้องขึ้นอยู่กับไลบรารี SSL ซึ่งใช้งานได้จาก http://example.com/openssl-0.2.jar
เป้าหมายในที่เก็บ ~/chat-app
อาจขึ้นอยู่กับเป้าหมายนี้หากเพิ่มบรรทัดต่อไปนี้ไปยัง ~/chat-app/WORKSPACE
:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")
http_jar(
name = "my_ssl",
url = "http://example.com/openssl-0.2.jar",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
)
เป้าหมายจะระบุ @my_ssl//jar
เป็นทรัพยากร Dependency เพื่ออ้างอิง Jar นี้
คุณอาจอ้างอิงไฟล์ในระบบปัจจุบัน (localhost) โดยใช้ "file:///path/to/file" ได้ หากคุณใช้ระบบ Unix หากคุณใช้ Windows ให้ใช้ "file:///c:/path/to/file" ในทั้ง 2 ตัวอย่าง ให้สังเกตเครื่องหมายทับ 3 อัน (/
) โดยเครื่องหมายทับ 2 อันแรกเป็นของ file://
และเครื่องหมายทับที่ 3 เป็นของเส้นทางสัมบูรณ์ของไฟล์นั้น
Attributes
name |
Name (ชื่อ) ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้ |
auth_patterns |
Dictionary: String -> String ไม่บังคับ
ชื่อโฮสต์ที่ใช้จับคู่คำสั่งกับรูปแบบการให้สิทธิ์ที่กำหนดเอง (ไม่บังคับ)
หากมีชื่อโฮสต์ของ URL อยู่ในคำสั่งนี้ ระบบจะใช้ค่าเป็นรูปแบบเมื่อสร้างส่วนหัวการให้สิทธิ์สำหรับคำขอ HTTP ซึ่งทำให้สามารถใช้แผนการให้สิทธิ์ที่กำหนดเองสำหรับผู้ให้บริการพื้นที่เก็บข้อมูลระบบคลาวด์ทั่วไปหลายราย
ปัจจุบันรูปแบบรองรับโทเค็น 2 รายการ ได้แก่ auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENคำขอ HTTP สุดท้ายจะมีส่วนหัวต่อไปนี้ Authorization: Bearer RANDOM-TOKEN |
canonical_id |
สตริง (ไม่บังคับ)
รหัส Canonical ของไฟล์ที่ดาวน์โหลด หากระบุไว้และไม่ว่างเปล่า Bazel จะไม่นำไฟล์ออกจากแคช เว้นแต่จะเพิ่มไฟล์ลงในแคชโดยคำขอที่มีรหัส Canonical เดียวกัน หากไม่ระบุหรือเว้นว่างไว้ Bazel จะใช้ URL ของไฟล์เป็นรหัส Canonical โดยค่าเริ่มต้น การทำเช่นนี้จะช่วยดักจับข้อผิดพลาดที่พบบ่อยในการอัปเดต URL โดยไม่อัปเดตแฮชด้วย ส่งผลให้บิลด์ประสบความสำเร็จในเครื่องแต่ล้มเหลวในเครื่องที่ไม่มีไฟล์ในแคช คุณปิดใช้ลักษณะการทำงานนี้ได้ด้วย --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 |
downloaded_file_name |
สตริง (ไม่บังคับ)
ชื่อไฟล์ที่กำหนดให้กับโอ่งที่ดาวน์โหลด |
integrity |
สตริง (ไม่บังคับ)
ต้องการ checksum ในรูปแบบ Integrity ของทรัพยากรย่อยของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ checksum ของไฟล์ที่ดาวน์โหลด _การละเลยการตรวจสอบข้อผิดพลาดเนื่องจากไฟล์ระยะไกลสามารถเปลี่ยนแปลงได้_ การละเว้นช่องนี้อาจทำให้บิลด์ของคุณไม่มีปัญหาใดๆ คุณจะทำให้การพัฒนาง่ายขึ้นก็ได้ แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "sha256" ก่อนจัดส่ง |
netrc |
สตริง (ไม่บังคับ)
ตำแหน่งของไฟล์ .netrc ที่จะใช้สำหรับการตรวจสอบสิทธิ์ |
repo_mapping |
พจนานุกรม: สตริง -> สตริง ต้องระบุ
พจนานุกรมจากชื่อที่เก็บในเครื่องไปจนถึงชื่อที่เก็บส่วนกลาง การดำเนินการนี้จะช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของพื้นที่ทำงานได้สำหรับทรัพยากร Dependency ของที่เก็บนี้ เช่น รายการ `"@foo": "@bar"` จะประกาศว่าที่เก็บนี้อ้างอิง "@foo" ทุกครั้งที่ที่เก็บ (เช่น การขึ้นต่อกันของ "@foo//some:target" ควรจะแก้ไขการพึ่งพากันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target") |
sha256 |
สตริง (ไม่บังคับ)
ดาวน์โหลดไฟล์ SHA-256 ที่คาดไว้ ซึ่งต้องตรงกับ SHA-256 ของไฟล์ที่ดาวน์โหลด _การละเลย SHA-256 อาจเป็นความเสี่ยงด้านความปลอดภัย เนื่องจากไฟล์ระยะไกลอาจเปลี่ยนแปลงได้ การละเว้นช่องนี้อาจทำให้บิลด์ของคุณไม่คงที่ คุณจะพัฒนาได้ง่ายขึ้นหรือไม่ แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "integrity" ก่อนจัดส่ง |
url |
สตริง (ไม่บังคับ)
URL ไปยังไฟล์ที่จะเปิดให้ Bazel ใช้งานได้ ต้องเป็น URL ของไฟล์, http หรือ https ทำตามการเปลี่ยนเส้นทางแล้ว ไม่รองรับการตรวจสอบสิทธิ์ มีความยืดหยุ่นมากขึ้นได้โดยใช้พารามิเตอร์ urls ที่ช่วยระบุ URL อื่นๆ ที่จะดึงข้อมูล URL ต้องลงท้ายด้วย ".jar" |
urls |
รายการสตริง (ไม่บังคับ)
รายการ URL ของไฟล์ที่จะทำให้ใช้งานได้ใน Bazel แต่ละรายการต้องเป็น URL ไฟล์, http หรือ https ทำตามการเปลี่ยนเส้นทางแล้ว ไม่รองรับการตรวจสอบสิทธิ์ ระบบจะพยายาม URL ตามลำดับจนกว่าจะสำเร็จรายการใดรายการหนึ่ง คุณควรแสดงรายการมิเรอร์ในเครื่องก่อน หากการดาวน์โหลดทั้งหมดล้มเหลว กฎจะล้มเหลว URL ทั้งหมดต้องลงท้ายด้วย ".jar" |