首頁 > web前端 > js教程 > 主體

自動化雲端復原挑戰:使用 GitHub Actions 實施 CI/CD

WBOY
發布: 2024-08-09 09:19:52
原創
541 人瀏覽過

雲端履歷挑戰 - 第 2 部分

介紹

在本系列的第一部分中,我們逐步介紹如何使用各種 AWS 服務建立雲端原生履歷網站。現在,我們將透過使用 GitHub Actions 實施持續整合和持續部署 (CI/CD),將我們的專案提升到一個新的水平。這種自動化對於有效維護和更新我們的雲端簡歷至關重要。

CI/CD 是一種現代軟體開發實踐,強調應用程式開發階段的自動化。在我們的雲端履歷挑戰賽中,這意味著我們可以更新履歷或更改後端程式碼,將這些變更推送到 GitHub,並將它們自動部署到我們的 AWS 基礎架構中。

Automating the Cloud Resume Challenge: Implementing CI/CD with GitHub Actions

為什麼 CI/CD 在雲端開發中很重要

在我們深入實施之前,讓我們先討論為什麼 CI/CD 如此重要:

  1. 一致性:自動化部署可確保每個變更在您的基礎架構中一致應用。
  2. 效率:手動部署非常耗時且容易出現人為錯誤。自動化可以節省時間並減少錯誤。
  3. 快速迭代:透過 CI/CD,可以快速安全地部署新功能和錯誤修復。
  4. 最佳實踐:實施 CI/CD 鼓勵良好的開發實踐,例如頻繁提交、全面測試和程式碼審查。
  5. 可擴充性:隨著專案的成長,CI/CD 管道可以輕鬆擴展以適應更複雜的部署流程。

設定 GitHub 儲存庫

對於這個項目,我們將使用兩個單獨的儲存庫:

  1. 前端儲存庫:包含靜態網站的 HTML、CSS 和 JavaScript 檔案。
  2. 後端儲存庫:包含 Lambda 函數、API 閘道和 DynamoDB 表的 AWS CDK 程式碼。

這種分離使我們能夠獨立管理和版本控制我們的前端和後端程式碼。

為前端實施 CI/CD

讓我們先為我們的前端設定 GitHub Actions 工作流程。在前端儲存庫中的 .github/workflows/deploy-frontend.yml 中建立一個新檔案:

name: Deploy Frontend

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-1

    - name: Deploy to S3
      run: aws s3 sync . s3://${{ secrets.S3_BUCKET }} --delete

    - name: Invalidate CloudFront
      run: |
        aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"
登入後複製

此工作流程執行以下操作:

  1. 推送到主分支時觸發
  2. 設定 AWS 憑證(我們將在 GitHub 機密中配置)
  3. 將儲存庫內容同步到 S3 儲存桶
  4. 使 CloudFront 快取失效以確保提供最新版本

後端實施 CI/CD

對於後端,我們將建立一個類似的工作流程。在後端儲存庫中建立一個新檔案(位於 .github/workflows/deploy-backend.yml):

name: Deploy Backend

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '16'

    - name: Install dependencies
      run: npm ci

    - name: Run tests
      run: npm test

    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-1

    - name: Deploy to AWS
      run: npx cdk deploy --require-approval never
登入後複製

此工作流程:

  1. 推送到主分支時觸發
  2. 設定 Node.js
  3. 安裝依賴項
  4. 運行測試(您應該實施)
  5. 設定 AWS 憑證
  6. 部署 CDK 堆疊

管理秘密

為了確保我們的敏感資訊安全,我們將使用 GitHub Secrets。轉到您的儲存庫設置,按一下“秘密和變數”,然後按一下“操作”,然後新增以下秘密:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • S3_BUCKET
  • CLOUDFRONT_DISTRIBUTION_ID

這些秘密經過安全加密,僅在執行期間暴露給 GitHub Actions 工作流程。

雲端原生應用程式中 CI/CD 的最佳實踐

  1. 保證秘密安全:切勿對敏感資訊進行硬編碼。始終使用環境變數或秘密管理服務。

  2. 實作穩健的測試:在 CI 管道中包含單元測試、整合測試和端到端測試。

  3. 使用基礎架構即代碼:使用 AWS CDK 或 CloudFormation 等工具定義您的基礎架構。這可確保一致性並允許對基礎架構進行版本控制。

  4. 監控您的管道:設定失敗部署的通知並定期查看您的 CI/CD 日誌。

  5. 實施逐步部署:考慮使用藍綠部署或金絲雀發布等技術來實現更安全的部署。

挑戰和經驗教訓

實施 CI/CD 並非沒有挑戰。以下是一些經驗教訓:

  1. IAM 權限:確保您的 AWS IAM 使用者擁有正確的部署權限。可能需要一些嘗試和錯誤才能做到這一點。

  2. 依賴管理:讓您的依賴項在 CI 環境中保持最新。考慮使用 Dependabot 等工具來自動化此流程。

  3. 測試至關重要:投入時間編寫全面的測試。它們將使您免於將錯誤部署到生產中。

  4. 成本管理:了解與 CI/CD 管道相關的成本,尤其是在您經常執行大量測試或部署時。

結論

使用 GitHub Actions 實施 CI/CD 顯著簡化了我們的雲端履歷挑戰賽的開發流程。它讓我們能夠專注於編寫程式碼和進行改進,因為知道部署只需 git 推送即可。

這種經驗強調了雲端開發中自動化的重要性,並提供了業界標準 CI/CD 實踐的實務經驗。無論您是在處理個人專案還是大型應用程序,投入時間建立強大的 CI/CD 管道都會在生產力和可靠性方面帶來回報。

請記住,CI/CD 不是一次性設定。隨著專案的發展,繼續完善您的管道、添加更多測試並優化您的工作流程。祝您編碼和部署愉快!

以上是自動化雲端復原挑戰:使用 GitHub Actions 實施 CI/CD的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!