กฎ
ไบนารี
ดูแหล่งที่มาของกฎsh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, licenses, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
กฎ sh_binary
ใช้ในการประกาศสคริปต์ Shell ที่ดําเนินการได้
(sh_binary
เป็นการให้ข้อมูลที่ไม่ถูกต้อง เนื่องจากเอาต์พุตไม่จําเป็นต้องเป็นไบนารี) กฎนี้ช่วยให้มั่นใจได้ว่าทรัพยากร Dependency ทั้งหมดสร้างขึ้นและปรากฏในพื้นที่ runfiles
ขณะดําเนินการ
เราขอแนะนําให้คุณตั้งชื่อกฎ sh_binary()
หลังชื่อสคริปต์ลบด้วยส่วนขยาย (เช่น .sh
) ชื่อกฎและชื่อไฟล์ต้องไม่ซ้ํากัน
sh_binary
ดําเนินการตามคําสั่งของ Shebang ดังนั้นจึงอาจมีการใช้ล่ามที่พร้อมใช้งาน (เช่น
#!/bin/zsh
)
ตัวอย่าง
สําหรับสคริปต์ Shell แบบง่ายที่ไม่มีทรัพยากร Dependency และไฟล์ข้อมูลบางรายการ ให้ทําดังนี้
sh_binary( name = "foo", srcs = ["foo.sh"], data = glob(["datafiles/*.txt"]), )
อาร์กิวเมนต์
แอตทริบิวต์ | |
---|---|
name |
ชื่อที่ไม่ซ้ํากันสําหรับเป้าหมายนี้ |
deps
|
deps ได้ที่แอตทริบิวต์ทั่วไปที่กําหนดโดยกฎบิลด์ส่วนใหญ่
แอตทริบิวต์นี้ควรใช้เพื่อระบุกฎ |
srcs
|
แอตทริบิวต์นี้ต้องเป็นรายการเดี่ยวที่มีองค์ประกอบเป็นสคริปต์เชลล์
สคริปต์นี้จะต้องเป็นไฟล์ปฏิบัติการและอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น
ไฟล์อื่นๆ ทั้งหมดที่ต้องใช้ขณะรันไทม์ (ไม่ว่าจะเป็นสคริปต์หรือข้อมูล) จะอยู่ในแอตทริบิวต์ |
SH_library
ดูแหล่งที่มาของกฎsh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
การใช้งานหลักสําหรับกฎนี้คือการสรุปรวม "ห้องสมุด" เชิงตรรกะซึ่งประกอบด้วยสคริปต์ที่เกี่ยวข้อง ซึ่งเป็นโปรแกรมที่ตีความภาษาซึ่งไม่จําเป็นต้องรวบรวมหรือลิงก์ เช่น เชือก Bourne และข้อมูลที่โปรแกรมเหล่านี้ต้องใช้ในรันไทม์ จากนั้น คุณจะใช้ "ไลบรารี" ดังกล่าวจากแอตทริบิวต์ data
ของกฎ sh_binary
อย่างน้อย 1 รายการได้
คุณใช้กฎ filegroup
เพื่อรวบรวมไฟล์ข้อมูลได้
ในภาษาโปรแกรมที่ตีความได้ ไม่มีความแตกต่างที่ชัดเจนระหว่าง "โค้ด" กับ "ข้อมูล" กล่าวคือ โปรแกรมเป็นเพียง "ข้อมูล" จากมุมมองของล่าม ด้วยเหตุนี้ กฎนี้จึงมีแอตทริบิวต์ 3 รายการที่เทียบเท่ากันทั้งหมด ได้แก่ srcs
, deps
และ data
การใช้งานในปัจจุบันไม่ได้แยกแยะระหว่างองค์ประกอบรายการเหล่านี้
แอตทริบิวต์ทั้ง 3 รายการยอมรับกฎ ไฟล์ต้นฉบับ และไฟล์ที่สร้างขึ้น
แต่การใช้แอตทริบิวต์ตามวัตถุประสงค์ทั่วไป (เช่นเดียวกับกฎอื่นๆ) ถือเป็นแนวทางปฏิบัติที่ดี
ตัวอย่าง
sh_library( name = "foo", data = [ ":foo_service_script", # an sh_binary with srcs ":deploy_foo", # another sh_binary with srcs ], )
อาร์กิวเมนต์
แอตทริบิวต์ | |
---|---|
name |
ชื่อที่ไม่ซ้ํากันสําหรับเป้าหมายนี้ |
deps
|
deps ได้ที่แอตทริบิวต์ทั่วไปที่กําหนดโดยกฎบิลด์ส่วนใหญ่
แอตทริบิวต์นี้ควรใช้เพื่อระบุกฎ |
srcs
|
แอตทริบิวต์นี้ควรใช้เพื่อระบุไฟล์แหล่งที่มาของสคริปต์ Shell ที่เป็นของคลังนี้ สคริปต์โหลดสคริปต์อื่นๆ ได้โดยใช้คําสั่ง |
การทดสอบ
ดูแหล่งที่มาของกฎsh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
กฎ sh_test()
จะสร้างการทดสอบที่เขียนเป็นสคริปต์เชือก Bourne
ดู แอตทริบิวต์ที่พบบ่อยสําหรับกฎการทดสอบทั้งหมด (*_test)
ตัวอย่าง
sh_test( name = "foo_integration_test", size = "small", srcs = ["foo_integration_test.sh"], deps = [":foo_sh_lib"], data = glob(["testdata/*.txt"]), )
อาร์กิวเมนต์
แอตทริบิวต์ | |
---|---|
name |
ชื่อที่ไม่ซ้ํากันสําหรับเป้าหมายนี้ |
deps
|
deps ได้ที่แอตทริบิวต์ทั่วไปที่กําหนดโดยกฎบิลด์ส่วนใหญ่
แอตทริบิวต์นี้ควรใช้เพื่อระบุกฎ |
srcs
|
แอตทริบิวต์นี้ต้องเป็นรายการเดี่ยวที่มีองค์ประกอบเป็นสคริปต์เชลล์
สคริปต์นี้จะต้องเป็นไฟล์ปฏิบัติการและอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น
ไฟล์อื่นๆ ทั้งหมดที่ต้องใช้ขณะรันไทม์ (ไม่ว่าจะเป็นสคริปต์หรือข้อมูล) จะอยู่ในแอตทริบิวต์ |