在本系列的第一部分中,我們逐步介紹如何使用各種 AWS 服務建立雲端原生履歷網站。現在,我們將透過使用 GitHub Actions 實施持續整合和持續部署 (CI/CD),將我們的專案提升到一個新的水平。這種自動化對於有效維護和更新我們的雲端簡歷至關重要。
CI/CD 是一種現代軟體開發實踐,強調應用程式開發階段的自動化。在我們的雲端履歷挑戰賽中,這意味著我們可以更新履歷或更改後端程式碼,將這些變更推送到 GitHub,並將它們自動部署到我們的 AWS 基礎架構中。
在我們深入實施之前,讓我們先討論為什麼 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 "/*"
此工作流程執行以下操作:
對於後端,我們將建立一個類似的工作流程。在後端儲存庫中建立一個新檔案(位於 .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
此工作流程:
為了確保我們的敏感資訊安全,我們將使用 GitHub Secrets。轉到您的儲存庫設置,按一下“秘密和變數”,然後按一下“操作”,然後新增以下秘密:
這些秘密經過安全加密,僅在執行期間暴露給 GitHub Actions 工作流程。
保證秘密安全:切勿對敏感資訊進行硬編碼。始終使用環境變數或秘密管理服務。
實作穩健的測試:在 CI 管道中包含單元測試、整合測試和端到端測試。
使用基礎架構即代碼:使用 AWS CDK 或 CloudFormation 等工具定義您的基礎架構。這可確保一致性並允許對基礎架構進行版本控制。
監控您的管道:設定失敗部署的通知並定期查看您的 CI/CD 日誌。
實施逐步部署:考慮使用藍綠部署或金絲雀發布等技術來實現更安全的部署。
實施 CI/CD 並非沒有挑戰。以下是一些經驗教訓:
IAM 權限:確保您的 AWS IAM 使用者擁有正確的部署權限。可能需要一些嘗試和錯誤才能做到這一點。
依賴管理:讓您的依賴項在 CI 環境中保持最新。考慮使用 Dependabot 等工具來自動化此流程。
測試至關重要:投入時間編寫全面的測試。它們將使您免於將錯誤部署到生產中。
成本管理:了解與 CI/CD 管道相關的成本,尤其是在您經常執行大量測試或部署時。
使用 GitHub Actions 實施 CI/CD 顯著簡化了我們的雲端履歷挑戰賽的開發流程。它讓我們能夠專注於編寫程式碼和進行改進,因為知道部署只需 git 推送即可。
這種經驗強調了雲端開發中自動化的重要性,並提供了業界標準 CI/CD 實踐的實務經驗。無論您是在處理個人專案還是大型應用程序,投入時間建立強大的 CI/CD 管道都會在生產力和可靠性方面帶來回報。
請記住,CI/CD 不是一次性設定。隨著專案的發展,繼續完善您的管道、添加更多測試並優化您的工作流程。祝您編碼和部署愉快!
以上是自動化雲端復原挑戰:使用 GitHub Actions 實施 CI/CD的詳細內容。更多資訊請關注PHP中文網其他相關文章!