BazelCon 2022 akan hadir pada 16-17 November ke New York dan online.
Daftar sekarang.

Aturan repositori http

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Fungsi berikut dapat dimuat dari @bazel_tools//tools/build_defs/repo:http.bzl.

http_archive

http_archive(name, 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, sha256, strip_prefix, type, url, urls, workspace_file,
             workspace_file_content)

Mendownload repositori Bazel sebagai file arsip terkompresi, melakukan dekompresi, dan membuat targetnya tersedia untuk binding.

Library ini mendukung ekstensi file berikut: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", tar.bz2, "ar", atau "deb".

Contoh: Misalnya repositori saat ini berisi kode sumber untuk program chat, yang di-root di direktori ~/chat-app. Perlu bergantung pada library SSL yang tersedia dari http://example.com/openssl.zip. File .zip ini berisi struktur direktori berikut:

  WORKSPACE
  src/
    openssl.cc
    openssl.h

Di repositori lokal, pengguna membuat file openssl.BUILD yang berisi definisi target berikut:

  cc_library(
      name = "openssl-lib",
      srcs = ["src/openssl.cc"],
      hdrs = ["src/openssl.h"],
  )

Target dalam repositori ~/chat-app dapat bergantung pada target ini jika baris berikut ditambahkan ke ~/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",
  )

Selanjutnya, target akan menentukan @my_ssl//:openssl-lib sebagai dependensi.

Atribut

name Nama; wajib diisi

Nama unik untuk repositori ini.

auth_patterns Kamus: String -> String; opsional

Dikte opsional yang memetakan nama host ke pola otorisasi kustom. Jika terdapat nama host URL dalam dikte ini, nilai akan digunakan sebagai pola saat membuat header otorisasi untuk permintaan http. Hal ini memungkinkan penggunaan skema otorisasi kustom yang digunakan di banyak penyedia penyimpanan cloud umum. Pola tersebut saat ini mendukung 2 token: <login> dan <password>, yang digantikan dengan nilai yang setara dalam file netrc untuk nama host yang sama. Setelah diformat, hasilnya akan ditetapkan sebagai nilai untuk kolom Authorization permintaan HTTP. Contoh atribut dan netrc untuk download http ke API yang mengaktifkan oauth2 menggunakan token pemilik:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Permintaan HTTP akhir akan memiliki header berikut:
Authorization: Bearer RANDOM-TOKEN

build_file Label; opsional

File yang akan digunakan sebagai file BUILD untuk repositori ini.Atribut ini adalah label mutlak (gunakan '@//' untuk repo utama). File tidak perlu diberi nama BUILD, tetapi dapat berupa (sesuatu seperti BUILD.new-repo-name mungkin berfungsi dengan baik untuk membedakannya dari file BUILD yang sebenarnya dari repositori. Build_file atau build_file_content dapat ditentukan, tetapi tidak keduanya.

build_file_content String; opsional

Konten untuk file BUILD untuk repositori ini. Build_file atau build_file_content dapat ditentukan, tetapi tidak keduanya.

canonical_id String; opsional

ID kanonis arsip yang didownload. Jika ditentukan dan tidak kosong, bazel tidak akan mengambil arsip dari cache, kecuali jika ditambahkan ke cache oleh permintaan dengan ID kanonis yang sama.

integrity String; opsional

Checksum yang diharapkan dalam format Integritas Subresource file yang didownload. Ini harus cocok dengan checksum file yang didownload. _ Merupakan risiko keamanan untuk menghilangkan checksum karena file jarak jauh dapat berubah._ Paling baik menghapus kolom ini akan membuat build Anda tidak hermetik. Anda dapat membuat pengembangan lebih mudah, tetapi atribut atau `sha256` harus ditetapkan sebelum pengiriman.

netrc String; opsional

Lokasi file .netrc yang akan digunakan untuk autentikasi

patch_args Daftar string; opsional

Argumen yang diberikan ke alat patch. Setelan defaultnya adalah -p0, tetapi -p1 biasanya diperlukan untuk patch yang dibuat oleh git. Jika ada beberapa argumen -p yang ditentukan, argumen terakhir akan berlaku.Jika argumen selain -p ditentukan, Bazel akan kembali menggunakan alat command line patch, bukan implementasi patch native Bazel. Saat melakukan fallback ke alat command line patch dan atribut patch_tool tidak ditentukan, `patch` akan digunakan. Hal ini hanya memengaruhi file patch di atribut `patches`.

patch_cmds Daftar string; opsional

Urutan perintah Bash yang akan diterapkan di Linux/Macos setelah patch diterapkan.

patch_cmds_win Daftar string; opsional

Urutan perintah Powershell yang akan diterapkan di Windows setelah patch diterapkan. Jika atribut ini tidak disetel, patch_cmds akan dijalankan di Windows, yang mewajibkan adanya biner Bash.

patch_tool String; opsional

Aplikasi utilitas patch(1) yang akan digunakan. Jika ditentukan, Bazel akan menggunakan alat patch yang ditentukan, bukan implementasi patch native Bazel.

patches Daftar label; opsional

Daftar file yang akan diterapkan sebagai patch setelah mengekstrak arsip. Secara default, kebijakan ini menggunakan implementasi patch native Bazel yang tidak mendukung pencocokan fuzz dan patch biner, tetapi Bazel akan kembali menggunakan alat command line patch jika atribut `patch_tool` ditentukan atau ada argumen selain `-p` dalam atribut `patch_args`.

remote_patch_strip Bilangan bulat; opsional

Jumlah garis miring di awal yang akan dihilangkan dari nama file di patch jarak jauh.

remote_patches Kamus: String -> String; opsional

Peta URL file patch ke nilai integritasnya, diterapkan setelah mengekstrak arsip dan sebelum menerapkan file patch dari atribut `patches`. Ini menggunakan implementasi patch native Bazel, Anda dapat menentukan nomor strip patch dengan `remote_patch_strip`

sha256 String; opsional

SHA-256 file yang diharapkan telah didownload. File ini harus cocok dengan SHA-256 file yang didownload. _Ada risiko keamanan menghilangkan SHA-256 karena file jarak jauh dapat berubah._ Paling tidak dengan menghapus kolom ini akan membuat build Anda tidak bersifat hermetik. Pengembangan ini bersifat opsional, tetapi atribut atau `integritas` ini harus ditetapkan sebelum pengiriman.

strip_prefix String; opsional

Awalan direktori untuk menghapus file yang diekstrak. Banyak arsip berisi direktori level teratas yang berisi semua file berguna dalam arsip. Daripada harus menentukan awalan ini terus-menerus di `build_file`, kolom ini dapat digunakan untuk menghapusnya dari semua file yang diekstrak. Misalnya, Anda menggunakan `foo-lib-latest.zip` yang berisi direktori `foo-lib-1.2.3/` yang menjadi tempat file `WORKSPACE` dan memiliki direktori `src/`, `lib/`, dan `test/` yang berisi kode aktual yang ingin Anda buat. Tentukan `strip_prefix = "foo-lib-1.2.3"` untuk menggunakan direktori `foo-lib-1.2.3` sebagai direktori level teratas. Perhatikan bahwa jika ada file di luar direktori ini, file tersebut akan dihapus dan tidak dapat diakses (misalnya, file lisensi tingkat teratas). Ini termasuk file/direktori yang diawali dengan awalan tersebut, tetapi tidak ada dalam direktorinya (misalnya, `foo-lib-1.2.3.release-notes`). Jika awalan yang ditentukan tidak cocok dengan direktori dalam arsip, Bazel akan menampilkan error.

type String; opsional

Jenis arsip file yang didownload. Secara default, jenis arsip ditentukan dari ekstensi file URL. atau

url String; opsional

URL ke file yang akan disediakan untuk Bazel. Harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. Fleksibilitas yang lebih besar dapat dicapai dengan parameter URL yang memungkinkan tentukan URL alternatif yang akan diambil.

urls Daftar string; opsional

Daftar URL ke file yang akan disediakan untuk Bazel. Setiap entri harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. URL dicoba secara berurutan sampai berhasil, jadi Anda harus mencantumkan pencerminan lokal terlebih dahulu. Jika semua hasil download gagal, aturan akan gagal.

workspace_file Label; opsional

File yang akan digunakan sebagai file `WORKSPACE` untuk repositori ini. `workspace_file` atau `workspace_file_content` dapat ditentukan, atau tidak keduanya, tetapi tidak keduanya.

workspace_file_content String; opsional

Konten untuk file WORKSPACE untuk repositori ini. `workspace_file` atau `workspace_file_content` dapat ditentukan, atau tidak keduanya, tetapi tidak keduanya.

file http

http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, netrc, sha256, url,
          urls)

Mendownload file dari URL dan menyediakannya untuk digunakan sebagai grup file.

Contoh: Misalnya Anda perlu memiliki paket debian untuk aturan kustom. Paket ini tersedia dari http://example.com/package.deb. Kemudian, Anda dapat menambahkan ke file 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",
  )

Target akan menentukan @my_deb//file sebagai dependensi untuk bergantung pada file ini.

Atribut

name Nama; wajib diisi

Nama unik untuk repositori ini.

auth_patterns Kamus: String -> String; opsional

Dikte opsional yang memetakan nama host ke pola otorisasi kustom. Jika terdapat nama host URL dalam dikte ini, nilai akan digunakan sebagai pola saat membuat header otorisasi untuk permintaan http. Hal ini memungkinkan penggunaan skema otorisasi kustom yang digunakan di banyak penyedia penyimpanan cloud umum. Pola tersebut saat ini mendukung 2 token: <login> dan <password>, yang digantikan dengan nilai yang setara dalam file netrc untuk nama host yang sama. Setelah diformat, hasilnya akan ditetapkan sebagai nilai untuk kolom Authorization permintaan HTTP. Contoh atribut dan netrc untuk download http ke API yang mengaktifkan oauth2 menggunakan token pemilik:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Permintaan HTTP akhir akan memiliki header berikut:
Authorization: Bearer RANDOM-TOKEN

