กฎที่เก็บ HTTP

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ฟังก์ชันต่อไปนี้สามารถโหลดได้จาก @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_file_integrity, remote_file_urls, 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 เป็นทรัพยากร Dependency

Attributes

name ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้

add_prefix String; ไม่บังคับ

ไดเรกทอรีปลายทางที่สัมพันธ์กับไดเรกทอรีที่เก็บ ระบบจะคลายการแพคข้อมูลที่เก็บถาวรลงในไดเรกทอรีนี้หลังจากใช้ "strip_prefix" (หากมี) ไปยังเส้นทางไฟล์ภายในที่เก็บถาวร ตัวอย่างเช่น ไฟล์ ระบบจะคลายแพ็ก "foo-1.2.3/src/foo.h" ที่ "bar/src/foo.h" หาก `add_prefix = "bar"` และ `strip_prefix = "foo-1.2.3"`

auth_patterns พจนานุกรม: สตริง -> String; ไม่บังคับ

ไม่บังคับให้แมปชื่อโฮสต์กับรูปแบบการให้สิทธิ์ที่กำหนดเอง หากมีชื่อโฮสต์ของ URL ในคำสั่งนี้ ระบบจะใช้ค่านี้เป็นรูปแบบเมื่อ สร้างส่วนหัวการให้สิทธิ์สำหรับคำขอ HTTP ซึ่งทำให้สามารถใช้ตัวเลือกที่กำหนดเอง แผนการให้สิทธิ์ซึ่งใช้ในผู้ให้บริการพื้นที่เก็บข้อมูลระบบคลาวด์ทั่วไปหลายราย ขณะนี้รูปแบบรองรับโทเค็น 2 รายการ ได้แก่ <login> และ <password> ซึ่งแทนที่ด้วยค่าที่เทียบเท่า ในไฟล์ netrc สำหรับชื่อโฮสต์เดียวกัน หลังจากฟอร์แมต ระบบจะตั้งค่าผลลัพธ์ เป็นค่าสำหรับช่อง Authorization ของคำขอ HTTP ตัวอย่างแอตทริบิวต์และ netrc สำหรับการดาวน์โหลด http ไปยัง API ที่เปิดใช้ oauth2 โดยใช้โทเค็นสำหรับผู้ถือ

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 อย่างใดอย่างหนึ่งเท่านั้น

build_file_content String; ไม่บังคับ

เนื้อหาของไฟล์ BUILD สำหรับที่เก็บนี้ สามารถระบุbuild_file หรือbuild_file_content อย่างใดอย่างหนึ่งเท่านั้น

canonical_id String; ไม่บังคับ

รหัส Canonical ของไฟล์ที่ดาวน์โหลด หากระบุไว้และไม่ว่างเปล่า Bazel จะไม่นำไฟล์ออกจากแคช เว้นแต่ว่า ถูกเพิ่มลงในแคชโดยคำขอที่มีรหัส Canonical เดียวกัน หากไม่ระบุหรือเว้นว่างไว้ โดยค่าเริ่มต้น Bazel จะใช้ URL ของไฟล์เป็น รหัส Canonical วิธีนี้ช่วยตรวจจับข้อผิดพลาดทั่วไปของการอัปเดต URL โดยไม่มี อัปเดตแฮชด้วย ซึ่งทำให้บิลด์ที่ประสบความสำเร็จในเครื่องแต่ล้มเหลว ที่ไม่มีไฟล์ในแคช คุณสามารถปิดการทำงานในลักษณะนี้ได้ด้วย --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0.

integrity String; ไม่บังคับ

checksum ที่คาดไว้ในรูปแบบความสมบูรณ์ของทรัพยากรย่อยของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ checksum ของไฟล์ที่ดาวน์โหลด _มีความเสี่ยงด้านความปลอดภัย ที่จะละเว้นการตรวจสอบข้อผิดพลาด เนื่องจากไฟล์ระยะไกลอาจเปลี่ยนแปลงได้_ จะทำให้บิลด์ของคุณไม่ใช่สุญญากาศ คุณเลือกได้ว่าจะให้การพัฒนา ง่ายกว่า แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "sha256" ก่อนจัดส่ง

