Friday, 18 June 2021

CI: Test build AutoIt file với GitHub Actions

Bài viết này hướng dẫn cách tạo một workflow đơn giản test xem file AutoIt có bị syntax error hay không. Cơ bản là nếu như script không bị syntax error hay definition error là có thể compile thành công, nên ta có thể xem đây là cách "đơn giản" để test build một file AutoIt.

Cho bạn nào chưa biết AutoIt là gì: 

Ý tưởng: 

Mình sẽ cài trình biên dịch AutoIt lên máy ảo, sau đó chạy file Au3Check.exe - file kiểm tra cú pháp của AutoIt - với các đối số là các file mình cần test build. 

Bắt tay vào nghịch:

Trước hết cần nhấn mạnh vài điều:

Thứ nhất: GitHub hỗ trợ máy ảo Windows - điều tuyệt vời nhất vì script AutoIt chạy ổn định nhất trên Windows (tất nhiên, vì AutoIt mục đích chính là hỗ trợ Win32 UI mà, duh?). Nếu không có máy ảo Windows thì chúng ta phải tốn nhiều thời gian cài Wine trên các máy ảo khác, và mình khuyên là đừng nên dùng katana xẻ ruồi làm gì cho nó đao to búa lớn khủng khiếp siêu cấp luxury. Có gì xài nấy!  

Thứ hai, AutoIt có trên Chocolatey! Mình đã thử một solution điên rồ hơn là viết script PowerShell để download file cài đặt AutoIt về và rõ ràng nó tốn rất nhiều công sức và workflow minute. Một thông tin thêm là 1 Windows workflow minute bằng 2 Linux workflow minute. Free plan chỉ có 2000 private minutes (chạy trên private repository) / tháng và Pro plan (apply Student Pack sẽ có) là 3000 private minutes / tháng cho tất cả các repository. 

tl;dr: build không cẩn thận cứ sửa tới sửa lui thì 2000 private workflow minutes có thể bay trong 1 buổi chiều. Muốn biết 2000 workflow minutes đáng giá bao nhiêu?.

Thứ ba, GitHub Actions hỗ trợ Chocolatey và PowerShell thì có sẵn trên máy ảo Windows. 

Dao búa rìu cưa có đủ rồi. Việc của mình bây giờ là làm sao xẻ thịt con ruồi thật đẹp. Bên dưới là cài đặt của file test-build.yml:


Tạo GitHub Actions

Cái này khỏi nói. Actions > New workflow. Cái này ai cũng phải biết, vì mặc định không có cái workflow nào cho AutoIt project đâu! Mình phải tự làm với công cụ hỗ trợ hết á!

Phần runs-on gõ vào windows-latest (tại thời điểm viết là Windows Server 2019).

Cài AutoIt

Dùng Chocolatey Actions. Phần args điền install autoit vào.

Package AutoIt trên Chocolatey

Cài PowerShell script để test

AutoIt cài ở bước trên xài default x86 path. Nghĩa là, folder AutoIt sẽ là C:\Program Files (x86)\AutoIt3. Khi đó, muốn chạy Au3Check.exe thì phải gọi đúng path là C:\Program Files (x86)\AutoIt3\Au3Check.exe.

Hình bên dưới là nội dung .github/scripts/test-build.ps1


Trên thực tế, bạn không dễ gì xài được đường dẫn tuyệt đối đến một file .au3 nào đó. Tham khảo topic này để biết cách xài environment variables liên quan tới repository nhé.

Chạy thử

Workflow được trigger lúc push và pull_request, nhưng cũng có thể trigger bằng tay. Bỏ qua mấy cách trigger thì đây là kết quả khi build thành công:

Và đây là khi có warning:

(chú ý là warning cũng bị đánh build không thành công, vì ở trên mình có đặt flag -w từ [3..7]. Xem các flag của Au3Check tại đây).

Kết

Trên đây là cách mình test build file AutoIt với Chocolatey, PowerShell & GitHub Actions. Nếu bạn để ý thì trong folder cài đặt có nhiều thứ vũ khí lợi hại khác (Interpreter để chạy, Compiler để compile, Tidy để dọn code, ..etc). Cài được check rồi thì cũng cài được mấy cái kia, quan trọng bạn có thời gian để nghiên cứu và nghịch thử. Chúc bạn thành công!

Happy coding!

No comments:

Post a Comment

Popular posts