后臺可回復【1024】即可獲取相關寶藏內容分享?:)
?
?
Q1: Jenkins是什么??
?
A:Jenkins是一款開源 CI&CD 軟件,用于自動化各種任務,包括構建、測試和部署軟件。
?
?
?
今天文章分為兩部分 :)
PART1?Jenkins技術分享 /?PART2 關于百度一面雜談
?
? ?
?
5 Minutes?to Jenkins:
PART 1 創建您的Pipline
?
學長五分鐘帶你走進Jenkins大世界? :)
?
首先什么是 Jenkins Pipeline?
Jenkins Pipeline(或簡稱為 "Pipeline")是一套插件,將持續交付的實現和實施集成到 Jenkins 中。持續交付 Pipeline 自動化的表達了這樣一種流程:將基于版本控制管理的軟件持續的交付到您的用戶和消費者手中。
?
Jenkins Pipeline 提供了一套可擴展的工具,用于將“簡單到復雜”的交付流程實現為“持續交付即代碼”。Jenkins Pipeline 的定義通常被寫入到一個文本文件(稱為?Jenkinsfile?)中,該文件可以被放入項目的源代碼控制庫中。他其實也有自己的語言邏輯,后面學長也有整理他的語法使用。
?
快速開始使用 Pipeline:
?
-
將以下示例?復制到您的倉庫中并命名為?
Jenkinsfile
-
單擊Jenkins中的?New Item?菜單?
-
為您的新工程起一個名字 (例如?My Pipeline) ,選擇?Multibranch Pipeline
-
單擊?Add Source?按鈕,選擇您想要使用的倉庫類型并填寫詳細信息.
-
單擊?Save?按鈕,觀察您的第一個Pipeline運行!
您可能需要修改?Jenkinsfile
?以便應用在您自己的項目中。嘗試修改?sh
?命令,使其與您本地運行的命令相同。
這里說說pipline?使用語法分兩種聲明式和腳本式,
這里僅分享聲明式
Declarative Pipeline(聲明式)核心概念
核心概念用來組織pipeline的運行流程
1.pipeline?:聲明其內容為一個聲明式的pipeline腳本
2.agent:執行節點(job運行的slave或者master節點)
3.stages:階段集合,包裹所有的階段(例如:打包,部署等各個階段)
4.stage:階段,被stages包裹,一個stages可以有多個stage
5.steps:步驟,為每個階段的最小執行單元,被stage包裹6.post:執行構建后的操作
根據構建結果來執行對應的操作根據上面幾個概念就能夠輕易的創建一個簡單的pipeline
?
pipeline{agent anystages{stage("first stage"){steps("first steps"){echo "this is first step"}}}post{always{echo "this is ending..."}}
}
下面針對幾個核心概念,逐一進行說明
1.pipeline
作用域:應用于全局最外層,表明該腳本為聲明式pipeline
是否必須:必須
參數:無
2.agent
作用域:可用在全局與stage內
是否必須:是,
參數:any,none, label, node,docker,dockerfile
?
pipeline{agent any //全局必須帶有agent表明此pipeline執行節點stages{stage("first stage"){agent { label 'master' } //具體執行的步驟節點,非必須steps{echo "this is first step"}}}}
參數示例:
?
//運行在任意的可用節點上agent any//全局不指定運行節點,由各自stage來決定agent none//運行在指定標簽的機器上,具體標簽名稱由agent配置決定agent { label 'master' }//node參數可以擴展節點信息agent { node {label 'master'customWorkspace 'xxx'} }//使用指定運行的容器agent { docker 'python' }
3.stages
作用域:全局或者stage階段內,每個作用域內只能使用一次
是否必須:全局必須
參數:無
?
pipeline{agent anystages{stage("first stage"){stages{ //嵌套在stage里stage("inside"){steps{echo "inside"}}}}stage("stage2"){steps{echo "outside"}}}}
看下運行結果,發現嵌套的stage也是能夠展現在視圖里面的
?
4.stage
作用域:被stages包裹,作用在自己的stage包裹范圍內
是否必須:必須
參數:需要一個string參數,表示此階段的工作內容
備注:stage內部可以嵌套stages,內部可單獨制定運行的agent
5.steps
作用域:被stage包裹,作用在stage內部
是否必須:必須
參數:無
6.post
作用域:作用在pipeline結束后者stage結束后
條件:always、changed、failure、success、unstable、aborted
在配置好 Pipeline 之后,Jenkins 會自動檢測您倉庫中創建的任何新的分支或合并請求, 并開始為它們運行 Pipelines。
?
關于并行執行
通過將階段設置為parallel來表明該stage為并行運行,但是需要注意以下幾點
-
一個stage只能有一個steps或者parallel
-
嵌套的stages里不能使用parallel
-
parallel不能包含agent或者tools
-
通過設置failFast 為true表示:并行的job中如果其中的一個失敗,則終止其他并行的stage
?
pipeline {agent anystages {stage('Non-Parallel Stage') {steps {echo 'Non-parallel'}}stage('Parallel Stage') {agent anyfailFast trueparallel {stage('parallel 1') {agent anysteps {echo "parallel 1"}}stage('parallel 2') {steps {echo "parallel 2"}}}}}
}
腳本
在聲明式的pipeline中默認無法使用腳本語法,但是pipeline提供了一個腳本環境入口:script{},通過使用script來包裹腳本語句,即可使用腳本語法
關于Jenkins的第一期的分享就到這里;
看到這里的同學有福啦,學長分享一波寶藏收藏資源
后臺可回復【數據庫】即可獲取相關內容分享?:)
?
?
好!回歸每周的閑言碎語!
PART2 >今天來分享一下百度一面的內容扒
分享僅供參考-
?
?
面試前的準備:
其實學長面試的崗位屬于開發崗位,在此一周前我準備了很多基礎知識內容,因為我覺得一面的內容會很基礎,不會有太多的算法難題,就把基礎鞏固了些,每天的午飯時間會認真的看一些b站同學的面試大廠的經驗分享,內容或多少些許幫助/其余上下班的路上會看很多的pdf基礎考點,畢竟面對大廠的學長還是會有些許方。
?
其實之所以能夠得到百度面試官的賞識是因為一點,我的項目經驗有一個面試官覺得不錯,這個不錯的內容是關于我現在負責的自動化測試平臺開發內容,今天的分享內容也是這個平臺在用的主要內容,所以幸運的得到了百度的面試邀請,面試時間約在了周六十一點,我個人覺得時間并不是很好,因為飯點了面試官也會餓哈哈哈。
?
面試開始:
首先面試官直入主題,不需要我自我介紹,依我看來他是個技術,因為程序員都很直接可能,我也是,我理解。不過學長還是在介紹項目的同時強行加入些許自我介紹到其中了,說到自己畢業時間以及接觸python的原因。我不想覺得面試把自我介紹省略掉,因為我準備了,心里的介紹背都背熟了/
?
面試的內容-我總結了較重要的五個問題:
時長-56min
問題1.
面試官欣賞的項目的介紹(具體介紹)因為畢竟他要真正的了解你這個項目到底有沒有包裝瞎扯,學長是真實的項目介紹,不過沒有過多透露商業內容,遵守保密原則哈哈/
?
問題2.
項目如何搭建以及框架結構使用到了哪些內容。其實也就是他先了解一些,然后逐步進入下一問題。
?
問題3.
將你這個項目的具體實現描述,最好言簡意賅。然后學長拿筆和紙在記錄我說的項目內容,視頻面試一定要做好紙和筆記錄哦!強烈建議,備好🖊和📑這樣思路才清晰 將每一個模塊細化的說一說。這里我感覺說的時間很長。綜上三個問題,我甚至覺得我有些泄露商業秘密,隨便調侃了下自己簽了保密協議,哈哈面試官也笑著說并不會涉及透露商業機密,大可不必擔心,面試官小哥哥還是很nice的,面試到這里感覺卸下了所有防備,就像隨意聊天了,面試時候情緒帶動其實很重要的,禮儀以及細節等等,我覺得我做的并不會,有心的同學多多看看B站面經視頻,或許對你我有所幫助。
?
問題4.
俱往矣,你做過的最完善的項目是哪一個?我回答的是之前的項目,因為我之前項目是一個產品化項目,現在的平臺雖然也在做產品化內容了,但是還沒有具體落地完成/這個問題回答的感覺也還好,因為我其實并不太了解這個產品賣給誰 但我知道是toB模式的商業路線,盈利多少我哪里知道 ,但是不知道這里也要強行裝一下下。
?
問題5.
學習中那個技術讓你覺得最困難最值得講述??這問題我有點懵,我覺得都,都難,但我本能的想了一下DRF(DJANGO-restframwork)這個框架其實深入理解的確很難,需要自己去讀一些他的源碼內容,因為默認返回的很多都不能滿足后端或者前端的需求,總之熟悉一個框架你需要讀他的源碼,我認為算是“難點”。就將“讀”DRF以及其他項目源碼內容說了說,其中也講述了些自己學習了機器學習分類聚合以及深度學習神經網絡,以及自己愛記錄自己學習遇到的難點到博客或者公眾號中。
?
最后分享下我第一輪面試完的感悟和技巧:
?
第一輪面試總的來說,并不會很難,也不會問你算法或者數據結構或者造飛機的知識,問的很實際,問你項目具體內容,很具體很具體的那種,還會根據面試的過程,通過你的項目介紹摻雜問你一些用到的技術棧,如果有新意有亮點,面試官一定會給你的面試結果填上不錯的一筆,同時會記錄你的面試過程,在過程中你會發現自己的不足,面試結束我來總結了Jenkins的使用,哈哈算是給自己補一補課,下次面試發揮更好吧。
?
或許很多人在等待面試的時候都是非常嚴肅而焦慮的等待著,這里告訴大家千萬別這樣,這樣只能增加你的緊張感,你要多和你身邊的人聊天,其實在前一周收到通知時候學長還是很激動的,甚至會有些許失眠,但是面試一結束還是如釋重負一般。生活是苦難的,我們還要迎著苦難而上才可以呀!加油!
?
希望分享的內容對你我都有幫助
?