若是不用Travis作自動打包,如下是你用戶的體驗:
Travis不必定是最全能的,目前來看至少應該是跟github銜接最無縫的,
也就是說極可能你都感覺不到CI是在工做的html
# 回頭補,這個教程不少,今天先記錄一下踩過的坑linux
問題背景: 我想將組織下的項目關聯上 Travisgit
操做步驟:首先點擊左下角的Organizations, 接着右邊會出現這個組織對應的項目,可是有時候這裏顯示的不全,可能你的組織裏有5個項目,實際這裏只出現了三個。 這個問題出現的緣由是由於Travis沒有組織全部項目的權限。github
點擊右下角的Manage Repo on Github, 若是你在組織中是管理者的權限,你就會直接來到Github上的代碼倉庫權限管理,添加對應倉庫的權限保存windows
固然若是你不是組織的管理者,只是開發者的一員,你可能須要申請這樣的權限,點擊一下灰色的Request,就會發出申請,變成紅色的Cancel Request, 等待管理員審覈api
問題的錯誤描述: The following repositories cannot be migrated to travis-ci.com at this time because they are currently active on our legacy platform travis-ci.org.bash
這個問題的背景: 我這個項目是fork來的服務器
這個問題的原由: 我進了 travis-ci.com, 嘗試爲個人項目啓用travis,啓用時出現了這樣的報錯ide
問題翻譯一下就是說: 你如今不能在 travis-ci.com上,爲這個項目啓用travis服務,由於這個項目目前正在travis-ci.org上活躍着,你不能從org那邊遷移到com這邊
測試
問題處理方法: 忘記travis-ci.com 接着進入travis-ci.org, 這時候就發現這個項目能夠關聯上了。
這個問題的出現,我認爲是 jdclouddevelopers/terraform-provider-jdcloud 這個項目以前已經被關聯上了 travis-ci.org。 今天我登錄了官網,就覺得能夠順利開工。其實呢,項目關聯的是org官網,但我登錄的是com官網,兩邊實際上是不互通的,我在com這邊是操做不了org的東西的。
若是你到了這一步,說明你的Travis至少在工做了,你的每一次提交Travis都會按照你的 .travis.yml
來執行全部流程。 如今關心一下我想要打包怎麼作
問題背景: 我但願Travis不只能幫我編譯,還要編譯出 Windows/OSX/Linux 版本. 而後都發布了
script:
- cd ../.. && mv jdclouddevelopers terraform-providers && cd terraform-providers/terraform-provider-jdcloud
- make test
- make vendor-status
- make vet
# 編譯 + 打包壓縮
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o terraform-provider-jdcloud
- tar zcvf Linux-amd64.tar.gz terraform-provider-jdcloud
- CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o terraform-provider-jdcloud
- tar zcvf OSX-amd64.tar.gz terraform-provider-jdcloud
- CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o terraform-provider-jdcloud.exe
- zip Windows-amd64.zip terraform-provider-jdcloud.exe
deploy:
provider: releases
api_key: ${GITHUB_TOKEN}
file:
# 選擇上傳文件
- Linux-amd64.tar.gz
- OSX-amd64.tar.gz
- Windows-amd64.zip
skip_cleanup: true
on:
tags: true複製代碼
首先我在Script字段中規定了一下步驟:
tags = true
(我每次發佈新的tag) 的時候,幫我作一下 release(自動發佈), 我但願你能幫我上傳,我剛剛編譯出的三個文件發佈Release並非任何用戶都能發佈,必須得證實操做者的身份,因此你須要在這裏填上你的Personal Access Token, 你能夠在這裏點擊創造一個 Settings -> Developer settings -> PAT.
你不用給它不少權限,按照下面的圖這樣填寫就行了,給Token操控項目的權限。按照生成以後必定要保留好這個Token, 網頁一關Token就找不到了
接下來你能夠在 travis.yml 中直接填上這個api_key,可是咱們顯然不推薦這麼作,你能夠像我上面這樣,在Travis中把api_key作爲環境變量,而後在yaml文件中直接引用就行了,作法以下:
點擊項目右側的Settings按鈕,進入之後劃到最下面,有一個"Environment Variables" ,左邊填寫 GITHUB_TOKEN, 右邊填寫Token值,點擊保存,就能夠了
背景描述: 一開始個人代碼中有這樣的片斷
branches:
only:
- master複製代碼
我參考了這個回答,若是你的yaml中也存在這樣的片斷,那麼頗有可能就算你發佈了新tag,仍舊會被忽視掉,彷佛是一個Travis中存在的bug,後續版本中我刪掉了這一行
cd ../..
背景描述: 這個項目自己是從 terraform-providers 組織 fork 到 jdclouddevelopers 組織下,全部代碼都會有引用,就像下面這樣:
import "github.com/terraform-providers/terraform-provider-jdcloud/jdcloud"複製代碼
若是你clone官方分支: clone完成之後會創造出這樣一個路徑
${GOPATH}/src/github.com/terraform-providers/terraform-provider-jdcloud/jdcloud複製代碼
可是若是你clone咱們的分支: 你就會獲得這樣一個路徑
${GOPATH}/src/github.com/jdclouddevelopers/terraform-provider-jdcloud/jdcloud複製代碼
問題出現了,若是你只有一條 jdclouddevelopers的路徑,那麼在引用的時候就會找不到所須要的包,因此我第一步回到上層,修改文件夾名 jdclouddevelopers -> terraform-providers
由於你在剛剛的描述中說到,"請在我發佈新tag的時候,幫我作release" , ok , 那咱們來作tag
# 生成標籤,標籤對應的是當前最新的commit
git tag v0.0.1-travis
# 推送標籤,服務器接收到這個新標籤產生的信號,Travis開始工做
git push origin v0.0.1-travis
複製代碼
進入Release頁面 ,就能看到咱們剛剛想要生成的Linux/OSX/Windows文件,如今用戶終於能夠下下來就用了,並且也不用咱們手動上傳了!