canonical_id String; opsional

ID kanonis arsip yang didownload. Jika ditentukan dan tidak kosong, bazel tidak akan mengambil arsip dari cache, kecuali jika ditambahkan ke cache oleh permintaan dengan ID kanonis yang sama.

downloaded_file_path String; opsional

Jalur yang ditetapkan ke file yang didownload

executable Boolean; opsional

Jika file yang didownload harus dapat dijalankan.

netrc String; opsional

Lokasi file .netrc yang akan digunakan untuk autentikasi

sha256 String; opsional

SHA-256 file yang diharapkan telah didownload. File ini harus cocok dengan SHA-256 file yang didownload. _Ada risiko keamanan menghilangkan SHA-256 karena file jarak jauh dapat berubah._ Paling tidak dengan menghapus kolom ini akan membuat build Anda tidak bersifat hermetik. Pengembangan ini bersifat opsional, tetapi harus ditetapkan sebelum pengiriman.

url String; opsional

URL ke file yang akan disediakan untuk Bazel. Harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. Fleksibilitas yang lebih besar dapat dicapai dengan parameter URL yang memungkinkan tentukan URL alternatif yang akan diambil.

urls Daftar string; opsional

Daftar URL ke file yang akan disediakan untuk Bazel. Setiap entri harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. URL dicoba secara berurutan sampai berhasil, jadi Anda harus mencantumkan pencerminan lokal terlebih dahulu. Jika semua hasil download gagal, aturan akan gagal.

http_jar

http_jar(name, auth_patterns, canonical_id, downloaded_file_name, netrc, sha256, url, urls)

Mendownload jar dari URL dan menyediakannya sebagai java_import

File yang didownload harus memiliki ekstensi .jar.

Contoh: Misalnya repositori saat ini berisi kode sumber untuk program chat, yang di-root di direktori ~/chat-app. Perlu bergantung pada library SSL yang tersedia dari http://example.com/openssl-0.2.jar.

Target dalam repositori ~/chat-app dapat bergantung pada target ini jika baris berikut ditambahkan ke ~/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",
  )

Target akan menentukan <code>@my_ssl//jar</code> sebagai dependensi untuk bergantung pada jar ini.

Anda juga dapat mereferensikan file pada sistem saat ini (localhost) dengan menggunakan "file:///path/to/file" jika Anda menggunakan sistem berbasis Unix. Jika Anda menggunakan Windows, gunakan "file:///c:/path/to/file". Dalam kedua contoh, perhatikan tiga garis miring (/) -- dua garis miring pertama dimiliki oleh file:// dan garis miring ketiga termasuk dalam jalur absolut file.

Atribut

name Nama; wajib diisi

Nama unik untuk repositori ini.

auth_patterns Kamus: String -> String; opsional

Dikte opsional yang memetakan nama host ke pola otorisasi kustom. Jika terdapat nama host URL dalam dikte ini, nilai akan digunakan sebagai pola saat membuat header otorisasi untuk permintaan http. Hal ini memungkinkan penggunaan skema otorisasi kustom yang digunakan di banyak penyedia penyimpanan cloud umum. Pola tersebut saat ini mendukung 2 token: <login> dan <password>, yang digantikan dengan nilai yang setara dalam file netrc untuk nama host yang sama. Setelah diformat, hasilnya akan ditetapkan sebagai nilai untuk kolom Authorization permintaan HTTP. Contoh atribut dan netrc untuk download http ke API yang mengaktifkan oauth2 menggunakan token pemilik:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Permintaan HTTP akhir akan memiliki header berikut:
Authorization: Bearer RANDOM-TOKEN

canonical_id String; opsional

ID kanonis arsip yang didownload. Jika ditentukan dan tidak kosong, bazel tidak akan mengambil arsip dari cache, kecuali jika ditambahkan ke cache oleh permintaan dengan ID kanonis yang sama.

downloaded_file_name String; opsional

Nama file yang ditetapkan ke jar yang didownload

netrc String; opsional

Lokasi file .netrc yang akan digunakan untuk autentikasi

sha256 String; opsional

SHA-256 file yang diharapkan telah didownload.

url String; opsional

URL ke file yang akan disediakan untuk Bazel. Harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. Fleksibilitas yang lebih besar dapat dicapai dengan parameter URL yang memungkinkan tentukan URL alternatif yang akan diambil. URL harus diakhiri dengan `.jar`.

urls Daftar string; opsional

Daftar URL ke file yang akan disediakan untuk Bazel. Setiap entri harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. URL dicoba secara berurutan sampai berhasil, jadi Anda harus mencantumkan pencerminan lokal terlebih dahulu. Jika semua hasil download gagal, aturan akan gagal. Semua URL harus diakhiri dengan `.jar`.