Rumah  >  Artikel  >  hujung hadapan web  >  Mengautomasikan Cabaran Cloud Resume: Melaksanakan CI/CD dengan Tindakan GitHub

Mengautomasikan Cabaran Cloud Resume: Melaksanakan CI/CD dengan Tindakan GitHub

WBOY
WBOYasal
2024-08-09 09:19:52629semak imbas

Cabaran Cloud Resume - Bahagian 2

pengenalan

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.

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

Mengapa CI/CD Penting dalam Pembangunan Awan

Sebelum kita menyelami pelaksanaannya, mari kita bincangkan mengapa CI/CD sangat penting:

  1. Ketekalan: Penerapan automatik memastikan setiap perubahan digunakan secara konsisten merentas infrastruktur anda.
  2. Kecekapan: Penggunaan manual memakan masa dan terdedah kepada kesilapan manusia. Automasi menjimatkan masa dan mengurangkan kesilapan.
  3. Lelaran Pantas: Dengan CI/CD, ciri baharu dan pembetulan pepijat boleh digunakan dengan cepat dan selamat.
  4. Amalan Terbaik: Melaksanakan CI/CD menggalakkan amalan pembangunan yang baik seperti komitmen yang kerap, ujian komprehensif dan semakan kod.
  5. Skalabiliti: Apabila projek anda berkembang, saluran paip CI/CD boleh berskala dengan mudah untuk menampung proses penggunaan yang lebih kompleks.

Menyediakan Repositori GitHub

Untuk projek ini, kami akan menggunakan dua repositori berasingan:

  1. Repositori Depan: Mengandungi fail HTML, CSS dan JavaScript untuk tapak web statik.
  2. Backend Repository: Menempatkan kod AWS CDK untuk fungsi Lambda, API Gateway dan jadual DynamoDB.

Pemisahan ini membolehkan kami mengurus dan mengawal versi kod bahagian hadapan dan bahagian belakang kami secara bebas.

Melaksanakan CI/CD untuk Frontend

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:

  1. Cetus pada tolakan ke cawangan utama
  2. Sediakan bukti kelayakan AWS (yang akan kami konfigurasikan dalam rahsia GitHub)
  3. Menyegerakkan kandungan repositori ke baldi S3
  4. Membatalkan cache CloudFront untuk memastikan versi terkini disampaikan

Melaksanakan CI/CD untuk Backend

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:

  1. Cetus pada tolakan ke cawangan utama
  2. Sediakan Node.js
  3. Memasang kebergantungan
  4. Menjalankan ujian (yang patut anda laksanakan)
  5. Sediakan bukti kelayakan AWS
  6. Mengedarkan tindanan CDK

Mengurus Rahsia

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:

  • ID_KEY_AWS_ACCESS_
  • AWS_SECRET_ACCESS_KEY
  • S3_BUCKET
  • ID_DISTRIBUTION_CLOUDFRONT_

Rahsia ini disulitkan dengan selamat dan hanya terdedah kepada aliran kerja Tindakan GitHub semasa pelaksanaan.

Amalan Terbaik untuk CI/CD dalam Aplikasi Cloud-Native

  1. Jaga Rahsia Selamat: Jangan sekali-kali maklumat sensitif kod keras. Sentiasa gunakan pembolehubah persekitaran atau perkhidmatan pengurusan rahsia.

  2. Laksanakan Ujian Teguh: Sertakan ujian unit, ujian penyepaduan dan ujian hujung ke hujung dalam saluran paip CI anda.

  3. Gunakan Infrastruktur sebagai Kod: Tentukan infrastruktur anda menggunakan alatan seperti AWS CDK atau CloudFormation. Ini memastikan ketekalan dan membenarkan kawalan versi infrastruktur anda.

  4. Pantau Saluran Paip Anda: Sediakan pemberitahuan untuk penempatan yang gagal dan semak log CI/CD anda secara kerap.

  5. Melaksanakan Pelancaran Berperingkat: Pertimbangkan menggunakan teknik seperti penempatan biru-hijau atau keluaran kenari untuk penggunaan yang lebih selamat.

Cabaran dan Pengajaran

Melaksanakan CI/CD bukan tanpa cabarannya. Berikut adalah beberapa pengajaran yang dipelajari:

  1. Kebenaran IAM: Pastikan pengguna IAM AWS anda mempunyai kebenaran yang betul untuk penggunaan. Ia mungkin memerlukan beberapa percubaan dan kesilapan untuk membetulkannya.

  2. Pengurusan Kebergantungan: Pastikan kebergantungan anda dikemas kini dalam persekitaran CI. Pertimbangkan untuk menggunakan alatan seperti Dependabot untuk mengautomasikan proses ini.

  3. Pengujian Adalah Penting: Laburkan masa untuk menulis ujian komprehensif. Mereka akan menyelamatkan anda daripada menggunakan pepijat kepada pengeluaran.

  4. 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.

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn