這周突然發現公司項目的GitHub代碼庫多了一個Tab頁,叫做GitHub Action。於是瞭解了一下,發現這就是大家期待已久的自動化功能。自動化不只是我們常說的CICD(持續集成和持續部署),通過定義一個yml文件我們可以實現更多的動作。這個yml配置文件會保存在代碼庫的.github文件夾,所以fork出去的代碼庫也跟着自動開啓了相應的GitHub Action功能。
下面就是我們代碼庫裏一個簡單的例子,要實現的功能就是每個人發Pull Request或者Merge到master主庫時,都會自動觸發Gradle編譯。Gradle編譯過程包括了Checkstyle,單元測試,集成測試等。編譯通過後,在你的Pull Request上面會有一個標記。
https://github.com/opendistro-for-elasticsearch/sql/blob/master/.github/workflows/gradle.yml
name: Java CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.12
uses: actions/setup-java@v1
with:
java-version: 1.12
- name: Build with Gradle
run: ./gradlew build
除了完全自定義,GitHub已經貼心地內置了許多Action。這些Action涵蓋了許多常用的任務,像對各種編程語言和構建工具的支持等。如果這些預定義Action無法滿足你的話,可以像我們一樣自定義。具體GitHub提供了多大的自由度,請看官方文檔:https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions。