Kotlin 및 CloudFunction용 CI/CD

9624 단어 actionshackathon21

내 워크플로



Kotlin 빌드, 테스트 커버리지 배지 생성 및 Cloud Functions 배포를 다루는 워크플로입니다.

연초에 Cloud Functions 형식의 GCP와 함께 Kotlin을 사용하여 서버리스 계산 및 클라우드 네이티브를 시도하는 프로젝트를 만들고 싶었습니다. 제게는 좋은 출발점인 것 같아서 일부 아파트 구매를 크롤링하기 위한 작은 크롤러를 만들었습니다. 등록 정보를 입력하고 이메일 알림을 보냅니다. (제가 사는 도시에서는 건축 회사가 판매를 시작하기로 결정하면 구매 등록 정보를 게시하고 구매하려면 먼저 등록해야 합니다.)

그래서 다음 문제는 CI/CD 파이프라인을 만드는 것이었고 Github Actions를 사용해 보기로 했습니다. 멋진 테스트 커버리지 배지를 생성하고 코드를 배포하는 데 도움이 될 수 있는 몇 가지 훌륭한 작업이 이미 있다는 사실을 알게 되어 기뻤습니다. Cloud Functions에 쉽게. cicirello/jacoco-badge-generator@v2google-github-actions/[email protected] 를 활용하여 파이프라인을 빠르게 구축했습니다.

최종 결과는 다음과 같습니다.

제출 카테고리:



엉뚱한 와일드카드

Yaml 파일 또는 코드 링크



name: CI/CD

on:
  push:
    branches: [ master ]
    paths:
      - src/**

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set up JDK 8
        uses: actions/setup-java@v2
        with:
          java-version: '8'
          distribution: 'adopt'

      - name: Build with Gradle
        run: ./gradlew build

      - name: Generate JaCoCo Badge
        uses: cicirello/jacoco-badge-generator@v2
        with:
          jacoco-csv-file: build/reports/jacoco/test/jacocoTestReport.csv
          generate-branches-badge: true

      - name: Log coverage percentage
        run: |
          echo "coverage = ${{ steps.jacoco.outputs.coverage }}"
          echo "branch coverage = ${{ steps.jacoco.outputs.branches }}"

      - name: Commit and push the badge (if it changed)
        uses: EndBug/add-and-commit@v7
        with:
          default_author: github_actions
          message: 'doc: update badge'
          add: '*.svg'

      - name: Upload JaCoCo coverage report
        uses: actions/upload-artifact@v2
        with:
          name: jacoco-report
          path: build/reports/jacoco/test/html

  deploy:
    needs: build
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Cloud Functions Deploy
        uses: google-github-actions/[email protected]
        with:
          credentials: ${{ secrets.GCP_SA_KEY }}
          name: apartment-registration-alert
          region: asia-northeast1
          env_vars: AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }},AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}
          entry_point: Application
          runtime: java11
          service_account_email: ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
          max_instances: 1
          event_trigger_type: google.pubsub.topic.publish
          event_trigger_resource: projects/apartment-registration-alert/topics/schedule-trigger





하이레포 / 아파트-등록-신고


AWS 및 GCP 프리 티어를 사용하여 아파트 구매 정보를 크롤링하고 이메일 알림을 보내는 서버리스 클라우드 네이티브 크롤러입니다.









이 응용 프로그램은 특정 지역에 새 아파트가 열려 있는 경우 매시간 아파트 정보를 크롤링합니다.
구매하면 이메일 알림이 트리거됩니다.
논리는 매우 간단하지만 이 애플리케이션의 주요 목적은 다음을 시도하는 것입니다.
  • 완전 무료로 클라우드에서 애플리케이션 실행
  • 서버리스 컴퓨팅
  • 클라우드 네이티브

  • 건축물



    비용


    모든 클라우드 구성 요소는 다음과 같이 프리 티어에 포함되며 이 애플리케이션 비용은 $0입니다.

    요소
    유형
    프리 티어
    플랫폼


    클라우드 함수
    서버리스 플랫폼(FaaS)
    2억 통화/월
    GCP

    클라우드 스케줄러
    스케줄러
    3개의 작업/월
    GCP

    클라우드 게시/구독
    메시지 서비스
    10GB/월
    GCP

    클라우드 파이어스토어
    NoSQL DB
    1GB 스토리지, 50000 읽기 및 20000 쓰기/일
    GCP

    SNS
    알림 서비스
    1000 이메일
    AWS





    View on GitHub

    좋은 웹페이지 즐겨찾기