netrc String; ไม่บังคับ

ตำแหน่งของไฟล์ .netrc ที่จะใช้สำหรับการตรวจสอบสิทธิ์

patch_args รายการสตริง ไม่บังคับ

อาร์กิวเมนต์ที่ให้ในเครื่องมือแพตช์ ค่าเริ่มต้นจะเป็น -p0 แต่โดยปกติแล้วจะต้องใช้ -p1 สำหรับแพตช์ที่สร้างโดย git หากระบุอาร์กิวเมนต์ -p หลายรายการ อาร์กิวเมนต์สุดท้ายจะมีผล หากระบุอาร์กิวเมนต์อื่นที่ไม่ใช่ -p ไว้ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์แทนการใช้งานแพตช์ของ Bazel เมื่อกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์และไม่ได้ระบุแอตทริบิวต์ Patch_tool ระบบจะใช้ "patch" การดำเนินการนี้จะมีผลกับไฟล์แพตช์ในแอตทริบิวต์ "patches" เท่านั้น

patch_cmds รายการสตริง ไม่บังคับ

ลำดับของคำสั่ง Bash ที่จะใช้กับ Linux/Macos หลังจากใช้แพตช์

patch_cmds_win รายการสตริง ไม่บังคับ

ลำดับของคำสั่ง Powershell ที่จะนำไปใช้ใน Windows หลังจากใช้แพตช์ หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะดำเนินการ Patch_cmds ใน Windows ซึ่งต้องมีไบนารีของ Bash

patch_tool String; ไม่บังคับ

โปรแกรมแพตช์(1) ที่จะใช้ หากระบุไว้ Bazel จะใช้เครื่องมือแพตช์ที่ระบุแทนการติดตั้งใช้งานแพตช์ของ Bazel เนทีฟ

patches รายการป้ายกำกับ ไม่บังคับ

รายการไฟล์ที่จะใช้เป็นแพตช์หลังจากแตกไฟล์ที่เก็บถาวร โดยค่าเริ่มต้น โมเดลจะใช้การติดตั้งแพตช์ของ Bazel ซึ่งไม่รองรับการจับคู่ Fuzz Match และแพตช์ไบนารี แต่ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์หากมีการระบุแอตทริบิวต์ "patch_tool" หรือมีอาร์กิวเมนต์อื่นที่ไม่ใช่ "-p" ในแอตทริบิวต์ "patch_args"

remote_file_integrity พจนานุกรม: สตริง -> String; ไม่บังคับ

การแมปเส้นทางที่เกี่ยวข้องของไฟล์ (คีย์) กับค่าความสมบูรณ์ (ค่า) โดยเส้นทางแบบสัมพัทธ์เหล่านี้ควรแมปกับไฟล์ (คีย์) ในแอตทริบิวต์ "remote_file_urls"

remote_file_urls พจนานุกรม: สตริง -> รายการสตริง ไม่บังคับ

การแมปเส้นทางแบบสัมพัทธ์ (คีย์) ไปยังรายการ URL (ค่า) ที่จะดาวน์โหลดและทำให้ใช้งานได้เป็นไฟล์ที่วางซ้อนในที่เก็บ ซึ่งจะเป็นประโยชน์เมื่อคุณต้องการเพิ่มไฟล์ WORKSPACE หรือ BUILD.bazel บนที่เก็บที่มีอยู่ ระบบจะดาวน์โหลดไฟล์ก่อนใช้แพตช์ในแอตทริบิวต์ "แพตช์" และรายการ URL ทั้งหมดควรเหมือนกับไฟล์เดียวกันที่เป็นไปได้ ระบบจะลองใช้ URL ตามลำดับจนกว่าจะสำเร็จ

