Bagikan melalui


Menjalankan perintah Git dalam skrip alur

Layanan Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Perintah Git tersedia untuk alur kerja build di agen yang dihosting Microsoft dan dihost sendiri . Misalnya, setelah build integrasi berkelanjutan (CI) selesai pada cabang fitur, Anda dapat menggabungkan cabang ke utama. Artikel ini menjelaskan cara menjalankan perintah Git di skrip build Azure Pipelines.

Mengaktifkan skrip untuk menjalankan perintah Git

Pastikan GitHub menggunakan identitas default akun Azure DevOps Anda. Jika perlu, atur pengguna GitHub sebagai langkah pertama setelah checkout.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Memberikan izin ke layanan build

Layanan build proyek harus memiliki izin untuk menulis ke repositori sumber. Atur izin yang diperlukan sebagai berikut:

  1. Di Pengaturan Proyek untuk proyek Anda, pilih Repositori di bawah Repositori.

  2. Pada halaman Semua repositori , pilih Keamanan untuk mengatur izin untuk semua repositori dalam proyek. Atau, pilih repositori tempat Anda ingin menjalankan perintah Git, lalu pilih Keamanan di halaman repositori tersebut.

    Sreenshot yang menunjukkan pemilihan Keamanan untuk repositori.

  3. Pada halaman Izin pengguna , pilih identitas Build Service . Pastikan untuk memilih <nama> proyek Build Service (<organisasi>) di bawah Pengguna, bukan Akun Layanan Build Koleksi Proyek. Secara default, identitas ini dapat membaca dari repositori tetapi tidak dapat mendorong perubahan apa pun ke dalamnya.

  4. Turun bawah daftar dan pilih Izinkan di samping setiap izin yang diperlukan untuk perintah Git yang ingin Anda jalankan, biasanya Buat cabang, Kontribusi, Baca, dan Buat tag.

    Cuplikan layar yang memperlihatkan pemberian izin identitas ke repositori.

Perbolehkan skrip mengakses token sistem

Untuk mengizinkan skrip mengakses token GitHub OAuth:

checkout Tambahkan langkah ke alur YAML Anda dengan persistCredentials diatur ke true.

steps:
- checkout: self
  persistCredentials: true

Untuk informasi selengkapnya tentang langkah ini checkout , lihat definisinya steps.checkout .

Bersihkan repositori lokal

Alur build tidak secara otomatis membersihkan perubahan tertentu pada repositori lokal, seperti menghapus cabang lokal atau membatalkan perubahan lokal git config . Jika Anda mengalami masalah menggunakan agen yang dihost sendiri, Anda dapat membersihkan repositori sebelum menjalankan build.

Secara umum, untuk performa agen yang dihost sendiri lebih cepat, jangan bersihkan repositori. Pembersihan tidak efektif untuk agen yang dihosting Microsoft, karena mereka menggunakan agen baru setiap kali. Untuk informasi selengkapnya, lihat Membersihkan repositori lokal pada agen.

Untuk membersihkan repositori sebelum Anda menjalankan build:

Atur clean ke true dalam checkout langkah. Opsi ini berjalan git clean -ffdx diikuti oleh git reset --hard HEAD sebelum mengambil.

steps:
- checkout: self
  clean: true

Pilih Variabel di editor alur, buat atau ubah Build.Clean variabel, dan atur nilainya ke source.

Contoh perintah Git

Contoh berikut menjalankan perintah Git dalam tugas baris Perintah dan tugas skrip Batch .

Mencantumkan file di repositori Anda

Untuk mencantumkan file di repositori Git, gunakan tugas Baris perintah dalam alur YAML sebagai berikut:

- task: CmdLine@2
  inputs:
    script: 'git ls-files'

Menggabungkan cabang fitur ke cabang utama

Contoh alur Klasik berikut menggabungkan build main CI jika build berhasil.

  1. Buat file yang disebut merge.bat di akar repositori Anda dengan konten berikut:

    @echo off
    ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
    IF %BUILD_SOURCEBRANCH% == refs/heads/main (
       ECHO Building main branch so no merge is needed.
       EXIT
    )
    SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
    ECHO GIT CHECKOUT MAIN
    git checkout main
    ECHO GIT STATUS
    git status
    ECHO GIT MERGE
    git merge %sourceBranch% -m "Merge to main"
    ECHO GIT STATUS
    git status
    ECHO GIT PUSH
    git push origin
    ECHO GIT STATUS
    git status
    
  2. Pada tab Pemicu di alur Klasik Anda, pilih kotak centang untuk Mengaktifkan integrasi berkelanjutan.

  3. Di bawah Filter cabang dan Filter jalur, pilih cabang dan jalur untuk Menyertakan atau Mengecualikan dari build.

  4. Tambahkan skrip Batch sebagai tugas terakhir di alur Anda.

  5. Di bawah Jalur dalam konfigurasi tugas, masukkan lokasi dan nama file merge.bat .

FAQ

Dapatkah saya menjalankan perintah Git jika repositori jarak jauh saya berada di GitHub atau layanan Git lain seperti Bitbucket Cloud?

Ya, Anda dapat menjalankan perintah Git jika repositori jarak jauh Anda berada di GitHub atau layanan Git lain seperti Bitbucket Cloud.

Tugas mana yang dapat saya gunakan untuk menjalankan perintah Git?

Anda dapat menggunakan tugas Azure Pipelines berikut untuk menjalankan perintah Git:

Bagaimana cara menghindari pemicu build CI saat skrip mendorong?

Untuk menghindari pemicu build CI saat skrip mendorong, tambahkan [skip ci] ke pesan atau deskripsi penerapan Anda. Contohnya:

  • git commit -m "This is a commit message [skip ci]"
  • git merge origin/features/hello-world -m "Merge to main [skip ci]"

Anda juga dapat menggunakan salah satu variasi berikut untuk penerapan ke Azure Repos Git, Bitbucket Cloud, GitHub, atau GitHub Enterprise Server:

  • [skip ci] atau [ci skip]
  • skip-checks: true atau skip-checks:true
  • [skip azurepipelines] atau [azurepipelines skip]
  • [skip azpipelines] atau [azpipelines skip]
  • [skip azp] atau [azp skip]
  • ***NO_CI***

Apakah saya memerlukan agen untuk menjalankan alur?

Ya, Anda memerlukan setidaknya satu agen untuk menjalankan alur build atau rilis Anda.

Bagaimana cara memecahkan masalah?

Lihat Memecahkan masalah eksekusi alur.

Bagaimana cara memperbaiki tidak dapat memilih kumpulan agen default atau mengantre eksekusi alur saya?

Lihat Membuat dan mengelola kumpulan agen.

Bagaimana cara memperbaiki tugas dorongan NuGet saya yang gagal dengan "Kesalahan: tidak bisa mendapatkan sertifikat penerbit lokal"?

Anda dapat memperbaiki masalah ini dengan menambahkan sertifikat akar tepercaya. NODE_EXTRA_CA_CERTS=file Tambahkan variabel lingkungan ke agen build Anda, atau tambahkan NODE.EXTRA.CA.CERTS=file variabel tugas di alur Anda.

Untuk informasi selengkapnya tentang variabel ini, lihat NODE_EXTRA_CA_CERTS=file dalam dokumentasi Node.js. Untuk petunjuk tentang mengatur variabel di alur Anda, lihat Mengatur variabel dalam alur.

Mengapa saya tidak melihat beberapa fitur ini di Azure DevOps Server lokal saya?

Beberapa fitur ini hanya tersedia di Azure DevOps Services dan tidak tersedia untuk Azure DevOps Server lokal. Beberapa fitur hanya tersedia di versi terbaru Azure DevOps Server.