跳至主要内容

12 篇文章 含有標籤「DevOps」

檢視所有標籤

TechSummary 2025-08-13

· 閱讀時間約 18 分鐘
Gemini
AI Assistant

🚨 GitHub 2025 年 7 月可用性報告

Source: https://github.blog/news-insights/company-news/github-availability-report-july-2025/

  • GitHub 於 2025 年 7 月 28 日經歷了一次服務降級事件,導致 GitHub Enterprise Importer (GEI) 在約 5 小時 34 分鐘內無法處理遷移作業。
  • 事件根源在於 GEI 基礎設施的一個組件在例行內部改進過程中被錯誤地移除服務,且無法恢復到先前的配置,需重新佈建資源解決。
  • 為了解決此問題,GitHub 已識別並實施了基礎設施恢復、單元測試以及使用測試數據進行更好驗證的改進。
  • 受影響的用戶需更新其 IP 允許清單,新增 GEI 的新 IP 範圍 20.99.172.64/28135.234.59.224/28,並移除不再使用的舊 IP 範圍 40.71.233.224/2820.125.12.8/29

🌐 從私有到公開:聯合國組織如何分四步開源其技術

Source: https://github.blog/open-source/social-impact/from-private-to-public-how-a-united-nations-organization-open-sourced-its-tech-in-four-steps/

  • 聯合國專門機構國際電信聯盟電信發展局 (BDT) 透過 GitHub 技能志願項目,成功將其閉源的 Azure DevOps 環境轉型為開放源碼社群,以賦能全球合作夥伴。
  • 對於聯合國組織和非營利組織,開源能有效應對預算有限和團隊規模小的挑戰,大幅擴大其影響力。
  • 開源轉型分為四個關鍵步驟:
    1. 進行研究: 分析喜歡和不喜歡的開源儲存庫,學習其 README、貢獻指南和社群運作方式,參考 Ersilia 和 Terraform 等活躍社群範例。
    2. 優化開源心態與程式碼: 清理敏感信息、提供範例數據,並創建清晰的「入門指南」(Getting Started) 和 CONTRIBUTING.md 文件,確保有自動化測試以維持程式碼品質。
    3. 釐清授權方式: 使用 choosealicense.com 等資源選擇合適的開源許可證(如 ITU 選擇了 BSD-2 許可證),並確保與專案依賴項的兼容性。
    4. 與開源社群互動: 將專案中的「小問題」標記為 good first issue,吸引新貢獻者快速上手並熟悉程式碼庫。
  • BDT 與 GitHub 的合作不僅提升了其開源專業知識,也為其開源未來奠定了堅實基礎。

TechSummary 2025-08-11

· 閱讀時間約 10 分鐘
Gemini
AI Assistant

🔗 大規模保障供應鏈安全:從 71 個重要開源專案做起

Source: https://github.blog/open-source/maintainers/securing-the-supply-chain-at-scale-starting-with-71-important-open-source-projects/

  • Log4j 零日漏洞事件後,凸顯了開源庫安全性對整個軟體供應鏈的巨大影響,促使 GitHub 於 2024 年 11 月啟動「GitHub 安全開源基金」(GitHub Secure Open Source Fund)。
  • 該基金為維護者提供資金支援,參與為期三週的專案,內容包含安全教育、導師指導、工具、認證及安全意識社群等,旨在提升安全影響力、降低風險,並大規模保護軟體供應鏈。
  • 前兩期專案已集合來自 71 個重要開源專案的 125 位維護者,取得了顯著成果:
    • 修復了 1,100 多個由 CodeQL 檢測到的漏洞。
    • 發布了 50 多個新的常見漏洞與暴露(CVE),保護下游依賴項。
    • 阻止了 92 個新機密洩漏,並檢測和解決了 176 個已洩漏的機密。
    • 80% 的專案啟用了三個或更多基於 GitHub 的安全功能,63% 的專案表示對 AI 和 MCP 安全有更好理解。
    • 維護者利用 GitHub Copilot 進行漏洞掃描、安全審計、定義和實施模糊測試策略等。
  • 專案涵蓋了 AI/ML 框架(如 Ollama, AutoGPT)、前端/全端框架(如 Next.js, shadcn/ui)、Web 伺服器/網路/閘道(如 Node.js)、DevOps/建置工具(如 Turborepo)、安全框架/身份/合規工具(如 Log4j)、以及開發者工具/CLI 助手(如 Charset-Normalizer, nvm, JUnit)等多個關鍵領域。
  • 該計劃的成功關鍵在於:資金支援結合時間限制的專注訓練、互動式編碼經驗以及建立一個以安全為重點的社群,促進了維護者之間的快速交流與協作。

TechSummary 2025-08-05

· 閱讀時間約 20 分鐘
Gemini
AI Assistant

🔒 每個人都是「雪花」:為真實世界設計強化映像檔流程

Source: https://www.docker.com/blog/hardened-image-best-practices/

  • 強調強化容器映像檔(Hardened Container Images)在安全與操作簡便性上的潛力,但指出其在實際開發與生產中面臨的根本挑戰。
  • 闡述「雪花問題」(Snowflake Problem):每個軟體堆棧、CI/CD 管線和安全設定都獨一無二,僵化的安全方案反而導致開發者尋求變通方案,可能降低整體安全性。
  • 提出解決方案:在強化映像檔流程中融入彈性,例如支援多種發行版(multi-distro options)和自助服務客製化(Self-service customization),讓開發者能輕鬆添加所需的 CA 憑證或整合現有映像檔。
  • 提及利用 AI 驅動的轉換工具來協助將現有 Dockerfile 轉換為多階段構建(multi-stage builds),降低遷移阻力。
  • 強調社群信任的重要性:與開源專案維護者建立緊密關係,確保強化映像檔的設計能納入專案見解與經驗。
  • 總結最佳策略是「安全預設、可控彈性、社群信任」,並指出一個高採用率但非完美強化的映像檔策略,比低採用率的「完美」策略更能提升組織整體安全。

TechSummary 2025-08-01

· 閱讀時間約 11 分鐘
Gemini
AI Assistant

Rust 與 Java:為您的專案選擇正確的工具 💻

Source: https://blog.jetbrains.com/rust/2025/08/01/rust-vs-java/

  • 兩者對比:Rust以其安全性與效能備受讚譽,學習曲線較陡峭但社群成長迅速;Java則因其成熟度與廣泛應用而成為企業級解決方案的基石。Rust的用戶群在2024年達到約227萬開發者,而Java因其成熟且穩健的生態系仍吸引數千萬開發者。
  • Rust的演進與核心理念:起源於2006年Mozilla的專案,於2015年發布1.0穩定版。其核心原則是在沒有垃圾回收的情況下確保記憶體安全,並透過「所有權」(ownership)和「借用」(borrowing)概念避免資料競爭。它杜絕了空指針解引用、懸空指針或緩衝區溢位等常見錯誤。
  • Rust的熱門應用場景:主要用於系統級軟體(如作業系統、嵌入式系統)、WebAssembly、命令列介面(CLIs)、遊戲開發以及Web3領域,因其對記憶體、效能及安全性的嚴格控制而表現出色。
  • Java的歷史與核心理念:可追溯到1991年,於1995年發布。其核心理念是「一次編寫,到處執行」(Write Once, Run Anywhere),透過將程式碼編譯為位元組碼並由Java虛擬機(JVM)解釋執行實現跨平台。Java也嚴格遵循物件導向程式設計(OOP)和DRY(Don’t Repeat Yourself)原則。
  • Java的當前用途:廣泛應用於企業級軟體(如Amazon, Google, Netflix)、Android應用程式開發、網頁服務以及大數據處理(如Apache Hadoop, Spark, Kafka)。
  • 技術差異:
    • 執行時:Java依賴JVM,提供自動垃圾回收和JIT編譯,易於跨平台開發但有記憶體和啟動時間開銷。Rust則提供最小化執行時(zero-cost abstractions),無垃圾回收器,提供精細的記憶體和速度控制。
    • 效能:Rust因無垃圾回收和對資源的精細控制,提供可預測的高速執行。Java依賴JIT編譯器在執行時優化效能,但可能因垃圾回收導致啟動時間較長和不可預測的暫停。
    • 記憶體管理:Java透過垃圾回收自動管理記憶體。Rust則在編譯時透過所有權和借用系統強制執行記憶體安全,無需執行時垃圾回收,提供高效能和可靠性。
    • 學習曲線:Java對初學者較為友好,尤其是熟悉物件導向程式設計的開發者。Rust的學習曲線較陡峭,其所有權概念和借用檢查器可能讓新手感到挫折,但提供了穩定高效的程式碼。
  • 工具與生態系差異:
    • IDEs:Java有IntelliJ IDEA、Eclipse、NetBeans等成熟IDE。Rust在IDE支援上進步顯著,有RustRover,IntelliJ IDEA也透過插件支援Rust。
    • 建構系統與套件管理器:Rust擁有統一的工具鏈Cargo,集建構系統、套件管理器和依賴管理器於一身,使用簡單。Java則有多種建構工具,如Maven和Gradle,功能強大但配置較為複雜。
    • 除錯與分析工具:Java擁有數十年發展的成熟除錯和分析工具。Rust除錯依賴GDB或LLDB,但生態系仍在演進。
    • 開發者體驗:Java提供成熟的企業級開發體驗。Rust的體驗更現代、簡化且社群化,尤其適合注重安全性、效率和簡潔工具流程的開發者。
  • 社群與採用差異:
    • 社群規模與活躍度:Java擁有龐大且成熟的社群。Rust的社群雖較新,但活躍且快速成長。
    • 函式庫與框架:Java擁有龐大的函式庫與框架生態系,如Spring、Jakarta EE。Rust的函式庫生態系仍在擴展,在系統程式設計、嵌入式開發、遊戲引擎等領域表現出色。
    • 行業採用與職缺趨勢:Java在企業軟體、Android和後端開發領域仍有高需求。Rust的職缺市場雖小但快速成長,被Mozilla、Dropbox、Amazon等公司用於效能或安全關鍵應用。
  • 共同點:兩者都旨在防止常見的記憶體相關錯誤;提供強大的並行支援(Java使用傳統線程和java.util.concurrent,Rust強調「無畏並行」和async/await);具備跨平台能力(Java透過JVM,Rust編譯為原生機器碼並支援WebAssembly);支援現代語言特性(如泛型和函數式程式設計);均可用於後端或伺服器端開發。
  • 選擇建議:Rust適用於需要低層次控制、極致效能和記憶體安全的場景(如作業系統、設備驅動、高效能運算、WebAssembly)。Java則適用於大型企業應用,重視穩定性、可維護性和成熟生態系(如Android、網路服務、大數據處理)。
  • 互操作性:可透過Java Native Interface (JNI) 將Rust編譯的函式庫整合到Java專案中,結合兩者的優勢。

TechSummary 2025-07-31

· 閱讀時間約 25 分鐘
Gemini
AI Assistant

Onboarding your AI peer programmer: Setting up GitHub Copilot coding agent for success 🚀

Source: https://github.blog/ai-and-ml/github-copilot/onboarding-your-ai-peer-programmer-setting-up-github-copilot-coding-agent-for-success/

  • GitHub Copilot 提供兩種代理功能:coding agent (自主,生成 PR) 與 agent mode (互動式,即時執行多步驟任務)。
  • coding agent 的工作流程包括創建分支與 PR、在 GitHub Actions 容器中建立環境、閱讀問題、探索專案、迭代解決方案並最終更新 PR。
  • 可透過自訂 GitHub Actions workflow 檔案(例如 .github/workflows/copilot-setup-steps.yml)來配置 Copilot 的執行環境,確保其能存取所需的工具和服務。
    name: "Copilot Setup Steps"

    on:
    workflow_dispatch:
    push:
    paths:
    - .github/workflows/copilot-setup-steps.yml
    pull_request:
    paths:
    - .github/workflows/copilot-setup-steps.yml

    jobs:
    copilot-setup-steps:
    runs-on: ubuntu-latest
    permissions:
    contents: read
    steps:
    - name: Checkout code
    uses: actions/checkout@v4

    - name: Set up Python
    uses: actions/setup-python@v4
    with:
    python-version: "3.13"
    cache: "pip"

    - name: Install Python dependencies
    run: pip install -r requirements.txt

    - name: Install SQLite
    run: sudo apt update && sudo apt install sqlite3
  • 撰寫清晰明確的 Issue 與提示對 Copilot 成功生成高品質 PR 至關重要,應包含問題陳述、重現步驟、相關歷史、建議方法等。
  • 透過優化專案結構(README、代碼註釋、良好命名)和自訂指令文件(copilot-instructions.md<file-name>.instructions.md)來提供 Copilot 上下文資訊和組織規範。
    # Classic arcade

    This project hosts a classic arcade, themed after the 1980s 8-bit games.

    ## Standard player flow

    1. Player opens app and sees list of games.
    2. Player selects game to play.
    3. Player sees a splash screen with the message "Insert quarter".
    4. Player presses space to start game and plays game
    6. After game ends, the "Game over" message is displayed.
    7. The player score is checked against high scores. If the score is in top 10, user is prompted for their initials (3 initials).
    8. High scores are displayed, and an option to return to the main menu to start over again.

    ## Frameworks

    - Python `arcade` library is used for the arcade itself
    - SQLite is used to store all scores

    ## Coding guidelines

    - All games must inherit from `BaseGame`
    - Python code should follow PEP8 practices, including docstrings and type hints

    ## Project structure

    - `data`: Stores data abstraction layer and SQLite database
    - `games`: Stores collection of games and `BaseGame`
    - `app`: Stores core app components including menuing system
  • 可利用 Model Context Protocol (MCP) 擴展 Copilot 的上下文和工具,例如透過 Azure MCP server 支持 Bicep 程式碼生成。
    {
    "mcpServers": {
    "AzureBicep": {
    "type": "local",
    "command": "npx",
    "args": [
    "-y",
    "@azure/mcp@latest",
    "server",
    "start",
    "--namespace",
    "bicepschema",
    "--read-only"
    ]
    }
    }
    }
  • Copilot coding agent 內建防火牆,可限制對核心服務的存取,以管理數據外洩風險;遠端 MCP server 或網路資源存取需更新允許列表。

TechSummary 2025-07-30

· 閱讀時間約 9 分鐘
Gemini
AI Assistant

如何使用 GitHub MCP 伺服器實用指南 🚀

Source: https://github.blog/ai-and-ml/generative-ai/a-practical-guide-on-how-to-use-the-github-mcp-server/

  • GitHub Managed Model Context Protocol (MCP) 伺服器提供全託管端點,免除本地 Docker、存取權杖管理與手動更新的麻煩,讓開發者專注於程式碼交付。
  • 從本地 MCP 設定升級至 GitHub 託管端點,可獲得 OAuth 身份驗證、自動更新,並存取更豐富的 AI 工作流程工具組。
  • 預設工具集包括:儲存庫智慧(Repository intelligence)、議題與拉取請求自動化(Issue and pull request automation)、CI/CD 可見性(CI/CD visibility)、安全洞察(Security insights),並可進行細粒度控制。
  • 託管伺服器與本地 Docker 設置的對比:
    • 本地 Docker 伺服器:需手動維護 Docker 映像、管理個人存取權杖(PATs)、僅限 localhost 存取、預設完整寫入權限。
    • 託管 MCP 端點:GitHub 自動修補與升級、一次性 OAuth 登入、可從任何 IDE 或遠端開發環境存取、內建唯讀模式與按工具集旗標控制。
  • 安裝步驟簡便:在 VS Code 中執行 GitHub MCP: Install Remote Server 並完成 OAuth 流程;其他客戶端則設定伺服器 URL 為 https://api.githubcopilot.com/mcp/。可透過 curl -I https://api.githubcopilot.com/mcp/healthz 驗證連接。
  • 彈性配置存取控制:
    • 設定唯讀模式以安全探索,例如:
      {
      "servers": {
      "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "mode": "read-only"
      }
      }
      }
    • 透過 toolsets 陣列限制作用範圍,例如:
      "toolsets": ["context", "issues", "pull_requests"]
  • 實際應用範例:
    • 新增 CODEOWNERS 檔案並開啟拉取請求:提示 Copilot Agent 即可自動創建檔案、開啟 PR 並指派審閱者。
    • 偵錯失敗的工作流程:提示 Why did the release.yml job fail last night? 即可分析日誌並建議修復。
    • 分類安全警報:提示 List critical Dependabot alerts across all my repos and create issues for each. 即可列出警報並創建對應議題。
  • 未來展望:MCP 伺服器將支援 AI 生成秘密掃描(Secret scanning)及阻擋,並能直接指派議題給 Copilot,實現代理對代理(agent-to-agent)的協作工作流程。

TechSummary 2025-07-29

· 閱讀時間約 22 分鐘
Gemini
AI Assistant

GitHub 全新開源播客:從初次提交到大型專案 🎧

Source: https://github.blog/open-source/maintainers/from-first-commits-to-big-ships-tune-into-our-new-open-source-podcast/

  • GitHub 推出全新播客,深入探討開源生態系的故事、專案、人物與理念,強調開源作為軟體創新的重要發射台,尤其在 AI agents、edge runtimes、climate-tech dashboards 等領域。
  • 播客由 Abby Cabunoc Mayes、Cassidy Williams、Kedasha Kerr 和 Andrea Griffiths 等資深開源貢獻者輪流主持,分享社群建設、開源科學、開發者教育和公開構建等多元視角。
  • 首集介紹主持人如何參與開源,並探討在內容飽和的世界中創建初學者內容的重要性。
  • 節目每兩週更新一集,將邀請 Jason Lengstorf 和 Keeley Hammond 等特別嘉賓分享他們的開源旅程和見解。
  • 亮點開源專案預覽:
    • Anime.JS: 視覺效果出眾的 JavaScript 動畫函式庫。
    • Docs: 法國和德國政府合作開發的開源文件協作編輯器。
    • CSS Zero: 簡化網頁開發的無構建前端入門套件。
  • 後續主題將深入探討 Model Context Protocol (MCP) 如何提升 AI 工具的透明度和互操作性。

TechSummary 2025-07-28

· 閱讀時間約 18 分鐘
Gemini
AI Assistant

🌾 GitHub Copilot 助力小農戶擴大影響力

Source: https://github.blog/open-source/social-impact/scaling-for-impact-how-github-copilot-supercharges-smallholder-farmers/

  • 願景與擴展: One Acre Fund 成立於 2006 年,從肯亞的 40 個農戶發展至今已服務非洲十個國家的 500 萬農戶。他們的目標是到 2030 年每年支援 1000 萬農戶,透過開源技術和 AI 創造 10 億美元的新收入。
  • 技術賦能小農戶: 組織提供肥料、種子、培訓和服務,幫助小農戶提高作物產量、改善土壤健康、種植樹木,並增強對氣候變化的抵禦能力。農民對技術的態度從最初的猶豫轉變為積極。
  • GitHub Copilot 的影響: GitHub Copilot 極大地加速了 One Acre Fund 的開發進度,使專案完成速度提升三倍,超過 30% 的工作由 AI 輔助完成。這使他們能夠設定並達成更多目標。
  • 開源解決方案的優勢: 作為非營利組織,One Acre Fund 選擇開源技術是為了平衡「解決方案成熟度與靈活性」,同時避免隨規模擴展而指數級增長的許可費用。他們已將核心營運系統大部分遷移到開源。

TechSummary 2025-07-21

· 閱讀時間約 6 分鐘
OpenAI
AI Assistant

這份摘要聚焦於最新的雲端與人工智能技術趨勢,尤其是 Docker 在代理應用、AWS 的結合應用、以及數據分析、安全規範等方面的創新與實務案例。內容涵蓋從代理應用開發生態、雲端事故調查整合、到資料分析在醫療領域的實務挑戰,提供完整的技術洞見與實務流程。

Docker 推動代理應用的未來 🚀

Source: https://www.docker.com/blog/wearedevelopers-docker-unveils-the-future-of-agentic-apps/

  • Docker在WeAreDevelopers會議展示支持代理應用的工具進展,代理應用定義為利用LLMs來構建以目標為導向,具備訪問工具、資料和系統的應用。
  • 代理應用的棧中,Docker支持模型下載執行、容器化的工具伺服器,以及用compose.yaml整合模型、工具及自定義代碼。
  • 以範例compose文件整合模型、MCP Gateway與應用,支持多框架(如ADK、CrewAI)並支持雲端部署(Google Cloud Run、Azure)。
  • Docker推出Compose for agents、支援Google原生Cloud Run部署、Docker Offload(雲端GPU資源調度)來降低模型部署門檻。
  • 大型Workshop及Lightning Talks促進社群交流與實務應用,並宣布2026年的WeAreDevelopers北美盛會。

重點: 代理應用將成為AI應用新生態的核心,Docker提供全方位工具支持開發到部署,並強調雲端資源整合。

TechSummary 2025-07-18

· 閱讀時間約 6 分鐘
OpenAI
AI Assistant

IntelliJ IDEA 2025.2 Beta 發布與新溝通策略 🚀

Source: https://blog.jetbrains.com/idea/2025/07/intellij-idea-2025-2-beta/

  • IntelliJ IDEA 2025.2 Beta 現已推出,結束早期測試計劃(EAP),並採用新溝通方式,將更新分為「What's New」與「What's Fixed」兩部分。
  • 「What's New」專注於最重要的功能更新,例如支援 Java 25、Maven 4、Spring 改進、AI 支援,讓信息更集中。
  • 「What's Fixed」則專注於品質提升,包括Spring + Kotlin 改進、遠端開發、性能優化等。
  • 會舉辦專屬直播介紹新特徵,並鼓勵用戶試用Beta版本並提供反饋。
  • Overall: IntelJ IDEA 2025.2 採用新的發布資訊策略,專注用戶體驗與產品透明化。