paket prerelease cabang Appveyor dan MyGet

 di

Kami menggunakan sebuah karya, di mana Appveyor Pengaturan untuk CI dan konsumen paket kemudian secara otomatis bergerak ke MyGet Nugee Pakan yang baru dibangun. Mungkin dalam posting masa depan, aku akan pergi, bagaimana menempatkan semua hal ini, tapi sekarang kita berasumsi bahwa Anda sudah memiliki pekerjaan; Mendorong perubahan ke cabang di repo GitHub Anda, yang kemudian dibangun dan diuji sebelum didorong Appveyor MyGet. Semuanya bagus dan halus.

Berikut adalah keajaiban berakhir di sana. Sebab tidak ada perbedaan antara sisipan prerelease perubahan rilis dan perubahan, saya menemukan bahwa saya akan membatasi dibangun cabang di Appveyor atau menghabiskan lebih banyak waktu pengobatan MyGet dalam membangun off saya tidak ingin menggunakan. Aku tahu paket dukungan MyGet prerelease, tetapi tidak peduli apa yang saya coba, saya tidak bisa mendapatkan Appveyor mereka membangun. Tidak mengherankan, saya menemukan ini frustasi. Lalu aku tersandung di respon ini khusus untuk StackOverflow:

Namun, ada beberapa masalah yang saya miliki dengan ini.

  1. tampaknya salah bahwa saya memiliki
     after_build 

    atau

    langkah jelas paket Nugee saya dibangun

  2. saya tidak ingin ada build yang
  3. prerelease
  4. Ini tidak bekerja

merasa titik pertama cukup bahwa saya ingin melihat apakah saya bisa melakukan, dan yang kedua tampak benar-benar penting.

Jadi, saya menggali lebih dalam dan menemukan bahwa

file bahwa $ menggantikan versi mendapat informasi ini dari nilai AssemblyInformationalVersion atribut yang saya menjelaskan, di saya

 

. Karena itu tidak ada, katanya Appveyor langkah membatalkan apa-apa. Itu mudah untuk memperbaiki, jadi saya mengedit saya

 AssemblyInfo.cs 

berisi atribut dan mencoba lagi. Kali ini versi terbaru seperti yang saya inginkan, bahkan tanpa uang after_build atau

Gadget,

Itu tidak benar, karena sekarang, masing-masing dirancang sebagai sebuah blok bangunan prerelease. Sementara ini adalah alur kerja potensial di

 adalah appveyor.yml 

diperbarui ketika akhirnya berhasil melepaskan apa yang saya inginkan terjadi Publikasi adalah ketika saya mencetak anak perusahaan , ini saya men-tweak saya bagaimana Appveyor membangun dan versi update dari apa variabel lingkungan didefinisikan Appveyor yang dapat saya gunakan.

Ternyata Appveyor mengatur APPVEYOR_REPO_TAG ,

jika telah dibangun mulai dari hari ditekan. Hal ini juga mendefinisikan

 APPVEYOR_REPO_BRANCH 

berisi nama cabang, dibangun. Berbekal dua variabel ini, maksudku

dua

Scripts .

script pertama lingkungan baru variabel dibuat. Jika APPVEYOR_REPO_TAG untuk true variabel Nilai set baru APPVEYOR_BUILD_VERSION ; jika tidak, maka akan

 APPVEYOR_BUILD_VERSION-APPVEYOR_REPO_BRANCH 

. Misalnya, jika Anda akan membangun Versi

 2.4.0 adalah 

, itu bukan sehari, dan cabang adalah

 Guru 

, maka variabel baru akan ditempatkan

; Namun, jika dia sehari, itu akan hanya

 2.4.0 

.

Skenario kedua panggilan

 Perbarui AppveyorBuild 

cmdlets yang disediakan oleh Appveyor, nilai variabel lingkungan baru sebagai -. Versi Nilai parameter

Kedua init Scripts, dan AssemblyInformationalVersion atribut dalam

 AssemblyInfo.cs 

(dan corresponding

di bawah ASSEMBLY_INFO

 appveyor.yml 

) memiliki semua yang saya butuhkan. Sekarang ketika saya klik pada cabang, saya mendapatkan satu set baru prerelease Nugee yang dapat saya gunakan di coding perkembangan saya, dan ketika saya membuat hari baru, saya mendapatkan lebih menarik paket. Hal ini tidak hanya mengurangi kebutuhan saya tanganku Nugee MyGet paket mengelola, tetapi juga berarti bahwa saya mengambil keuntungan dari pengaturan kebijakan retensi yang berbeda antara take prerelease dan mempublikasikan paket.

Semua dalam semua, saya menemukan pekerjaan jauh lebih baik dari apa yang saya miliki sebelumnya. Mudah-mudahan beberapa dari Anda lakukan. Contoh

 appveyor.yml 

dan file yang terkait

bisa berubah dalam pandangan adalah berikut dasarnya

yg href = “http://ups.com”> kode

Octokit dan isi publikasi

 rilis

Aku mulai seri saya pada Octokit tujuan yang ditetapkan; Repositori GitHub menggunakan sejarah untuk membangun ringkasan dasar perubahan dalam siaran pers disertakan. Untuk melakukan hal ini, kita perlu menentukan apa adalah pernyataan dan kemudian memutuskan bagaimana kita menunjukkan informasi yang tepat yang berubah, yang mencakup komunikasi.

Pada tingkat dasar, untuk mengambil repositori git titik berlabel. Github melangkah lebih jauh dengan menyediakan pemberitahuan dari konsep klasik sebagai sedikit tag git dengan atribut lain seperti judul dan catatan rilis. Octokit memungkinkan premium akses bahkan diterbitkan dalam repositori Github, seperti ini:

 var = berharap pesan gitHubClient.Release.GetAll ("RepositoryOwner", "RepositoryName"); 

besar! Dengan sedikit kode yang lebih, kita dapat menentukan apa yang terbaru, dan kemudian Anda mendapatkan semua yang terlibat dalam versi ini.

 var = latestRelease releases.MaxBy (r = & amp; amp; gt; r.CreatedAt); var = new CommitRequest commitRequest {Up = latestRelease.CreatedAt, Sha = latest.TagName}; var = berkinerja berharap github.Repository.Commits.GetAll ("RepositoryOwner", "RepositoryName" commitRequest); 

Dalam kode di atas adalah, kita menggunakan MoreLinq untuk mendapatkan versi terbaru dan kemudian meminta semua dilakukan di gudang dalam industri yang sama dibuat versi ini pada saat rilis. Kami meminta mereka yang melakukan CommitRequest objek yang menentukan parameter query. Dalam hal ini, kita semua ingin terlibat dalam waktu rilis untuk hari di mana itu dibuat rilis 1 . Tentu saja, ini akan mencakup segala sesuatu yang pernah dibuat di sektor ini sejak awal waktu, yang merupakan sedikit informasi yang berlebihan. (R.CreatedAt r = & amp; amp; gt;) Apa yang kita benar-benar ingin, yang membuat adalah dari rilis sebelumnya

 var = mostRecentTwoReleases .OrderByDescending rilis. .take (2) .ToArray (); var = CommitRequest baru mostRecentTwoReleases commitRequest Up = {[0] .CreatedAt, Sha mostRecentTwoReleases = [0] .TagName, Da = mostRecentTwoReleases [1] .CreatedAt}; var = berkinerja berharap github.Repository.Commits.GetAll ("RepositoryOwner", "RepositoryName" commitRequest); 

Sekarang kita mendapatkan informasi dan menggunakan Dibuat tanggal Anda untuk menentukan baik baru dan bekas sebelumnya tanggal rilis di Sebagai Tanggal set dalam keinginan kami. Namun, masih memiliki kode kelemahan; kita tidak pernah mengatakan apa cabang harus dilengkapi. Sejauh yang kami tahu, publikasi terbaru dalam dua industri yang sama sekali berbeda. Untuk memperbaiki ini, kita hanya perlu pesan industri, kami ingin menyaring

 var = mostRecentTwoReleases melepaskan .Dimana (r = & amp; amp; gt;. R.TargetCommitish = "mybranch") .OrderByDescending (r = & amp; amp; gt; r.CreatedAt) .take (2) .ToArray (); var = CommitRequest baru mostRecentTwoReleases commitRequest Up = {[0] .CreatedAt, Sha mostRecentTwoReleases = [0] .TagName, Da = mostRecentTwoReleases [1] .CreatedAt}; var = berkinerja berharap github.Repository.Commits.GetAll ("RepositoryOwner", "RepositoryName" commitRequest); 

Jalur tekankan adalah di mana kita filter di cabang kanan (butuh beberapa penelitian untuk menemukan bahwa TargetCommitish milik pernyataan adalah nama dari cabang mereka). Kami sekarang harus memiliki hati-hati antara rilis terakhir dan salah satu yang melakukan rilis cabang pertama.

Dalam posting berikutnya kita akan melihat mengurangi kebisingan dalam sejarah yang dilakukan oleh permintaan tarik. Sampai saat itu, saya tidak akan terima kasih atas kunjungan Anda dan jangan lupa untuk memberikan komentar

& amp; amp; nbsp;.

  1. Sha milik CommitRequest atau dapat melakukan hash atau cabang / tag nama & amp; amp; nbsp; ↩

kode mempesonakan