Github Actions是Github推出的一個新的功能,能夠爲咱們的項目自動化地構建工做流,
例如代碼檢查,自動化打包,測試,發佈版本等等.入口在項目pull request的旁邊.
Github Actions 目前處於beta階段,須要申請Beta體驗資格.
Github Actions Beta 申請體驗資格入口網站.node
GitHub Actions allow you to implement custom logic without having to create an app to perform the task you need.
You can combine GitHub Actions to create workflows using an action defined in your repository,
a public repository on GitHub, or a published Docker container image.
GitHub Actions are customizable and can use the GitHub API and any publicly available third-party APIs to interact with a repository.
For example, an action can publish npm modules, send SMS alerts when urgent issues are created, or deploy production ready code.
You can discover, create, and share your GitHub Actions with the GitHub community.
GitHub Actions容許您實現自定義邏輯,而無需建立應用程序來執行您須要的任務.
你能夠經過經過在Github public倉庫定義Action或者經過你發佈的docker鏡像來建立workflow.
GitHub操做是可自定義的,能夠調用GitHub API和任何公開可用的第三方API與Github Repo進行交互.
例如,操做能夠發佈npm模塊,在發送緊急Issue時發送SMS警報,或部署production代碼.
您能夠經過GitHub社區發現,建立和共享您的GitHub Actions.git
工做流定義一個或多個Job.每一個Job都包含多個步驟,例如檢查源代碼,安裝Go工具鏈,構建和測試Go代碼等.
workflow由GitHub託管的計算機上運行.這些服務是對私有倉庫收費,功能倉庫免費.github
一下構建和測試Go包的最簡單的workflow.在你的public倉庫.github/workflows/go.yml
中建立一下代碼:golang
name: TechMojotvGo on: push jobs: build: name: Build runs-on: ubuntu-latest steps: - name: Set up Go 1.12 uses: actions/setup-go@v1 with: go-version: 1.12 id: go - name: Check out source code uses: actions/checkout@v1 - name: Build run: go build . - name: Test run: go test -v .
讓咱們來解讀一下.github/workflows/go.yml
docker
name
定義GitHub Actions 的名稱,Actions在GitHub的repo視圖的選項卡中可見.macos
name: TechMojotvGo
工做流由GitHub repo中的事件觸發.有許多事件類型,包括push,pull request,merge...等.npm
on:push
表示:當Github 收到push代碼.
您可使用yaml數組指定多個事件:ubuntu
on: [push, pull_request]
runs-on定義運行工做流的機器的操做系統.最多見的:windows
Job是一系列操做
jobs: build: name: BuildJobName
咱們只定義一個build的job, name
可見名稱爲BuildJobName.
咱們能夠定義多個job. job並行運行,但它們是在一個空的環境中開始的,因此若是你有多個步驟,好比構建和測試,那麼把他們合併成一個單一任務會更快.
- name: Set up Go 1.12 uses: actions/setup-go@v1 with: go-version: 1.12 id: go
Actions的美妙之處在於它們是開源的而且能夠被共享.
actions/setup-go是https://github.com/actions/se...
Actions能夠是JavaScript(node.js)腳本或docker鏡像.
actions/setup-go是一個node.js actions.
name
是人類可讀的步驟名稱.
Action能夠接受咱們提供的參數with
go-version
是一個actions/setup-go
可以解析的參數.它定義了咱們要安裝的Go版本.
- name: Build run: go build . - name: Test run: go test -v .
咱們能夠逐步執行任意命令.
Go代碼最多見的步驟是:構建它並運行測試.執行命令時的默認工做目錄是源代碼目錄.當步驟失敗時,workflow將中止,您將收到一封電子郵件.
有時你須要使用一個你不能公開的secret.在此示例中,咱們有一個部署到Netlify賬戶的項目.
在GitHub UI中,咱們定義了NETLIFY_TOKEN
使用Netlify進行身份驗證所需的secret
:
接下來咱們在.github/workflows/go.yml
中使用他
- name: Netlify deploy env: NETLIFY_TOKEN: ${{secrets.NETLIFY_TOKEN}} run: | ./netlifyctl -A ${{secrets.NETLIFY_TOKEN}} deploy || true cat netlifyctl-debug.log || true
咱們能夠在工做流.yml文件中訪問secret {{ secrets.NETLIFY_TOKEN }}
.咱們能夠做爲參數傳遞給用runor
執行的命令,如本例所示,設置環境變量use env.
請記住,已記錄執行命令的stdout
和stderr
,所以請當心不要打印secret.更多關於secret的信息.
workflow正在遠程服務器上運行,所以若是出現問題,可能很難弄清楚緣由.
這裏有一些tips:
pwd
")因爲github action還算比較新的功能,大部分功能機制和Travis/CircleCI相似,可是Github Actions能夠獲取更多的Github Actions權限,目前還在Beta狀態還有不少不足.
相關文檔