remote_patch_strip จำนวนเต็ม ไม่บังคับ

จำนวนสแลชนำหน้าที่จะนำออกจากชื่อไฟล์ในแพตช์ระยะไกล

remote_patches พจนานุกรม: สตริง -> String; ไม่บังคับ

แมป URL ของไฟล์แพตช์กับค่าความสมบูรณ์ ระบบจะใช้ค่าดังกล่าวหลังจากแยกที่เก็บถาวรและก่อนใช้ไฟล์แพตช์จากแอตทริบิวต์ "patches" โดยใช้การติดตั้งใช้งานแพตช์ Bazel เนทีฟ คุณระบุหมายเลขแถบแพตช์ได้ด้วย "remote_patch_strip"

repo_mapping พจนานุกรม: สตริง -> String; ต้องระบุ

พจนานุกรมจากชื่อที่เก็บในเครื่องเป็นชื่อที่เก็บส่วนกลาง การดำเนินการนี้ช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของที่เก็บนี้ได้

เช่น รายการ `"@foo": "@bar"` จะประกาศว่า ไม่ว่าเมื่อใดที่เก็บนี้จะขึ้นอยู่กับ "@foo" (เช่น การพึ่งพา "@foo//some:target" ควรแก้ไขการขึ้นต่อกันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target`)

sha256 String; ไม่บังคับ

SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ SHA-256 ของไฟล์ที่ดาวน์โหลด _มีความเสี่ยงด้านความปลอดภัย ที่จะละเว้น SHA-256 เพราะไฟล์ระยะไกลสามารถเปลี่ยนแปลงได้_ จะทำให้บิลด์ของคุณไม่ใช่สุญญากาศ คุณเลือกได้ว่าจะให้การพัฒนา ง่ายกว่า แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "ความสมบูรณ์" ก่อนจัดส่ง

strip_prefix String; ไม่บังคับ

คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยก ที่เก็บถาวรจำนวนมากมีไดเรกทอรีระดับบนสุดที่ประกอบไปด้วย ในที่เก็บถาวร แทนที่จะต้องระบุคำนำหน้านี้ซ้ำแล้วซ้ำอีก ใน "build_file" ฟิลด์นี้สามารถใช้เพื่อตัดออกจาก ไฟล์ที่แยกแล้ว ตัวอย่างเช่น สมมติว่าคุณใช้ "foo-lib- วันล่าสุด.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 String; ไม่บังคับ

ประเภทที่เก็บถาวรของไฟล์ที่ดาวน์โหลด โดยค่าเริ่มต้น ประเภทที่เก็บถาวรจะพิจารณาจากนามสกุลไฟล์ของ URL หากไฟล์ไม่มีนามสกุล คุณสามารถระบุ ต่อไปนี้: `"zip"`, `"jar"`, `"war"`, `"aar"`, `"tar"`, `"tar.gz"`, `"tgz"`, `"tar.xz"`, `"txz"`, `"tar.zst"`, `"tzst"`, `"tar.bz2"`, `"ar"` หรือ `"deb"`

url String; ไม่บังคับ

URL ไปยังไฟล์ที่จะทำให้ Bazel ใช้งานได้ URL นี้ต้องเป็นไฟล์, http หรือ https มีการเปลี่ยนเส้นทาง ไม่รองรับการตรวจสอบสิทธิ์ พารามิเตอร์ url ที่ช่วยให้ เพื่อระบุ URL ทางเลือกที่จะดึงข้อมูล

urls รายการสตริง ไม่บังคับ

รายการ URL ไปยังไฟล์ที่จะทำให้ Bazel ใช้งานได้ แต่ละรายการต้องเป็น URL ของไฟล์, http หรือ https มีการเปลี่ยนเส้นทาง ไม่รองรับการตรวจสอบสิทธิ์ จะมีการพยายามใช้ URL ตามลำดับจนกว่าจะสำเร็จ คุณจึงควรแสดงรายการมิเรอร์ในเครื่องก่อน หากดาวน์โหลดทั้งหมดไม่สำเร็จ กฎก็จะล้มเหลว

workspace_file ป้ายกำกับ ไม่บังคับ

ไฟล์ที่จะใช้เป็นไฟล์ "WORKSPACE" สำหรับที่เก็บนี้ ต้องระบุ "workspace_file" หรือ "workspace_file_content" หรือจะระบุทั้ง 2 อย่างไม่ได้

workspace_file_content String; ไม่บังคับ

เนื้อหาของไฟล์ 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 ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้

auth_patterns พจนานุกรม: สตริง -> String; ไม่บังคับ

ไม่บังคับให้แมปชื่อโฮสต์กับรูปแบบการให้สิทธิ์ที่กำหนดเอง หากมีชื่อโฮสต์ของ URL ในคำสั่งนี้ ระบบจะใช้ค่านี้เป็นรูปแบบเมื่อ สร้างส่วนหัวการให้สิทธิ์สำหรับคำขอ HTTP ซึ่งทำให้สามารถใช้ตัวเลือกที่กำหนดเอง แผนการให้สิทธิ์ซึ่งใช้ในผู้ให้บริการพื้นที่เก็บข้อมูลระบบคลาวด์ทั่วไปหลายราย ขณะนี้รูปแบบรองรับโทเค็น 2 รายการ ได้แก่ <login> และ <password> ซึ่งแทนที่ด้วยค่าที่เทียบเท่า ในไฟล์ netrc สำหรับชื่อโฮสต์เดียวกัน หลังจากฟอร์แมต ระบบจะตั้งค่าผลลัพธ์ เป็นค่าสำหรับช่อง Authorization ของคำขอ HTTP ตัวอย่างแอตทริบิวต์และ netrc สำหรับการดาวน์โหลด http ไปยัง API ที่เปิดใช้ oauth2 โดยใช้โทเค็นสำหรับผู้ถือ

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc: วันที่
machine storage.cloudprovider.com
        password RANDOM-TOKEN
คำขอ HTTP สุดท้ายจะมีส่วนหัวดังต่อไปนี้
Authorization: Bearer RANDOM-TOKEN

canonical_id String; ไม่บังคับ

รหัส Canonical ของไฟล์ที่ดาวน์โหลด หากระบุไว้และไม่ว่างเปล่า Bazel จะไม่นำไฟล์ออกจากแคช เว้นแต่ว่า ถูกเพิ่มลงในแคชโดยคำขอที่มีรหัส Canonical เดียวกัน หากไม่ระบุหรือเว้นว่างไว้ โดยค่าเริ่มต้น Bazel จะใช้ URL ของไฟล์เป็น รหัส Canonical วิธีนี้ช่วยตรวจจับข้อผิดพลาดทั่วไปของการอัปเดต URL โดยไม่มี อัปเดตแฮชด้วย ซึ่งทำให้บิลด์ที่ประสบความสำเร็จในเครื่องแต่ล้มเหลว ที่ไม่มีไฟล์ในแคช คุณสามารถปิดการทำงานในลักษณะนี้ได้ด้วย --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0.

downloaded_file_path String; ไม่บังคับ

เส้นทางที่กำหนดให้กับไฟล์ที่ดาวน์โหลด

executable บูลีน ไม่บังคับ

ไฟล์ที่ดาวน์โหลดมาควรเป็นไฟล์ปฏิบัติการหรือไม่

integrity String; ไม่บังคับ

checksum ที่คาดไว้ในรูปแบบความสมบูรณ์ของทรัพยากรย่อยของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ checksum ของไฟล์ที่ดาวน์โหลด _มีความเสี่ยงด้านความปลอดภัย ที่จะละเว้นการตรวจสอบข้อผิดพลาด เนื่องจากไฟล์ระยะไกลอาจเปลี่ยนแปลงได้_ จะทำให้บิลด์ของคุณไม่ใช่สุญญากาศ คุณเลือกได้ว่าจะให้การพัฒนา ง่ายกว่า แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "sha256" ก่อนจัดส่ง

netrc String; ไม่บังคับ

ตำแหน่งของไฟล์ .netrc ที่จะใช้สำหรับการตรวจสอบสิทธิ์

repo_mapping พจนานุกรม: สตริง -> String; ต้องระบุ

พจนานุกรมจากชื่อที่เก็บในเครื่องเป็นชื่อที่เก็บส่วนกลาง การดำเนินการนี้ช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของที่เก็บนี้ได้

เช่น รายการ `"@foo": "@bar"` จะประกาศว่า ไม่ว่าเมื่อใดที่เก็บนี้จะขึ้นอยู่กับ "@foo" (เช่น การพึ่งพา "@foo//some:target" ควรแก้ไขการขึ้นต่อกันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target`)

