Github Actions 및 Akka Serverless와 지속적인 통합 및 제공 방법

CI/CD는 개발자가 응용 프로그램을 자동화하는 데 도움을 주는 전형적인 사고 변화 중의 하나이다.특히 서버가 없는 분야에서는 전체적인 생각은 중요한 일에 집중하고 다른 사람들이 무차별적인 힘든 일을 처리하도록 하는 것이며 가능한 한 많은 자동화가 가장 중요하다.그것은 개발자가 중요한 것, 코드에 전념하도록 도와주고, 기업이 중요한 것에 전념하여, 고품질의 소프트웨어를 더욱 빨리 시장으로 유치하도록 도와준다.그럼 이것은 Akka Serverless에서 어떻게 일합니까?
Akka Serverless 기능 즉 서비스와 서버 없음 데이터베이스를 하나의 패키지에 통합하는 데 전념합니다.이 단일한 소프트웨어 패키지는 개발자들이 더 이상 데이터베이스를 걱정할 필요가 없기 때문에 코드에 더욱 관심을 가질 수 있게 한다.이 짧은 블로그 글에서 저는 GitHub Actions를 사용하여 Akka의 서버 없는 CI와 CD 작업 흐름을 자동화하는 것을 안내할 것입니다.

GitHub의 행동


CI/CD에서는

  • Docker Login, 생성된 용기를 Docker Hub(또는 지원되는 다른 Docker 레지스트리)에 발표할 수 있습니다

  • Docker Setup BuildxBuildKit를 사용하면 멀티플랫폼 이미지를 만들 수 있다(본문의 범위를 넘어선다)

  • Build and push Docker images 생성된 이미지를 Docker Hub
  • 로 푸시

  • Akka Serverless CLI for GitHub Actions Akka에 서버 없음
  • 모든 작업이 정상적으로 작동하고 더욱 안전하게 하기 위해서는 GitHub에서 사용자 이름, 비밀번호, 신분 검증 영패를 기밀로 설정하는 것이 좋습니다.Settings -> Secrets에서 암호화된 환경 변수 4개를 만들었습니다.
  • DOCKERHUB 영패: Docker Hub에 로그인한 personal authentication 영패(비밀번호를 사용할 수도 있지만 개인 방문 영패를 강력히 권장함)
  • DOCKERHUB 사용자 이름: Docker Hub
  • 에 로그인한 사용자 이름
  • 프로젝트: Akka Serverless에 배치하고 싶은 프로젝트의 ID(akkasls projects get <project name>가 ID 열에 프로젝트의 ID를 표시함)
  • 토큰: Akka Serverless에 연결된 Akka Serverlessauthentication token("실행"범위의 토큰을 만들려면 내가 실행해야 할 명령은akkasls auth tokens create --type=refresh --scopes=execution --description="My CI/CD token"

  • 아마르


    이 네 가지 비밀을 설정한 후 남은 유일한 일은 GitHub Actions YAML 설정을 만드는 것입니다.나는 먼저 완전한 문서부터 시작하여 모든 일의 작용을 몇 부분으로 나누어 설명할 것이다.이 파일은 저장소의 폴더.github/workflows에 저장되어야 합니다.

    전체 파일


    내 예에서 나는 파일을 deploy.yaml라고 명명하고 저장소의 .github/workflows 폴더에 저장했다.
    name: akkasls-deployer
    
    on:
      push:
        branches: [main]
      workflow_dispatch:
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout
            uses: actions/checkout@v2
          - name: Set up Docker Buildx
            uses: docker/setup-buildx-action@v1
          - name: Login to Docker Hub
            uses: docker/login-action@v1
            with:
              username: ${{ secrets.DOCKERHUB_USERNAME }}
              password: ${{ secrets.DOCKERHUB_TOKEN }}
          - name: Build and push to Docker Hub
            uses: docker/build-push-action@v2
            with:
              push: true
              tags: retgits/myapp:1.0.0
          - name: Deploy to Akka Serverless
            uses: retgits/akkasls-action@v1
            with:
              cmd: "services deploy myapp retgits/myapp:1.0.0"
            env:
              token: ${{ secrets.TOKEN }}
              project: ${{ secrets.PROJECT }}
    
    

    서류를 몇 부분으로 나누다


    이제 파일 전체를 보실 수 있습니다. 파일의 작용을 더 작은 부분으로 나누어 설명하겠습니다.
    name: akkasls-deployer
    
    

    이것은 기본적으로 작업 흐름의 이름을 결정하는데, 이것이 바로 그것이 저장소의 작업 부분에 표시되는 방식이다
    on:
      push:
        branches: [main]
      workflow_dispatch:
    
    
    작업 흐름의 on 부분에서 트리거나 작업 흐름의 실행 시간을 설명합니다.이 경우 분기push가 나타나거나 워크플로우에서 트리거될 때마다main 설정이 완료되어 주 분기로 푸시되지 않고 워크플로우를 트리거하려면 워크플로우가 실행됩니다.

    jobs:
      build:
        runs-on: ubuntu-latest
    
    
    나는 Ubuntu에서 나의 모든 구축을 실행하지만, 너는 다른 운영체제를 사용할 수 있고, 심지어는 위탁 관리 프로그램을 사용할 수 있다.
    steps:
      - name: Checkout
        uses: actions/checkout@v2
    
    
    이 단계는 이 작업 흐름의 다른 단계에서 사용할 수 있도록 코드를 서명합니다
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
    
    
    이 단계는 Buildx를 설정하여 필요에 따라 다른 운영체제에 다른 이미지를 구축할 수 있도록 합니다. (애플 실리콘 칩에서 실행되는 용기를 구축하려면 특히 유용합니다.)
      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
    
    
    말 그대로 Docker Hub에 로그인하여 생성된 컨테이너 이미지를 전송합니다.그것은 앞에 만들어진 두 가지 비밀을 이용했다.
      - name: Build and push to Docker Hub
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: retgits/myapp:1.0.0
    
    
    이 단계에서 컨테이너를 구성하여 Docker Hub에 밀어넣습니다workflow_dispatch.이것은 용기 이미지를 유일하게 표시하기 위해 매개 변수화, GitHub commit SHA, 또는 다른 것을 사용하고 싶은 곳입니다.
      - name: Deploy to Akka Serverless
        uses: retgits/akkasls-action@v1
        with:
          cmd: "services deploy myapp retgits/myapp:1.0.0"
        env:
          token: ${{ secrets.TOKEN }}
          project: ${{ secrets.PROJECT }}
    
    
    이 프로세스의 마지막 단계는 컨테이너 이미지를 Akka Serverless에 배치하는 것입니다.이 단계는 앞에서 만든 다른 두 가지 비밀을 이용하고 이전 단계와 같은 표시를 사용했다.

    다음은요?


    보시다시피 CI/CD를 사용하여 서비스를 Akka Serverless에 배치하는 것은 매우 간단합니다. 일단 설정하면 많은 번거로움을 줄일 수 있습니다.네가 다음에 무엇을 보고 싶은지, 아니면 우리가 다음에 무엇을 건설하기를 원하는지 나에게 알려줘!
    표지 사진 작성자Gerd Altmann 출처Pixabay

    좋은 웹페이지 즐겨찾기