Rumah > Artikel > hujung hadapan web > Mengautomasikan Cabaran Cloud Resume: Melaksanakan CI/CD dengan Tindakan GitHub
Dalam bahagian pertama siri ini, kami telah membina tapak web resume asli awan menggunakan pelbagai perkhidmatan AWS. Kini, kami akan membawa projek kami ke peringkat seterusnya dengan melaksanakan Integrasi Berterusan dan Penerapan Berterusan (CI/CD) menggunakan Tindakan GitHub. Automasi ini penting untuk mengekalkan dan mengemas kini resume awan kami dengan cekap.
CI/CD ialah amalan pembangunan perisian moden yang menekankan mengautomasikan peringkat pembangunan aplikasi. Dalam konteks Cabaran Resume Awan kami, ini bermakna kami boleh mengemas kini resume kami atau membuat perubahan pada kod hujung belakang kami, menolak perubahan ini ke GitHub dan menetapkannya secara automatik pada infrastruktur AWS kami.
Sebelum kita menyelami pelaksanaannya, mari kita bincangkan mengapa CI/CD sangat penting:
Untuk projek ini, kami akan menggunakan dua repositori berasingan:
Pemisahan ini membolehkan kami mengurus dan mengawal versi kod bahagian hadapan dan bahagian belakang kami secara bebas.
Mari mulakan dengan menyediakan aliran kerja Tindakan GitHub untuk bahagian hadapan kami. Buat fail baharu dalam repositori frontend anda di .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 "/*"
Aliran kerja ini melakukan perkara berikut:
Untuk bahagian belakang, kami akan membuat aliran kerja yang serupa. Buat fail baharu dalam repositori bahagian belakang anda di .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
Aliran kerja ini:
Untuk memastikan maklumat sensitif kami selamat, kami akan menggunakan Rahsia GitHub. Pergi ke tetapan repositori anda, klik pada "Rahsia dan pembolehubah", kemudian "Tindakan", dan tambahkan rahsia berikut:
Rahsia ini disulitkan dengan selamat dan hanya terdedah kepada aliran kerja Tindakan GitHub semasa pelaksanaan.
Jaga Rahsia Selamat: Jangan sekali-kali maklumat sensitif kod keras. Sentiasa gunakan pembolehubah persekitaran atau perkhidmatan pengurusan rahsia.
Laksanakan Ujian Teguh: Sertakan ujian unit, ujian penyepaduan dan ujian hujung ke hujung dalam saluran paip CI anda.
Gunakan Infrastruktur sebagai Kod: Tentukan infrastruktur anda menggunakan alatan seperti AWS CDK atau CloudFormation. Ini memastikan ketekalan dan membenarkan kawalan versi infrastruktur anda.
Pantau Saluran Paip Anda: Sediakan pemberitahuan untuk penempatan yang gagal dan semak log CI/CD anda secara kerap.
Melaksanakan Pelancaran Berperingkat: Pertimbangkan menggunakan teknik seperti penempatan biru-hijau atau keluaran kenari untuk penggunaan yang lebih selamat.
Melaksanakan CI/CD bukan tanpa cabarannya. Berikut adalah beberapa pengajaran yang dipelajari:
Kebenaran IAM: Pastikan pengguna IAM AWS anda mempunyai kebenaran yang betul untuk penggunaan. Ia mungkin memerlukan beberapa percubaan dan kesilapan untuk membetulkannya.
Pengurusan Kebergantungan: Pastikan kebergantungan anda dikemas kini dalam persekitaran CI. Pertimbangkan untuk menggunakan alatan seperti Dependabot untuk mengautomasikan proses ini.
Pengujian Adalah Penting: Laburkan masa untuk menulis ujian komprehensif. Mereka akan menyelamatkan anda daripada menggunakan pepijat kepada pengeluaran.
Pengurusan Kos: Berhati-hati dengan kos yang berkaitan dengan saluran paip CI/CD anda, terutamanya jika anda menjalankan ujian atau penggunaan yang meluas dengan kerap.
Melaksanakan CI/CD dengan GitHub Actions telah memperkemaskan proses pembangunan kami dengan ketara untuk Cabaran Cloud Resume. Ia membolehkan kami menumpukan pada menulis kod dan membuat penambahbaikan, kerana mengetahui bahawa penggunaan hanya perlu ditolak.
Pengalaman ini mengukuhkan kepentingan automasi dalam pembangunan awan dan menyediakan pengalaman praktikal dengan amalan CI/CD standard industri. Sama ada anda sedang mengusahakan projek peribadi atau aplikasi berskala besar, melaburkan masa dalam menyediakan saluran paip CI/CD yang teguh memberi dividen dalam produktiviti dan kebolehpercayaan.
Ingat, CI/CD bukan persediaan sekali sahaja. Teruskan memperhalusi saluran paip anda, menambah lebih banyak ujian dan mengoptimumkan aliran kerja anda semasa projek anda berkembang. Selamat mengekod dan melaksanakan!
Atas ialah kandungan terperinci Mengautomasikan Cabaran Cloud Resume: Melaksanakan CI/CD dengan Tindakan GitHub. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!