sha256 String; ไม่บังคับ

SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ SHA-256 ของไฟล์ที่ดาวน์โหลด _มีความเสี่ยงด้านความปลอดภัย ที่จะละเว้น SHA-256 เพราะไฟล์ระยะไกลสามารถเปลี่ยนแปลงได้_ จะทำให้บิลด์ของคุณไม่ใช่สุญญากาศ คุณเลือกได้ว่าจะให้การพัฒนา แต่ควรตั้งค่าก่อนจัดส่ง

url String; ไม่บังคับ

URL ไปยังไฟล์ที่จะทำให้ Bazel ใช้งานได้ URL นี้ต้องเป็นไฟล์, http หรือ https มีการเปลี่ยนเส้นทาง ไม่รองรับการตรวจสอบสิทธิ์ พารามิเตอร์ url ที่ช่วยให้ เพื่อระบุ 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)

ดาวน์โหลด Jar จาก 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 ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้

auth_patterns พจนานุกรม: สตริง -> String; ไม่บังคับ

ไม่บังคับให้แมปชื่อโฮสต์กับรูปแบบการให้สิทธิ์ที่กำหนดเอง หากมีชื่อโฮสต์ของ URL ในคำสั่งนี้ ระบบจะใช้ค่านี้เป็นรูปแบบเมื่อ สร้างส่วนหัวการให้สิทธิ์สำหรับคำขอ HTTP ซึ่งทำให้สามารถใช้ตัวเลือกที่กำหนดเอง แผนการให้สิทธิ์ซึ่งใช้ในผู้ให้บริการพื้นที่เก็บข้อมูลระบบคลาวด์ทั่วไปหลายราย ขณะนี้รูปแบบรองรับโทเค็น 2 รายการ ได้แก่ <login> และ <password> ซึ่งแทนที่ด้วยค่าที่เทียบเท่า ในไฟล์ netrc สำหรับชื่อโฮสต์เดียวกัน หลังจากฟอร์แมต ระบบจะตั้งค่าผลลัพธ์ เป็นค่าสำหรับช่อง Authorization ของคำขอ HTTP ตัวอย่างแอตทริบิวต์และ netrc สำหรับการดาวน์โหลด http ไปยัง API ที่เปิดใช้ oauth2 โดยใช้โทเค็นสำหรับผู้ถือ

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc: วันที่
machine storage.cloudprovider.com
        password RANDOM-TOKEN
