Computer >> 컴퓨터 >  >> 체계 >> Android

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

우리는 매일 해야 하는 반복적인 작업이 많습니다. 그리고 그것들은 약간 지루하고, 어렵고, 단조롭습니다.

그러나 일상적인 작업을 수행하는 대신 다른 사람이나 다른 사람이 대신 처리하도록 위임할 수 있습니다. 그렇게 하면 하고 싶은 일을 하는 데 더 많은 시간을 할애할 수 있습니다. 휴식을 취하실 수 있습니다.

Android 애플리케이션을 개발한 적이 있다면 일부 작업이 얼마나 지루한지 알 것입니다.

  • 테스트 실행
  • 새 코드를 병합할 때 애플리케이션이 컴파일되는지 확인
  • 응용 프로그램 빌드 및 게시.

그렇다면 우리는 이 일을 누구에게 넘겨야 합니까? 다른 동료? 다른 사람에게 전달할 수 있으며 다른 사람의 시간을 확보할 수 없습니다. 게다가 우리는 동료들을 부끄럽게 만들고 싶지 않습니다. 해결책은?

GitHub Actions를 만나보세요. 👐

GitHub 작업이란 무엇입니까?

GitHub 작업은 저장소에서 어떤 일이 발생할 때 트리거할 수 있는 명령입니다. 기본적으로 작업은 다음을 설명하는 명령 목록이 있는 구성 파일입니다.

  • 필요한 일
  • 발생해야 하는 경우

이 구성 파일은 YAML 형식(.yml)이며 예는 다음과 같습니다.

name: My GitHub Action

on: pull_request

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1

위의 예를 분해해 보겠습니다.

  1. 작업에 이름을 지정합니다(내 GitHub 작업) [선택 사항]
  2. 이 작업이 실행되어야 하는 시점을 나타냅니다(풀 요청이 열릴 때)
  3. 이 작업이 트리거되면 발생해야 하는 작업(작업) 목록을 시작합니다.
  4. 첫 번째는 빌드 입니다. 액션
  5. 연속 명령은 GitHub에 이 작업을 실행할 러너를 알려줍니다(이것은 가상 서버이며 Windows/Mac/Linux 중에서 선택할 수 있음)
  6. 각 작업에는 단계로 그룹화된 여러 단계가 있을 수 있습니다. 키워드
  7. 사용 키워드는 스크립트에 수행할 작업을 알려줍니다.

이것은 GitHub Actions의 모든 기능을 보여주지는 않지만 구성 파일의 구조를 엿볼 수 있는 아주 짧은 예입니다.

다음 섹션에서는 개발 주기를 효율적이고 효과적으로 유지하는 데 도움이 되는 조치를 만들 것입니다.

모든 GitHub 작업 파일은 경로의 프로젝트 기본 폴더 아래에 있어야 합니다. .github/workflows :

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

풀 요청에 대한 GitHub 작업을 만드는 방법

혼자 프로젝트를 진행하든 팀의 일부로 작업하든 애플리케이션이 안정적인지 확인하는 것이 중요합니다. 따라서 풀 요청 병합을 고려할 때마다 애플리케이션이 올바르게 컴파일되고 모든 테스트가 통과하는지 확인하는 것이 좋습니다.

우리는 이미 저장소에서 코드를 체크아웃하는 방법을 예제에서 보여주었습니다. 이 작업에는 다음 단계가 포함됩니다.

  1. JDK 버전 설정
  2. 가상 환경에 대한 권한 변경
  3. 테스트 실행(있는 경우)
  4. 애플리케이션 구축
name: Android Build

on: pull_request

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1

      - name: Set Up JDK              // 1
        uses: actions/setup-java@v1
        with:
          java-version: 1.8

      - name: Change wrapper permissions  // 2
        run: chmod +x ./gradlew

      - name: Run Tests                   // 3
        run: ./gradlew test

      - name: Build Project               // 4
        run: ./gradlew assemble

위에서 각 단계에 고유한 속성과 속성이 있음을 알 수 있습니다.

설명서를 통해 스스로 할 수 있기 때문에 각각에 대해 설명하지 않겠습니다. 대부분의 단계에서 공통적인 것은 실행입니다. 예어. 이 속성은 실행할 명령을 나타냅니다.

✋ 가상 환경에서 gradle 명령을 실행할 수 있도록 두 번째 단계가 필요합니다. 그것 없이는 불가능합니다.

애플리케이션 게시를 위한 GitHub 작업을 만드는 방법

응용 프로그램을 처음 게시한 후에는 다시 게시하는 것이 일종의 귀찮은 일이 됩니다.

버전이 업그레이드되었는지 확인하고 APK를 빌드하고 Google Play Console 및 기타 지루한 작업을 통해 제출해야 합니다.

다른 GitHub 작업으로 이 프로세스를 자동화할 수 있습니다. 이 작업은 GitHub Secrets를 사용해야 하기 때문에 이전보다 조금 더 복잡합니다.

간단히 말해서 GitHub Secrets는 민감한 정보를 저장소의 환경 변수로 저장하는 방법입니다. 다음과 같은 이유로 이를 사용해야 합니다.

  1. 신청서에 서명해야 합니다
  2. Google Play 스토어에 빌드된 애플리케이션을 제출할 수 있는 권한을 이 작업에 부여합니다.

먼저 GitHub Secrets를 만드는 방법을 알아보겠습니다.

  • 저장소의 기본 페이지에서 설정 을 클릭합니다. 탭
GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법
  • 왼쪽 메뉴에 비밀이라는 제목의 옵션이 있습니다.
GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법
  • 비밀번호를 생성하려면 새 저장소 비밀번호 를 누르십시오. 버튼
GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

이제 문제를 해결했으므로 애플리케이션 게시를 위한 스크립트를 살펴보겠습니다.

name: Android Publish

on:
  workflow_dispatch:

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1

      - name: Set Up JDK
        uses: actions/setup-java@v1
        with:
          java-version: 1.8

      - name: Change wrapper permissions
        run: chmod +x ./gradlew

      - name: Run Tests
        run: ./gradlew test

      - name: Build Project
        run: ./gradlew build

      - name: Build Release AAB      // 1
        run: ./gradlew bundleRelease

      - name: Sign AAB               // 2
        uses: r0adkll/sign-android-release@v1
        with:
          releaseDirectory: app/build/outputs/bundle/release
          signingKeyBase64: ${{ secrets.SIGN_KEY }}
          alias: ${{ secrets.ALIAS }}
          keyStorePassword: ${{ secrets.STORE_KEY_PASSWORD }}
          keyPassword: ${{ secrets.KEY_PASSWORD }}

      - name: Deploy to Play Store   // 3
        uses: r0adkll/upload-google-play@v1
        with:
          serviceAccountJsonPlainText: ${{secrets.SERVICE_ACCOUNT}}
          packageName: com.tomerpacific.laundry
          releaseFiles: app/build/outputs/bundle/release/app-release.aab
          track: production

이 작업이 workflow_dispatch에서 실행된다는 것을 눈치채셨을 것입니다. . 그게 무슨 뜻이야? 기본적으로 이 작업을 GitHub 자체에서 수동으로 트리거할 수 있습니다.

물론 메인 브랜치에서 푸시가 발생할 때(예를 들어) 이 작업을 실행하기로 결정할 수 있습니다.

위의 스니펫에서 1로 표시된 단계는 애플리케이션의 .aab 빌드를 트리거합니다. 그런 다음 Android Studio 내에서 빌드하는 것처럼 이 .aab 파일에 서명해야 합니다.

GitHub Secrets가 작동하는 것은 이번이 처음입니다. 다음에 대한 비밀을 만들어야 합니다.

  • 서명 키(secrets.SIGN_KEY)
  • 키 별칭(secrets.ALIAS)
  • 스토어 키 비밀번호(secrets.STORE_KEY_PASSWORD)
  • 키 비밀번호(secrets.KEY_PASSWORD)

.aab 파일에 서명하면 Google Play 스토어에 배포할 수 있습니다. 이 단계에서는 이 GitHub 작업에 Google Play에 애플리케이션을 배포할 수 있는 권한을 허용해야 하기 때문에 해야 할 일이 조금 더 있습니다. 하지만, 잠깐, 우리가 어떻게 합니까? 우리는 서비스 계정을 사용합니다.

서비스 계정을 만드는 방법

서비스 계정은 상호 작용하는 서비스 또는 애플리케이션에 사용자를 대신하여 작동하고 있음을 알리기 위해 사용자가 생성한 엔티티입니다.

우리의 경우 GitHub Action은 Google Play 스토어와 상호 작용하여 애플리케이션의 새 버전을 업로드할 수 있습니다.

서비스 계정을 만들려면 Google Cloud Console로 이동하세요. 거기에 계정이 없으면 계정을 만드십시오. 그런 다음 기본 페이지의 왼쪽 메뉴에 서비스 계정이라는 목록 항목이 있습니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

클릭하면 창의 오른쪽에 이미 가지고 있는 서비스 계정이 표시됩니다.

새 항목을 만들고자 하며 창 상단에 이를 수행할 수 있는 버튼이 있습니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

열리는 창에서 서비스 이름을 입력해야 하며 설명을 입력할 수도 있습니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

여기에 제공된 이름은 이 서비스 계정의 고유 식별자가 됩니다.

두 번째 단계에서는 이 서비스 계정에 역할을 부여하라는 메시지가 표시됩니다. 역할 선택 에서 드롭다운에서 기본 → 편집기를 선택합니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

마지막으로 세 번째 단계에서 "사용자에게 이 서비스 계정에 대한 액세스 권한 부여" 섹션 아래 두 위치에 이메일을 작성합니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

완료 버튼을 누른 후 이 서비스 계정에 대한 키를 생성해야 합니다. 작업은 이 키를 사용하여 Google Play에서 식별합니다.

키를 만들려면 기본 서비스 계정 화면의 작업 레이블 아래에 있는 세 개의 가로 점을 클릭합니다. 표시되는 메뉴에서 키 관리를 선택합니다. .

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

이 창에서 새 키를 선택하여 키를 만듭니다. 버튼을 누르고 나타나는 메뉴에서 "새 키 만들기"를 선택합니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

이제 새 키의 형식을 선택할 수 있는 옵션이 있습니다. 기본값은 JSON이고 선택된 상태로 두겠습니다. 만들기를 클릭하세요.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

완료하면 파일이 컴퓨터에 다운로드됩니다. 이 파일에는 서비스 계정과 관련된 모든 데이터가 포함되어 있으며 다시 다운로드할 수 없으므로 잘 보관하십시오.

이 파일의 내용을 가져온 다음 이 파일로 GitHub 비밀(secrets.SERVICE_ACCOUNT ).

마지막으로 Google Play에서 이 서비스 계정을 인식하도록 해야 합니다. 그렇게 하려면 Google Play Console 계정에 로그인하고 설정 →API 액세스로 이동해야 합니다. .

페이지를 아래로 스크롤하면 서비스 계정이라는 섹션이 표시됩니다. 이전에 생성한 서비스 계정을 볼 수 있어야 합니다. 액세스 권한 부여 링크를 클릭하십시오.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

열리는 설정에서 앱 권한으로 이동하십시오. 여기에서 이 서비스 계정이 상호 작용하는 애플리케이션을 선택합니다.

계정 권한 아래의 릴리스 섹션을 확인해야 합니다. 다른 모든 설정을 살펴보고 선택 상태로 둘지 또는 선택하지 않을 항목을 직접 결정하는 것이 좋습니다.

완료되면 사용자 초대를 클릭합니다. 버튼은 오른쪽 하단에 있습니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

초대가 전송된 후 게시 작업을 실행할 수 있습니다.

GitHub에서 작업을 모니터링하는 방법

저장소에 대해 정의된 작업을 보려면 작업 탭을 클릭합니다. 이 탭에는 정의된 모든 워크플로와 이미 실행된 워크플로가 표시됩니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

왼쪽에서는 정의된 모든 작업을 볼 수 있고 오른쪽에서는 실행된 모든 작업을 볼 수 있습니다. 특정 동작을 보고 싶다면 클릭하면 됩니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

작업이 workflow_dispatch에서 실행되도록 정의된 경우 , 당신은 그것을 실행할 수 있는 버튼이 보일 것입니다(위 그림과 같이).

워크플로의 특정 실행을 보려면 실행 중 하나를 클릭하여 기본 워크플로 페이지에서 볼 수도 있습니다. 작업 중 하나가 실행되지 않으면 여기에서 무엇이 잘못되었는지 조사하고 확인할 수 있습니다.

우리의 첫 번째 작업은 pull 요청이 열릴 때 트리거되어야 합니다. 제대로 작동하면 다음과 같이 표시되어야 합니다.

GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

그리고 당신은 그것을 가지고 있습니다!

마무리

여기까지는 긴 시간 동안 읽었지만 애플리케이션을 위한 지속적 통합 및 지속적 배포 파이프라인 생성을 시작하는 데 필요한 모든 것을 살펴보았습니다.

GitHub Actions가 어떻게 설정되는지 확인하는 데 관심이 있다면 여기 내 저장소 중 하나에서 확인할 수 있습니다.

Actions · TomerPacific/LaundrySymbols설명과 함께 다양한 세탁 기호를 표시하는 Kotlin으로 작성된 애플리케이션 :cyclone:​​- Actions · TomerPacific/LaundrySymbols GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법 TomerPacificGitHub GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법

GitHub Actions에 대해 자세히 알아보려면 여기로 이동하십시오:

GitHub Actions 문서 - GitHub DocsGitHub Actions를 사용하여 리포지토리에서 바로 소프트웨어 개발 워크플로를 자동화, 사용자 지정 및 실행합니다. 작업을 검색, 생성 및 공유하여 CI/CD를 포함하여 원하는 작업을 수행하고 작업을 완전히 사용자 정의된 워크플로에서 결합할 수 있습니다. GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법 GitHub 문서 GitHub 작업을 사용하여 Android 앱 개발을 자동화하는 방법