Tetapkan pekerjaan Jenkins untuk tidak mengkloning repo di SCM

17

Saya telah mengintegrasikan Jenkins dengan Bitbucket menggunakan Plugin Bitbucket . Sesuai Wiki plugin, pekerjaan yang diberikan akan dipicu jika repositori diatur dalam SCM pekerjaan. Seperti yang Anda ketahui, jika seseorang mengatur SCM dalam pekerjaan Jenkins, ini dikloning dalam tahap pra-bangun.

Sejauh ini baik. Namun, tujuan utama dari pekerjaan yang saya setting tidak ada hubungannya dengan konten repositori; alih-alih, saya hanya ingin pekerjaan memproses payload yang dikirim oleh Bitbucket. Bisa dikatakan itu bukan masalah besar dalam hal penyimpanan untuk mengkloning repositori meskipun Anda benar-benar tidak membutuhkannya. Saya kira tidak, menambahkan langkah yang tidak perlu, menghabiskan waktu dan sumber daya bukanlah praktik yang baik.

Jadi, pertanyaannya adalah: Apakah ada yang tahu cara mengatur SCM dalam pekerjaan Jenkins tetapi mencegahnya untuk mengkloning repositori?

Héctor Valverde Pareja
sumber
2
Sepertinya Anda mencoba menggunakan Jenkins sebagai layanan mikro yang agak di luar jangkauan Jenkins :). Lakukan postingan kembali jika Anda berhasil karena ini menarik.
Travis Thompson
Saya tidak menggunakan Jenkins sebagai layanan mikro. Mengapa kamu mengatakan itu? Pada kenyataannya, semua ini adalah pekerjaan: Saya menggunakan Pipeline Job yang umum bagi banyak repositori. Jenkinsfile berada di repositori yang berbeda. Jadi, saya tidak dapat memicu pipa langsung dengan Bitbucket Plugin karena itu tidak memicu, jadi saya memutuskan untuk membuat "pekerjaan proksi" per repo, dan mengirim informasi ke pipa sebagai pekerjaan hilir. Dalam "pekerjaan proxy" seperti itu saya tidak perlu mengkloning repo, tetapi harus di SCM.
Héctor Valverde Pareja
Sangat sulit untuk dipahami dan Anda menulis lebih banyak tentang apa yang tidak mungkin daripada tentang apa yang sebenarnya ingin Anda capai, Mungkin Anda dapat menambahkan lebih banyak detail tentang apa yang sebenarnya ingin Anda capai dan bagaimana pekerjaan proxy Anda cocok di sana?
Michael Le Barbier Grünewald
Saya kira Anda sedang berbicara tentang komentar saya di atas. Itu hanya jawaban untuk komentar pertama. Silakan merujuk ke pertanyaan utama, tidak ada yang bisa ditambahkan. Apa yang saya ingin Anda capai sangat jelas: "Cegah Jenkins untuk mengkloning repositori selama build".
Héctor Valverde Pareja
1
@ HéctorValverdePareja Tentu, tetapi kata-kata Anda tampaknya ragu-ragu antara A / memberikan rincian yang cukup sehingga semua orang dapat memeriksa apakah Anda berada dalam situasi masalah-XY dan B / hanya untuk fokus pada hal yang tepat yang ingin Anda capai. Saya pikir (pendapat) Anda dapat menghapus keragu-raguan ini dengan menjelaskan dengan cukup hati-hati masalah asli Anda dan solusi yang Anda coba terapkan. Tetapi sekarang setelah seseorang menulis jawaban, ini mungkin tidak begitu penting lagi.
Michael Le Barbier Grünewald

Jawaban:

18

Iya tentu saja. Saya melakukan ini sepanjang waktu. Anda dapat menentukan opsi konfigurasi untuk pipa Anda dan salah satunya adalah skipDefaultCheckout, yang menyebabkan pipa melewati tahap "Deklaratif: Checkout SCM" default.

The skipDefaultCheckoutopsi didokumentasikan dalam Pipeline Syntax dan inilah contoh Jenkinsfile menunjukkan bagaimana menggunakannya:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('commit_stage') {
      steps {
        echo 'sweet stuff here'
      }
    }
  }
}
burnettk
sumber
1
Bagaimana dengan Anda. Mengkloning repositori secara manual ke dalam panggung?
Oz123
2
Anda dapat menjalankan checkout scmuntuk secara manual mengkloning di mana Anda perlu lihat devops.stackexchange.com/a/1916/2450 .
burnettk
5

Jika Anda tidak menggunakan Declarative Pipeline, Anda dapat menghindari check out dari SCM dengan:

node {
        skipDefaultCheckout()
        //...
}
pengguna3118604
sumber
1
Bisakah Anda menambahkan tautan ke dokumentasi dan menjelaskan lebih lanjut tentang skipDefaultCheckout ()?
030
Saya tidak melihat nilai tambah dibandingkan dengan jawaban yang ada, itu hanya 'coba ini' tanpa penjelasan dan bukan jawaban yang baik.
Tensibai
Jawaban ini baik sebagai pelengkap jawaban yang diterima - tidak semua orang akan menggunakan plugin Pipeline deklaratif, jadi ini berfungsi untuk mereka yang menggunakan yang prosedural.
RichVel
1

Saya pikir apa yang ingin Anda capai adalah memproses muatan webhook dalam pekerjaan Jenkins. Menggunakan plugin bitbucket tidak diperlukan dan mungkin sangat dirancang untuk mengkloning repo.

Saya yakin jawaban stackoverflow ini dapat membantu Anda.

Fanch
sumber
Harap sertakan kutipan yang relevan dari jawaban tertaut itu ...
Pierre.Vriens
1
Selamat Datang di DevOps! Sementara ini mungkin secara teoritis menjawab pertanyaan, akan lebih baik untuk menyertakan bagian penting dari jawabannya di sini, dan menyediakan link untuk referensi.
Richard Slater
@RichardSlater Saya tidak yakin tentang kebijakan DevOps, tetapi situs lain membuat pengecualian untuk tautan dalam jaringan.
anak ayam
3
@chicks bahkan tautan StackOverflow tunduk pada tautan yang membusuk dan dengan meringkas pertanyaan itu memberikan indikasi yang jelas untuk alasan lain mengapa penjawab yakin pertanyaan itu dijawab oleh tautan tersebut.
Richard Slater