คำขอ HTTP สุดท้ายจะมีส่วนหัวดังต่อไปนี้
Authorization: Bearer RANDOM-TOKEN

canonical_id String; ไม่บังคับ

รหัส Canonical ของไฟล์ที่ดาวน์โหลด หากระบุไว้และไม่ว่างเปล่า Bazel จะไม่นำไฟล์ออกจากแคช เว้นแต่ว่า ถูกเพิ่มลงในแคชโดยคำขอที่มีรหัส Canonical เดียวกัน หากไม่ระบุหรือเว้นว่างไว้ โดยค่าเริ่มต้น Bazel จะใช้ URL ของไฟล์เป็น รหัส Canonical วิธีนี้ช่วยตรวจจับข้อผิดพลาดทั่วไปของการอัปเดต URL โดยไม่มี อัปเดตแฮชด้วย ซึ่งทำให้บิลด์ที่ประสบความสำเร็จในเครื่องแต่ล้มเหลว ที่ไม่มีไฟล์ในแคช คุณสามารถปิดการทำงานในลักษณะนี้ได้ด้วย --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0.

downloaded_file_name String; ไม่บังคับ

ชื่อไฟล์ที่กำหนดให้กับ Jar ที่ดาวน์โหลด

integrity String; ไม่บังคับ

