Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Android

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Có nhiều tác vụ lặp lại chúng ta phải làm hàng ngày. Chúng có thể nhàm chán, khó khăn và đơn điệu.

Thay vì lao động chăm chỉ với những tác vụ hàng ngày, bạn có thể ủy thác cho người hoặc thứ khác làm thay. Như vậy bạn sẽ có thêm thời gian làm những việc mình muốn, có thời gian để thư giãn.

Nếu bạn từng phát triển ứng dụng Android, bạn biết một số tác vụ có thể rất tẻ nhạt:

  • Chạy test
  • Đảm bảo ứng dụng compile được khi merge code mới
  • Build và publish ứng dụng.

Nên giao cho ai? Đồng nghiệp khác? Họ có thể chuyển tiếp cho người khác và không giải phóng thời gian ai. Ngoài ra, chúng ta không muốn làm phiền đồng nghiệp. Giải pháp?

Chào GitHub Actions. 👐

GitHub Actions Là Gì?

GitHub Actions là các lệnh có thể kích hoạt khi có sự kiện xảy ra trong repository. Cốt lõi, một action là file cấu hình chứa danh sách lệnh mô tả:

  • Cần làm gì
  • Khi nào nên làm

File cấu hình này ở định dạng YAML (.yml), ví dụ:

name: My GitHub Action on: pull_request jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1

Phân tích ví dụ:

  1. Đặt tên action (My GitHub Action) [Tùy chọn]
  2. Chỉ định khi action chạy (khi pull request được mở)
  3. Bắt đầu danh sách tác vụ (jobs) xảy ra khi action được kích hoạt
  4. Thứ nhất là action build
  5. Lệnh runs-on cho GitHub biết runner nào sẽ chạy job (máy ảo, chọn Windows/Mac/Linux)
  6. Mỗi job có nhiều phase nhóm bởi từ khóa steps
  7. Từ khóa uses cho script biết action nào sẽ thực thi

Ví dụ ngắn này không thể hiện tất cả tính năng GitHub Actions, nhưng cho thấy cấu trúc file cấu hình.

Phần tiếp theo sẽ tạo actions giúp chu kỳ phát triển hiệu quả.

Lưu ý: mọi file GitHub Actions phải nằm trong thư mục .github/workflows của dự án:

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Tạo GitHub Action Cho Pull Requests

Dù làm việc một mình hay nhóm, đảm bảo ứng dụng ổn định rất quan trọng. Vì vậy, nên đảm bảo ứng dụng compile đúng và mọi test pass khi cân nhắc merge pull request.

Đã chỉ cách checkout code trong ví dụ. Action này sẽ bao gồm các bước:

  1. Setup JDK version
  2. Thay đổi quyền cho môi trường ảo
  3. Chạy test (nếu có)
  4. Build ứng dụng
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

Mỗi bước có properties và attributes riêng. Không đi sâu vào từng cái, bạn tự xem tài liệu. Điểm chung là từ khóa run - chỉ lệnh cần thực thi.

✋ Bước 2 cần thiết để môi trường ảo chạy lệnh gradle. Không có nó thì không chạy được.

Tạo GitHub Action Cho Publish Ứng Dụng

Sau khi publish lần đầu, republic trở nên như một việc vặt.

Phải đảm bảo version được nâng cấp, build APK, submit qua Google Play Console và các tác vụ nhàm chán khác.

Có thể tự động hóa bằng GitHub action khác. Action này phức tạp hơn vì cần dùng GitHub Secrets.

Tóm lại, GitHub Secrets là cách lưu thông tin nhạy cảm như biến môi trường của repository. Cần dùng vì:

  1. Cần sign ứng dụng
  2. Cấp quyền cho action submit build lên Google Play Store

Hãy xem cách tạo GitHub Secrets.

  • Trang chính repository, nhấn tab Settings
Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước
  • Menu trái, chọn Secrets
Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước
  • Nhấn nút New repository secret
Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Script publish ứng dụng:

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

Action chạy on workflow_dispatch. Nghĩa là kích hoạt thủ công từ GitHub. Bạn cũng có thể chọn chạy khi push lên main branch.

