Có rất nhiều công việc lặp đi lặp lại mà chúng ta phải làm hàng ngày. Và chúng có thể hơi nhàm chán, khó khăn và đơn điệu.
Nhưng thay vì lao vào những công việc hàng ngày đó, bạn có thể ủy thác chúng để ai đó hoặc việc gì khác làm thay bạn. Bằng cách đó, bạn có thể có nhiều thời gian hơn để làm những việc bạn muốn. Bạn có thể có thời gian để thư giãn.
Nếu bạn đã từng phát triển một ứng dụng Android, bạn sẽ biết một số tác vụ có thể thực hiện tẻ nhạt như thế nào:
- Đang chạy thử nghiệm
- Đảm bảo ứng dụng biên dịch khi hợp nhất mã mới
- Xây dựng và xuất bản ứng dụng.
Vậy chúng ta nên chuyển những nhiệm vụ này cho ai? Một đồng nghiệp khác? Họ chỉ có thể chuyển nó cho người khác và nó sẽ không giải phóng thời gian của bất kỳ ai. Thêm vào đó, chúng tôi không muốn đánh bại các đồng nghiệp của mình. Giải pháp?
Chào mừng bạn đến với GitHub Actions. 👐
Hành động trên GitHub là gì?
GitHub Actions là các lệnh mà chúng tôi có thể kích hoạt khi có điều gì đó xảy ra trong kho lưu trữ của chúng tôi. Về cốt lõi, một hành động là một tệp cấu hình có danh sách các lệnh mô tả:
- Điều gì cần xảy ra
- Khi điều đó xảy ra
Tệp cấu hình này có định dạng YAML (.yml) và một ví dụ như sau:
name: My GitHub Action
on: pull_request
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
Hãy phân tích ví dụ ở trên:
- Chúng tôi đặt tên cho hành động của mình (Hành động GitHub của tôi) [ Tùy chọn]
- Chúng tôi cho biết khi nào hành động này sẽ chạy (khi một yêu cầu kéo được mở)
- Chúng tôi bắt đầu một danh sách các nhiệm vụ (công việc) sẽ xảy ra khi hành động này được kích hoạt
- Cái đầu tiên là bản dựng hành động
- Chạy tiếp lệnh cho GitHub biết người chạy nào sẽ thực hiện công việc này (đây là một máy chủ ảo và bạn có thể chọn giữa Windows / Mac / Linux)
- Mỗi công việc có thể có nhiều giai đoạn được nhóm lại với nhau theo các bước từ khóa
- Cách sử dụng từ khóa cho kịch bản biết hành động cần thực hiện
Đây là một ví dụ rất ngắn không giới thiệu tất cả các tính năng của GitHub Actions, nhưng nó cung cấp cái nhìn về cấu trúc của tệp cấu hình.
Trong các phần tiếp theo, chúng tôi sẽ tạo các hành động giúp duy trì chu trình phát triển của chúng tôi hiệu quả và hiệu quả.
Lưu ý rằng tất cả các tệp GitHub Actions cần phải nằm trong thư mục chính của dự án của bạn trong đường dẫn .github / workflow :
Cách tạo Hành động GitHub cho Yêu cầu kéo
Cho dù bạn đang làm việc trong một dự án một mình hay một phần của nhóm, thì việc đảm bảo rằng ứng dụng của bạn ổn định là rất quan trọng. Vì vậy, hoàn toàn hợp lý khi đảm bảo rằng ứng dụng của bạn đang biên dịch đúng cách và tất cả các bài kiểm tra đều vượt qua bất cứ khi nào bạn xem xét việc hợp nhất một yêu cầu kéo.
Chúng tôi đã trình bày trong ví dụ về cách chúng tôi có thể kiểm tra mã trong kho lưu trữ của chúng tôi. Trong hành động này, chúng tôi sẽ bao gồm các bước sau:
- Thiết lập phiên bản JDK
- Thay đổi quyền đối với môi trường ảo
- Đang chạy thử nghiệm (nếu chúng tôi có bất kỳ thử nghiệm nào)
- Xây dựng ứ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
Bạn có thể thấy rằng ở trên, mỗi bước đều có các thuộc tính riêng và các thuộc tính đặc trưng cho nó.
Tôi sẽ không đi sâu vào từng người trong số họ, vì bạn có thể tự làm điều đó thông qua tài liệu. Điều phổ biến đối với hầu hết các bước là chạy từ khóa. Thuộc tính này cho biết lệnh nào sẽ thực thi.
✋ Chúng ta cần bước thứ hai để môi trường ảo có thể chạy các lệnh gradle. Nếu không có nó, nó sẽ không thể.
Cách thực hiện Hành động GitHub để xuất bản ứng dụng
Khi bạn đã xuất bản ứng dụng của mình lần đầu tiên, việc xuất bản lại nó giống như một công việc vặt.
Bạn phải đảm bảo rằng phiên bản được nâng cấp, xây dựng APK, gửi nó qua Google Play Console và các tác vụ tẻ nhạt khác.
Chúng tôi có thể tự động hóa quá trình này bằng một hành động GitHub khác. Thao tác này phức tạp hơn một chút so với lần trước vì nó yêu cầu sử dụng GitHub Secrets.
Tóm lại, GitHub Secrets là một cách để lưu trữ thông tin nhạy cảm dưới dạng các biến môi trường của kho lưu trữ của bạn. Chúng tôi sẽ cần sử dụng chúng vì:
- Chúng tôi cần phải ký vào đơn đăng ký của mình
- Chúng tôi sẽ cấp quyền cho hành động này để gửi ứng dụng đã xây dựng của chúng tôi tới Cửa hàng Google Play
Trước tiên, hãy tìm hiểu cách chúng tôi có thể tạo Bí mật GitHub.
- Bên trong trang chính của kho lưu trữ của bạn, nhấp vào Cài đặt tab
- Trên menu bên trái, sẽ có một tùy chọn có tiêu đề Bí mật
- Để tạo bí mật, hãy nhấn Bí mật kho lưu trữ mới nút
Bây giờ chúng ta đã hiểu rõ điều đó, hãy xem kịch bản để xuất bản một ứ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
Bạn có thể nhận thấy rằng hành động này sẽ chạy trên workflow_dispatch . Điều đó nghĩa là gì? Về cơ bản, nó cho phép kích hoạt hành động này theo cách thủ công từ chính GitHub.
Tất nhiên, bạn có thể quyết định rằng bạn muốn chạy hành động này khi một cú hích xảy ra trên nhánh chính (ví dụ:).
Bước được đánh dấu bằng 1 trong đoạn mã trên sẽ kích hoạt việc tạo .aab cho ứng dụng của chúng tôi. Sau đó, giống như chúng ta sẽ làm nếu chúng ta đang xây dựng nó bên trong Android Studio, chúng ta phải ký tệp .aab này.
Đây là lần đầu tiên GitHub Secrets xuất hiện. Chúng ta cần tạo ra những bí mật cho:
- Khóa ký (bí mật.SIGN_KEY)
- Bí danh chính (secret.ALIAS)
- Mật khẩu khóa cửa hàng (bí mật.STORE_KEY_PASSWORD)
- Mật khẩu chính (secret.KEY_PASSWORD)
Khi chúng tôi đã ký tệp .aab, chúng tôi có thể triển khai tệp đó vào Cửa hàng Google Play. Ở bước này, có một chút việc phải làm vì chúng tôi cần cho phép Hành động GitHub này quyền triển khai ứng dụng cho chúng tôi trên Google Play. Nhưng, chờ đã, chúng ta làm điều đó như thế nào? Chúng tôi sử dụng Tài khoản Dịch vụ.
Cách tạo tài khoản dịch vụ
Tài khoản dịch vụ là một thực thể mà bạn tạo ra để thông báo cho các dịch vụ hoặc ứng dụng mà nó tương tác với rằng nó đang vận hành thay mặt cho bạn.
Trong trường hợp của chúng tôi, Hành động GitHub của chúng tôi sẽ tương tác với Cửa hàng Google Play để nó có thể tải lên phiên bản mới của ứng dụng của chúng tôi.
Để tạo tài khoản dịch vụ, hãy truy cập Google Cloud Console. Nếu bạn không có tài khoản ở đó, hãy đảm bảo tạo một tài khoản. Sau đó, trên trang chính, trong menu bên trái, sẽ có một mục danh sách có tiêu đề Tài khoản Dịch vụ.
Khi bạn đã nhấp vào nó, ở phía bên phải của cửa sổ, bạn sẽ thấy bất kỳ tài khoản dịch vụ nào bạn đã có.
Chúng tôi muốn tạo một cái mới và ở phần trên cùng của cửa sổ có một nút để thực hiện việc đó.
Trong cửa sổ mở ra, bạn sẽ phải nhập tên của dịch vụ và bạn cũng có thể nhập mô tả.
Tên được cung cấp ở đây sẽ là định danh duy nhất của tài khoản dịch vụ này.
Trong bước thứ hai, bạn sẽ được yêu cầu cấp cho tài khoản dịch vụ này một vai trò. Từ Chọn một vai trò thả xuống, chọn Cơ bản → Trình chỉnh sửa.
Cuối cùng, ở bước thứ ba, hãy điền email của bạn vào cả hai nơi trong phần "Cấp cho người dùng quyền truy cập vào tài khoản dịch vụ này":
Sau khi nhấn nút hoàn tất, bạn sẽ cần tạo khóa cho tài khoản dịch vụ này. Hành động sẽ sử dụng khóa này để được Google Play xác định.
Để tạo khóa, hãy nhấp vào ba chấm ngang dưới nhãn Tác vụ trong màn hình tài khoản dịch vụ chính. Trong trình đơn xuất hiện, chọn Quản lý khóa .
Trong cửa sổ này, chúng tôi sẽ tạo khóa bằng cách chọn Khóa mới và chọn "Tạo khóa mới" từ menu xuất hiện.
Bây giờ chúng tôi có tùy chọn chọn định dạng của khóa mới của chúng tôi - mặc định là JSON và chúng tôi sẽ để nó được chọn. Nhấp vào tạo.
Khi bạn đã làm như vậy, một tệp sẽ được tải xuống máy tính của bạn. Đảm bảo giữ tệp này vì tệp có tất cả dữ liệu liên quan đến tài khoản dịch vụ của bạn và bạn sẽ không thể tải xuống lại.
Chúng tôi sẽ lấy nội dung của tệp này và sau đó tạo bí mật GitHub bằng nó ( secret.SERVICE_ACCOUNT ).
Cuối cùng nhưng không kém phần quan trọng, chúng tôi cần phải thông báo cho Google Play về tài khoản dịch vụ này. Làm như vậy yêu cầu chúng tôi đăng nhập vào tài khoản Google Play Console của mình và chuyển đến Thiết lập → Quyền truy cập API .
Nếu bạn cuộn xuống trang, bạn sẽ thấy một phần có tiêu đề Tài khoản dịch vụ. Bạn sẽ có thể thấy tài khoản dịch vụ mà bạn đã tạo trước đó. Nhấp vào liên kết Grant Access
Trong cài đặt mở ra, hãy chuyển đến Quyền ứng dụng. Tại đây bạn sẽ chọn tài khoản dịch vụ này tương tác với ứng dụng nào.
Trong Quyền tài khoản, mọi thứ trong bản phát hành phần cần được kiểm tra. Tôi thực sự khuyên bạn nên xem xét tất cả các cài đặt khác và tự mình quyết định xem bạn muốn chọn gì hoặc bạn muốn đánh dấu điều gì.
Sau khi bạn hoàn tất, hãy nhấp vào nút Mời người dùng nút nằm ở góc dưới cùng bên phải.
Sau khi lời mời được gửi, chúng tôi có thể chạy hành động xuất bản để lưu trữ.
Cách theo dõi hành động của chúng tôi trong GitHub
Để xem những hành động nào được xác định cho kho lưu trữ của bạn, hãy nhấp vào tab Hành động. Tab này hiển thị tất cả các quy trình công việc đã xác định và những quy trình đã chạy.
Ở phía bên tay trái, bạn có thể thấy tất cả các hành động đã được xác định và ở phía bên tay phải, bạn có thể thấy tất cả các hành động đã được chạy. Nếu bạn muốn xem một hành động cụ thể, bạn có thể nhấp vào nó.
Nếu hành động được xác định để chạy trên workflow_dispatch , bạn sẽ thấy một nút cho phép bạn chạy nó (như trong hình trên).
Nếu bạn muốn xem một lần chạy cụ thể của một dòng công việc, bạn cũng có thể thực hiện việc đó từ trang Dòng công việc chính bằng cách nhấp vào một trong các lần chạy. Nếu một trong các hành động không chạy được, đây sẽ là nơi để điều tra và xem điều gì đã xảy ra.
Hành động đầu tiên của chúng tôi sẽ được kích hoạt khi một yêu cầu kéo được mở. Nếu nó hoạt động chính xác, bạn sẽ thấy điều này:
Và bạn đã có nó!
Kết thúc
Tính đến thời điểm này đã đọc lâu rồi nhưng chúng tôi đã xem qua mọi thứ mà bạn cần để bắt đầu tạo một đường dẫn Tích hợp liên tục và Triển khai liên tục cho các ứng dụng của mình.
Nếu bạn muốn xem các Hành động GitHub được thiết lập như thế nào, bạn có thể xem chúng trong một trong các kho lưu trữ của tôi tại đây:
Actions · TomerPacific / LaundrySymbols Một ứng dụng được viết bằng Kotlin hiển thị các ký hiệu giặt khác nhau kèm theo giải thích:cyclone:- Actions · TomerPacific / LaundrySymbols TomerPacificGitHubĐể đọc thêm về GitHub Actions, hãy truy cập tại đây:
Tài liệu về Hành động GitHub - Tài liệu về GitHub Tự động hóa, tùy chỉnh và thực thi quy trình phát triển phần mềm của bạn ngay trong kho lưu trữ của bạn với Hành động GitHub. Bạn có thể khám phá, tạo và chia sẻ các hành động để thực hiện bất kỳ công việc nào bạn muốn, bao gồm CI / CD và kết hợp các hành động trong một quy trình làm việc hoàn toàn tùy chỉnh. Tài liệu GitHub