ianychoi / gh-codespaces-copilot-in-a-day-ko

GitHub Codespaces & Copilot 핸즈온 워크샵 리포지토리입니다

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GitHub Codespaces와 Copilot으로 앱 만들어 보기

Java 기반의 Spring 백엔드와 React 기반의 프론트엔드 앱을 GitHub Codespaces 안에서 GitHub Copilot을 이용해서 빌드하고 애저 및 파워 앱에 배포하는 핸즈온랩입니다.

목표

이 핸즈온랩을 끝마치면 여러분은 아래와 같은 내용을 학습할 수 있습니다.

기본 아키텍처

애저 정적 웹 앱 (프론트엔드) + 애저 앱 서비스 (백엔드)

애저 정적 웹 앱 (프론트엔드) + 애저 앱 서비스 (백엔드)

애저 정적 웹 앱 (프론트엔드) + 애저 쿠버네티스 서비스 (백엔드) + 애저 PostgreSQL (데이터베이스)

애저 정적 웹 앱 (프론트엔드) + 애저 쿠버네티스 서비스 (백엔드) + 애저 PostgreSQL (데이터베이스)

파워 앱 (프론트엔드) + 애저 쿠버네티스 서비스 (백엔드) + 애저 PostgreSQL (데이터베이스)

파워 앱 (프론트엔드) + 애저 쿠버네티스 서비스 (백엔드) + 애저 PostgreSQL (데이터베이스)

시작하기

사전 준비사항

퀵스타트 0 – 코드스페이스 이용

  1. 이 리포지토리를 자신의 계정으로 포크합니다.

  2. 코드스페이스를 실행시킵니다.

  3. api/src/main/java/roadshow/demo/api/controller/MessageController.java 파일을 열어 아래 라인의 주석을 해제해서 CORS를 활성화 시킵니다.

    // ⬇️⬇️⬇️ Uncomment the line below to enable CORS ⬇️⬇️⬇️
    // @CrossOrigin(origins = ALLOWED_ORIGINS)
    // ⬆️⬆️⬆️ Uncomment the line above to enable CORS ⬆️⬆️⬆️
    @PostMapping
    public MessageResponse sendMessage(@RequestBody MessageRequest request) throws JsonMappingException, JsonProcessingException {
  4. api/src/main/resources/application-dev.properties 파일을 생성한 후 아래 내용을 입력합니다. {{Azure_OpenAI_Service_Endpoint}} 값과 {{Azure_OpenAI_Service_API_Key}} 값은 아래 프로비저닝할 애저 OpenAI 서비스 인스턴스를 참조합니다.

    AOAI_API_ENDPOINT={{Azure_OpenAI_Service_Endpoint}}
    AOAI_API_KEY={{Azure_OpenAI_Service_API_Key}}
    
    CORS_ORIGIN=https://${CODESPACE_NAME}-3000.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}
  5. 새 터미널을 열고 아래 명령어를 순서대로 적용해 백엔드 앱을 실행시킵니다.

    • mvn 사용할 경우

      cd api
      mvn spring-boot:run
    • mvnw 사용할 경우

      cd api
      ./mvnw spring-boot:run
    • 코드스페이스 디버거 사용할 경우

      디버거 사용

  6. 새 터미널을 하나 열고 아래 명령어를 순서대로 적용해 프론트엔드 앱을 실행시킵니다.

    cd web
    npm install
    npm run start:codespace
  7. 아래 그림과 같이 3000번 포트와 8080번 포트를 Private 에서 Public으로 바꿉니다.

    포트 가시성 변경

  8. 웹 앱에 접속합니다.

    웹 앱 접속

퀵스타트 1 – 애저 Bicep 이용

  1. 이 리포지토리를 자신의 계정으로 포크합니다.

  2. 아래 명령어를 차례대로 실행시켜 애저에 리소스를 프로비저닝합니다.

    azd auth login --use-device-code=false
    azd init
    azd up
    azd pipeline config

    GitHub 코드스페이스 안에서 azd auth login --use-device-code=false 명령어를 사용해서 로그인하는 경우, 최초 404 에러가 날 수 있습니다. 이 때 azd auth login --use-device-code=false 명령어를 친 터미널을 종료하지 말고, 주소창의 http://localhost:... 링크를 전체 복사합니다. 코드스페이스 안에서 새 터미널을 zsh로 연 후 curl 명렁어를 통해 실행시키세요.

  3. 아래 명령어를 차례로 실행시켜 애플리케이션을 배포합니다.

    gh auth login
    
    gh workflow run "Azure Dev" --repo $GITHUB_REPOSITORY

    만약 gh auth login 명령어를 실행시키는 도중 에러가 발생하면 GITHUB_TOKEN= 명령어를 실행시켜 토큰을 초기화한 후 다시 실행시킵니다.

  4. 배포가 끝난 후 애저 포털에서 애저 정적 웹 앱 인스턴스를 찾아 실행시켜 제대로 배포가 되었는지 확인합니다.

  5. 실행이 다 끝났다면 아래 명령어를 통해 리소스를 삭제합니다.

    # 리소스 삭제
    azd down --force
    
    # APIM 완전 삭제
    pwsh ./infra/Purge-ApiManagement.ps1
    
    # Cognitive 서비스 완전 삭제
    pwsh ./infra/Purge-CognitiveService.ps1

퀵스타트 2 – 애저 Terraform 이용

TBD

퀵스타트 3 – 파워 앱 이용

TBD

참고 자료 및 추가 학습 자료

TBD

About

GitHub Codespaces & Copilot 핸즈온 워크샵 리포지토리입니다

License:MIT License


Languages

Language:Bicep 47.0%Language:Java 15.9%Language:PowerShell 11.6%Language:JavaScript 9.9%Language:Shell 7.4%Language:CSS 4.9%Language:HTML 3.0%Language:Dockerfile 0.2%