国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

最佳實踐-使用Github Actions來構建跨平臺容器鏡像

這篇具有很好參考價值的文章主要介紹了最佳實踐-使用Github Actions來構建跨平臺容器鏡像。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

公眾號「架構成長指南」,專注于生產實踐、云原生、分布式系統(tǒng)、大數(shù)據技術分享。

前言

最近在寫K8s的相關系列文章,因為有涉及到鏡像構建,發(fā)現(xiàn)在Mac m1的Arm架構下構建的部分鏡像,沒法在X86架構下使用,不兼容。

嘗試網上介紹的各種方式,都已失敗告終,效果如下:

最終還是GithubActions拯救了我,下面介紹一下Actions用法,希望對你有幫助。

概述

GitHub Actions 是一種持續(xù)集成和持續(xù)交付 (CI/CD) 平臺,可用于自動執(zhí)行生成、測試和部署管道。 您可以創(chuàng)建工作流程來構建和測試存儲庫的每個拉取請求,或將合并的拉取請求部署到生產環(huán)境。

GitHub Actions 不僅僅是 DevOps,還允許您在存儲庫中發(fā)生其他事件時運行工作流程。 例如,您可以運行工作流程,以便在有人在您的存儲庫中創(chuàng)建新問題時自動添加相應的標簽。

GitHub 提供 Linux、Windows 和 macOS 虛擬機來運行工作流程,或者您可以在自己的數(shù)據中心或云基礎架構中托管自己的自托管運行器。

以上是GitHub的官方介紹,其實就是有一個類似于Jenkinspipeline,支持手動或者代碼等方式觸發(fā),支持pipeline運行在 Linux、Windows 和 macOS等虛擬機中,下面是一個示意圖

GitHub的pipeline使用yaml進行維護,同時內置了很多現(xiàn)成的組件,拿來即用,下面就以具體的一個實例進行介紹,如何使用

我們將做什么?

我們會構建一個前端工程的docker鏡像,并推送此鏡像至DockerHub倉庫,同時在k8s中拉取并運行驗證

1. 創(chuàng)建一個前端項目

工程已經創(chuàng)建好,地址:https://github.com/dongweizhao/frontend

其中為了方便部署,前端資源都存放在工程的dist目錄

2. 編寫Dockerfile

引用nginx鏡像,同時拷貝dist目錄下資源值容器的/frontend,同時拷貝nginx.conf覆蓋nginx鏡像默認的配置文件,以下文件工程中都已經涵蓋
nginx.conf

server{
    listen 80;
    server_name localhost;
     root  /frontend;
     index index.html index.htm;

     location /login {
             try_files $uri $uri/ /login.html;
     }
}

Dockerfile

from nginx
copy ./dist /frontend
run chown nginx.nginx /frontend -R
copy nginx.conf /etc/nginx/conf.d/default.conf

3. Actions配置

配置DockerHub賬號密碼


點擊New repository secret按鈕,創(chuàng)建對應的變量。

例如,我要創(chuàng)建DOCKER_HUB_USERNAME變量,值為root,配置如下:


創(chuàng)建worfkflow文件
點擊Actions

Actions內置了很多模版,拿過來配置下即可,這里我們用Publish Docker Container,選擇其他也行,最終改成以下下文件

#workflow名稱
name: ci
# 觸發(fā)條件
on:
#github頁面手動觸發(fā)
  workflow_dispatch: 
#打tag觸發(fā),必須是v開頭的
  push:
    tags:
      - "v*.*"
#變量配置      
env:
  #鏡像名稱
  IMAGE_NAME: frontend
  #dockerHub倉庫名稱
  DOCKER_REGISTRY: dweizhao