Bước đánh dấu 1 build file .aab. Sau đó sign file .aab như làm trong Android Studio.

Lần đầu GitHub Secrets xuất hiện. Cần tạo secrets cho:

  • Signing Key (secrets.SIGN_KEY)
  • Key Alias (secrets.ALIAS)
  • Store Key Password (secrets.STORE_KEY_PASSWORD)
  • Key Password (secrets.KEY_PASSWORD)

Sau khi sign .aab, deploy lên Google Play Store. Bước này cần công việc thêm vì phải cấp quyền cho GitHub Action deploy app trên Google Play. Cách làm? Dùng Service Account.

Tạo Service Account

Service account là thực thể bạn tạo, báo cho dịch vụ/ứng dụng tương tác rằng nó hoạt động thay mặt bạn.

Trong trường hợp này, GitHub Action tương tác với Google Play Store để upload version mới.

Tạo service account: vào Google Cloud Console. Nếu chưa có tài khoản, hãy tạo. Menu trái, chọn Service Accounts.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Sau khi click, bên phải thấy service accounts hiện có. Tạo mới bằng nút trên cùng.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Nhập tên service và mô tả.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Tên ở đây là identifier duy nhất.

Bước 2: cấp role. Từ dropdown Select A Role, chọn Basic → Editor.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Bước 3: điền email ở cả hai chỗ dưới "Grant users access to this service account":

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Sau khi Done, tạo key cho service account. Action dùng key này để xác thực với Google Play.

Tạo key: click 3 chấm ngang dưới Actions, chọn Manage keys.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Chọn New Key → "Create new key".

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Chọn format JSON (mặc định), nhấn Create.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

File sẽ tải về máy. Giữ cẩn thận vì chứa dữ liệu service account và không tải lại được.

Lấy nội dung file tạo GitHub secret (secrets.SERVICE_ACCOUNT).

Cuối cùng, làm Google Play nhận biết service account. Đăng nhập Google Play Console, vào Setup → API Access.

Kéo xuống, thấy section Service Accounts. Click Grant Access.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Vào App permissions, chọn ứng dụng service account tương tác. Dưới Account permissions, check tất cả dưới section releases. Khuyên xem các setting khác quyết định check/bỏ check. Nhấn Invite user góc dưới phải.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Sau khi mời, có thể chạy action publish.

Theo Dõi Actions Trên GitHub

Xem actions của repository: nhấn tab Actions. Tab này hiển thị tất cả workflows đã định nghĩa và đã chạy.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Bên trái: actions đã định nghĩa. Bên phải: actions đã chạy. Click vào action cụ thể để xem chi tiết.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Nếu action chạy on workflow_dispatch, sẽ thấy nút chạy (như ảnh).

Xem run cụ thể từ trang Workflows chính bằng cách click vào run. Nếu action fail, đây là nơi điều tra lỗi.

Action đầu tiên trigger khi pull request mở. Nếu chạy đúng, sẽ thấy:

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Đã xong!

Tổng Kết

Đọc khá dài, nhưng đã đi qua tất cả cần thiết để bắt đầu tạo pipeline CI/CD cho ứng dụng.

Nếu quan tâm cách setup GitHub Actions, xem tại repository:

Actions · TomerPacific/LaundrySymbols
Ứng dụng Kotlin hiển thị các ký hiệu giặt ủi với giải thích :cyclone: - Actions · TomerPacific/LaundrySymbols

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước
Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước

Đọc thêm về GitHub Actions:

GitHub Actions Documentation - GitHub Docs
Tự động hóa, tùy chỉnh, thực thi quy trình phát triển phần mềm ngay trong repository với GitHub Actions. Khám phá, tạo, chia sẻ actions thực hiện bất kỳ job nào, bao gồm CI/CD, kết hợp actions trong workflow tùy chỉnh hoàn toàn.

Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước
Tự Động Hóa Phát Triển Ứng Dụng Android Với GitHub Actions: Hướng Dẫn Bước Để Bước