深入探究Github Actions

Github是目前全球範圍內最受歡迎的開源協作平台之一,而GithubActions則是Github最新推出的一項CI/CD功能,它允許開發者在Github上創建自動化工作流程,從而更高效地構建、測試、部署他們的代碼。在這篇文章中,我們將從多個方面對GithubActions進行詳細的闡述,希望能幫助讀者更好地了解和使用這項功能。

一、Github Actions介紹

Github Actions是一項CI/CD功能,它允許開發者在創建Github倉庫時定義一系列的自動化任務,從而更高效地構建、測試和部署他們的代碼。

每一個Github Action都由一個或多個任務組成,這些任務可以運行在Github的特定事件觸發器(如Push,Pull Request,或者其他定製事件)之後。任務可以運行在一個特定的操作系統中,例如Ubuntu、Windows或macOS。開發者也可以自定義環境變量、腳本、Docker鏡像等等,以便更加靈活地對工作流程進行控制。

Github Actions還提供了一個可視化的工作流程編輯器,讓開發者可以更輕鬆地創建、修改和管理他們的工作流程:

name: My Workflow
on: 
  push:
    branches: [ master ]
jobs:
  job1:
    name: Job 1
    runs-on: ubuntu-latest
    steps:
    - name: Step 1
      run: echo "Hello World"
    - name: Step 2
      run: echo "Goodbye World"

上面是Github Actions的一個例子,這個工作流程會在master分支有新的代碼Push到Github時執行。它的任務包括兩個步驟:Step 1和Step 2,它們都是運行了一個echo命令來輸出一些文本。

二、Github Actions的優勢

Github Actions的出現為開發者帶來了很多優勢:

1. 集成度高

Github Actions無需轉移代碼倉庫,可以直接集成在Github中,與代碼完美融合,開發者可以在同一界面進行代碼開發、測試和發布。

2. 靈活性高

Github Actions提供了靈活的任務執行環境和自定義操作,可以讓開發者自由地根據不同的需求選擇不同的操作系統和編程語言。同時,Github Actions對第三方集成也非常友好,不論是自己編寫的腳本還是使用第三方的集成開發庫,都可以輕鬆地在Github Actions中使用。

3. 易於使用

雖然Github Actions非常強大,但是它的使用並不複雜,幾乎所有開發者都可以在不需要花費太多時間學習的情況下輕鬆上手。Github Actions提供了豐富的文檔和教程,使得開發者可以更快地學習和使用Github Actions。

三、Github Actions的應用場景

Github Actions的應用場景非常廣泛,下面是一些使用Github Actions的典型場景:

1. 自動化構建和測試

通過Github Actions,可以在代碼Push/PR等事件觸發時自動進行代碼構建和單元測試,從而提高開發效率,降低代碼開發中的錯誤率。

2. 自動化部署

通過Github Actions,可以定義自動化任務在代碼合併到主分支時部署到生產環境,或是在代碼Push到特定分支後部署到預發布環境等。這樣可以大大簡化部署流程和提高部署效率。

3. 提交代碼時進行自動化檢查

通過Github Actions,可以在代碼提交前自動進行代碼格式檢查、代碼風格檢查、代碼複雜度檢查等等,從而規範代碼質量,並提高開發效率。

四、Github Actions的實例分享

下面分享一個使用Github Actions自動化構建docker鏡像和推送到Docker Hub的例子。

1. 創建Dockerfile

首先需要創建一個Dockerfile文件,用於構建鏡像。具體內容如下:

FROM node:latest
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]

上面的Dockerfile中,首先基於Node.js官方的鏡像構建一個新的鏡像,然後在工作目錄中安裝依賴包,複製所有代碼到容器里,將容器的3000端口暴露出來,並最終執行npm start命令。

2. 配置工作流程文件

創建一個.yml文件添加在.github/workflows/目錄下,具體內容如下:

name: build and deploy
on:
  push:
    branches:
    - master
jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v2
      
    - name: Set up QEMU
      uses: docker/setup-qemu-action@v1
      
    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1
      
    - name: Login to Docker Hub
      uses: docker/login-action@v1
      with:
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}

    - name: Build and publish
      id: docker_build
      uses: docker/build-push-action@v2
      with:
        push: true
        tags: yourdockerhubusername/repo-name:latest,yourdockerhubusername/repo-name:$GITHUB_SHA
        context: .
        file: ./Dockerfile

上面的.yml文件首先定義了Github Action的名稱和觸發工作流程的事件(在push到master分支時觸發)。然後它定義了一個build的任務,該任務運行在Ubuntu操作系統上。

在這個任務中,它首先使用actions/checkout@v2操作獲取代碼,並使用docker/setup-qemu-action和docker/setup-buildx-action操作設置Docker構建環境。然後,它使用docker/login-action操作進行Docker Hub的登錄,以便可以將構建後的Docker鏡像推送到Docker Hub上。最後,它使用docker/build-push-action操作進行構建、打標籤和推送鏡像到Docker Hub。

結語

通過本文的介紹和實例分享,相信大家對Github Actions有了更深入的認識。使用Github Actions可以幫助開發者更高效地構建、測試和部署他們的代碼,從而提高開發效率,降低代碼開發中的錯誤率。同時,在Github Actions的作用下,代碼開發和部署的過程變得更加簡單、快捷和標準化。我們鼓勵開發者從中挖掘更多的實現方式,讓Github Actions變成您開發過程中的得力助手。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/154675.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-16 14:13
下一篇 2024-11-16 14:13

相關推薦

  • GitHub好玩的開源項目

    本文旨在介紹GitHub上一些好玩的開源項目,並提供代碼示例供讀者參考和學習。 一、Emoji列表 GitHub上有一份完整的Emoji列表,它支持各種平台和設備,方便用戶在Git…

    編程 2025-04-28
  • Python每日一練Github

    本文將從多個方面詳細闡述Python每日一練Github,為想要學習Python的編程人員提供一個好的學習資源。 一、什麼是Python每日一練Github Python每日一練G…

    編程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • 深入理解byte轉int

    一、字節與比特 在討論byte轉int之前,我們需要了解字節和比特的概念。字節是計算機存儲單位的一種,通常表示8個比特(bit),即1字節=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • 深入了解scala-maven-plugin

    一、簡介 Scala-maven-plugin 是一個創造和管理 Scala 項目的maven插件,它可以自動生成基本項目結構、依賴配置、Scala文件等。使用它可以使我們專註於代…

    編程 2025-04-25
  • 深入了解LaTeX的腳註(latexfootnote)

    一、基本介紹 LaTeX作為一種排版軟件,具有各種各樣的功能,其中腳註(footnote)是一個十分重要的功能之一。在LaTeX中,腳註是用命令latexfootnote來實現的。…

    編程 2025-04-25
  • 深入理解Python字符串r

    一、r字符串的基本概念 r字符串(raw字符串)是指在Python中,以字母r為前綴的字符串。r字符串中的反斜杠(\)不會被轉義,而是被當作普通字符處理,這使得r字符串可以非常方便…

    編程 2025-04-25
  • 深入了解Python包

    一、包的概念 Python中一個程序就是一個模塊,而一個模塊可以引入另一個模塊,這樣就形成了包。包就是有多個模塊組成的一個大模塊,也可以看做是一個文件夾。包可以有效地組織代碼和數據…

    編程 2025-04-25

發表回復

登錄後才能評論