jobs:
  build-image:
    #運行的環(huán)境  
    runs-on: ubuntu-latest
    env:
      TZ: Asia/Shanghai
    outputs:
      tags: ${{ steps.output-id.outputs.v }}
    steps:
      # 拉取代碼,同時獲取tag,如果獲取不到則默認值為edge,并賦值給v變量
      - uses: actions/checkout@v3
      - id: output-id
        run: |
          VERSION=edge
          if [[ $GITHUB_REF == refs/tags/* ]]; then
            VERSION=${GITHUB_REF#refs/tags/v}
          fi
          echo "v=${VERSION}" >> $GITHUB_OUTPUT
     # Docker配置多平臺環(huán)境
      - name: Set up Docker BuildX
        uses: docker/setup-buildx-action@v2          
      # 登錄鏡像倉庫
      - name: Login Docker Hub
        uses: docker/login-action@v1
        with:
        #這里引用的變量為上一步配置的變量
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_PWD }}     
      # 打包構建并推送
      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          file: ./Dockerfile
          platforms: |
            linux/amd64
            linux/arm64
          #推送到鏡像倉庫  
          push: true
          # 這里會構建兩個版本鏡像,
          # 1.dweizhao/backend:latest
          # 2.  output-id步驟中獲取的v,構建dweizhao/backend:edge或者dweizhao/backend:對應tag值
          tags: |
            ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.output-id.outputs.v }}
            ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest

以上文件創(chuàng)建完成,會在工程目錄下創(chuàng)建一個.github的目錄,保存有我們配置的文件

同時再次點擊Actions按鈕會出現(xiàn),以下界面

這里的ci就是配置的workflow的name名稱

4. 鏡像構建并發(fā)布

我們測試兩種方式,分別如下:

手動觸發(fā)構建

根據箭頭表示,點擊run wofkflow按鈕,執(zhí)行任務

點擊ci可以查看任務執(zhí)行詳情,可以看到任務執(zhí)行步驟以及對應狀態(tài)以及相關日志

以上結果表明,執(zhí)行成功,查看dockerhub鏡像倉庫,可以看到推送已經成功,由于是手動觸發(fā)獲取不到tag,所以構建了edgetag的鏡像

創(chuàng)建tag觸發(fā)構建
創(chuàng)建了一個v1.0.0

自動觸發(fā)構建

可以鏡像倉庫在同一時間,構建了latest1.0.0tag鏡像

5. 容器部署驗證

下面我們在k8s環(huán)境中拉取frontent前端鏡像,驗證是否部署成功。

我們創(chuàng)建了frontenddeployment,同時指定了鏡像為dweizhao/frontend:latest

可以看到鏡像啟動成功

結論

如果你用的是mac的m系列芯片,可以嘗試使用Github Actions來構建你的鏡像,前提是你自己的個人項目,Github Actions功能很強大,如果感興趣可以繼續(xù)去研究。文章來源地址http://www.zghlxwxcb.cn/news/detail-747123.html

到了這里,關于最佳實踐-使用Github Actions來構建跨平臺容器鏡像的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Flutter 實戰(zhàn):構建跨平臺應用

    Flutter 實戰(zhàn):構建跨平臺應用

    Flutter是由Google開發(fā)的一款開源移動應用開發(fā)框架,它可以幫助開發(fā)者在iOS和Android平臺上快速、高效地開發(fā)應用。Flutter使用Dart語言作為開發(fā)語言,具有跨平臺兼容性高、開發(fā)效率快、性能優(yōu)異等特點。本文將通過實戰(zhàn)案例,介紹如何使用Flutter構建跨平臺應用。 在開始Flutte

    2024年02月05日
    瀏覽(1262)
  • Tauri開發(fā)的程序,使用github action快速跨平臺編譯并發(fā)布流程,包括Windows、mac、m芯片、linux等,以及常見報錯

    Tauri開發(fā)的程序,使用github action快速跨平臺編譯并發(fā)布流程,包括Windows、mac、m芯片、linux等,以及常見報錯

    Tauri 嚴重依賴原生庫和工具鏈,因此目前無法在某一平臺實現(xiàn)交叉編譯。最佳選擇是使用托管在?GitHub Action、Azure Pipelines、GitLab?或其他選項上的 CI/CD 管道進行編譯。管道可以同時為每個平臺運行編譯,使編譯和發(fā)布過程更加容易。 為了便于設置,官方目前提供?Tauri Action。

    2024年02月10日
    瀏覽(28)
  • Flutter:構建跨平臺應用的未來選擇

    隨著移動設備的普及和技術的不斷發(fā)展,跨平臺移動應用開發(fā)成為了一個熱門的需求。Flutter作為一款由Google開發(fā)的開源移動應用開發(fā)框架,受到了越來越多的關注。本文將帶你了解Flutter的優(yōu)勢、應用場景以及如何使用Flutter進行開發(fā)。 一、Flutter的優(yōu)勢 1.跨平臺:Flutter使用

    2024年02月09日
    瀏覽(97)
  • 如何使用CodeceptJS、Playwright和GitHub Actions構建端到端測試流水線

    如何使用CodeceptJS、Playwright和GitHub Actions構建端到端測試流水線

    介紹 端到端測試是軟件開發(fā)的一個重要方面,因為它確保系統(tǒng)的所有組件都能正確運行。CodeceptJS是一個高效且強大的端到端自動化框架,與Playwright 結合使用時,它成為自動化Web、移動甚至桌面 (Electron.js) 應用程序比較好用的工具。 在本文中,作者探討如何使用 CodeceptJS、

    2024年02月05日
    瀏覽(24)
  • Kotlin MultiPlatform:構建跨平臺應用的未來

    Kotlin MultiPlatform:構建跨平臺應用的未來

    1.1 Kotlin MultiPlatform簡介 Kotlin MultiPlatform(簡稱KMP)是一種由JetBrains開發(fā)的跨平臺開發(fā)解決方案,它建立在Kotlin語言之上。KMP允許開發(fā)者使用一套Kotlin代碼來構建適用于多個平臺的應用程序,包括移動應用、后端服務和嵌入式系統(tǒng)等。KMP提供了共享代碼的功能,同時也允許開發(fā)

    2024年04月17日
    瀏覽(86)
  • 構建跨設備3D應用:HOOPS的跨平臺開發(fā)能力

    構建跨設備3D應用:HOOPS的跨平臺開發(fā)能力

    在當今數(shù)字化和可視化需求不斷提升的時代,三維技術的應用越來越廣泛,尤其在制造、建筑、工程及媒體行業(yè)。HOOPS,由Tech Soft 3D開發(fā),是一套全面的軟件開發(fā)工具包,用于構建高性能的三維應用程序。該工具包涵蓋了從三維渲染到復雜數(shù)據交換的多個方面,支持廣泛的文

    2024年04月25日
    瀏覽(97)
  • Avalonia學習實踐(二)--跨平臺支持及發(fā)布

    Avalonia學習實踐(二)--跨平臺支持及發(fā)布

    Avalonia主打跨平臺,號稱一套代碼支持Windows, macOS, Linux, iOS, Android操作系統(tǒng),其基礎是基于.NET Standard 2.0的一系列庫,也就是只要平臺能支持.NET Standard 2.0,就能運行Avalonia開發(fā)的應用。然而理想很豐滿、現(xiàn)實很骨感,并不是說跨平臺Avalonia沒有做到,而是過程中免不了會有些小

    2024年02月07日
    瀏覽(86)
  • 探索 Electron Egg:構建跨平臺桌面應用的理想選擇

    隨著Web技術的不斷發(fā)展,構建跨平臺桌面應用的需求也在逐漸增加。Electron Egg作為一個結合了Electron和Vue.js的框架,為開發(fā)者提供了一個簡單而強大的工具,使他們能夠快速構建出優(yōu)秀的桌面應用。本文將介紹Electron Egg的核心特性、優(yōu)勢以及如何開始使用這個框架。 什么是

    2024年02月20日
    瀏覽(27)
  • Flutter與Android開發(fā):構建跨平臺移動應用的新選擇

    Flutter與Android開發(fā):構建跨平臺移動應用的新選擇

    本文內容提綱如下: 介紹Flutter技術:Flutter是一種由Google推出的開源UI工具包,用于構建高性能、跨平臺的移動應用。文章將介紹Flutter的基本概念、特點和優(yōu)勢,包括其快速的開發(fā)速度、一致的用戶界面和豐富的UI組件庫等。 Flutter與Android開發(fā)的對比:文章將對比Flutter與傳統(tǒng)

    2023年04月21日
    瀏覽(1004)
  • WEB跨平臺桌面程序構建工具對比(Electron、Tauri、Wails)

    WEB跨平臺桌面程序構建工具對比(Electron、Tauri、Wails)

    WEB 跨平臺 桌面應用程序 顧名思義就是用 JavaScript、HTML、CSS 等前端技術構建跨平臺的桌面應用,WEB 負責 GUI 渲染并與后端(如 Node.js、Python、Rust 等)交互,從而突破自身無法操作 OS 層級資源的限制。其實現(xiàn)在如火如荼的 小程序 原理也類似,只是把后端換成宿主 APP (如微信

    2024年02月05日
    瀏覽(76)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包