checksum ที่คาดไว้ในรูปแบบความสมบูรณ์ของทรัพยากรย่อยของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ checksum ของไฟล์ที่ดาวน์โหลด _มีความเสี่ยงด้านความปลอดภัย ที่จะละเว้นการตรวจสอบข้อผิดพลาด เนื่องจากไฟล์ระยะไกลอาจเปลี่ยนแปลงได้_ จะทำให้บิลด์ของคุณไม่ใช่สุญญากาศ คุณเลือกได้ว่าจะให้การพัฒนา ง่ายกว่า แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "sha256" ก่อนจัดส่ง

netrc String; ไม่บังคับ

ตำแหน่งของไฟล์ .netrc ที่จะใช้สำหรับการตรวจสอบสิทธิ์

repo_mapping พจนานุกรม: สตริง -> String; ต้องระบุ

พจนานุกรมจากชื่อที่เก็บในเครื่องเป็นชื่อที่เก็บส่วนกลาง การดำเนินการนี้ช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของที่เก็บนี้ได้

เช่น รายการ `"@foo": "@bar"` จะประกาศว่า ไม่ว่าเมื่อใดที่เก็บนี้จะขึ้นอยู่กับ "@foo" (เช่น การพึ่งพา "@foo//some:target" ควรแก้ไขการขึ้นต่อกันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target`)

sha256 String; ไม่บังคับ

SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับ SHA-256 ของไฟล์ที่ดาวน์โหลด _มีความเสี่ยงด้านความปลอดภัย ที่จะละเว้น SHA-256 เพราะไฟล์ระยะไกลสามารถเปลี่ยนแปลงได้_ จะทำให้บิลด์ของคุณไม่ใช่สุญญากาศ คุณเลือกได้ว่าจะให้การพัฒนา ง่ายกว่า แต่ควรตั้งค่าแอตทริบิวต์นี้หรือ "ความสมบูรณ์" ก่อนจัดส่ง

url String; ไม่บังคับ

URL ไปยังไฟล์ที่จะทำให้ Bazel ใช้งานได้ URL นี้ต้องเป็นไฟล์, http หรือ https มีการเปลี่ยนเส้นทาง ไม่รองรับการตรวจสอบสิทธิ์ พารามิเตอร์ url ที่ช่วยให้ เพื่อระบุ URL ทางเลือกที่จะดึงข้อมูล URL ต้องลงท้ายด้วย ".jar"

urls รายการสตริง ไม่บังคับ

รายการ URL ไปยังไฟล์ที่จะทำให้ Bazel ใช้งานได้ แต่ละรายการต้องเป็น URL ของไฟล์, http หรือ https มีการเปลี่ยนเส้นทาง ไม่รองรับการตรวจสอบสิทธิ์ จะมีการพยายามใช้ URL ตามลำดับจนกว่าจะสำเร็จ คุณจึงควรแสดงรายการมิเรอร์ในเครื่องก่อน หากดาวน์โหลดทั้งหมดไม่สำเร็จ กฎก็จะล้มเหลว URL ทั้งหมดต้องลงท้ายด้วย ".jar"