Nếu bạn là người dùng GitHub, có lẽ bạn đã thấy những hình ảnh nhỏ đó trong README của kho lưu trữ yêu thích của bạn. Ví dụ: hãy kiểm tra Pandas '
Nhưng những hình ảnh này là gì và chúng có ý nghĩa gì? . Hầu hết các quy trình công việc này là một phần của cái được gọi là CI/CD, viết tắt của Tích hợp liên tục và Triển khai liên tục, tương ứng
Trong quy trình công việc CI/CD, DevOps và Kỹ sư phần mềm tạo “các bài kiểm tra” cho các kho lưu trữ nơi mọi người cộng tác viết mã. Mục đích của các thử nghiệm này là để kiểm tra xem mã mới có phá mã hiện tại không. Bạn có thể đọc thêm chi tiết về CI/CD tại đây. https. // tài liệu. github. com/vi/free-pro-team@latest/actions/guides/about-continuous-integration
2 Tác vụ GitHub
Các hành động của GitHub là một công cụ để chạy các quy trình công việc này và phần tốt nhất là nó được tích hợp hoàn toàn vào GitHub. Chuyển đến bất kỳ kho lưu trữ nào của bạn và tìm tab "Hành động"
Ngoài ra, GH Actions miễn phí với hạn mức 2000 phút cho mỗi người dùng mỗi tháng. Điều đó có nghĩa là bạn có thể có một số quy trình công việc, được thiết lập trên các kho lưu trữ khác nhau và thời gian chạy chúng sẽ ít hơn 2000 phút mỗi tháng, để tiếp tục sử dụng miễn phí
3 Tôi là Nhà khoa học dữ liệu, không phải DevOps
Q. Chào. Tôi là Nhà khoa học dữ liệu, không phải DevOps hay Kỹ sư phần mềm. Tại sao tôi nên quan tâm đến điều này?
Có nhiều lý do, nhưng những lý do tôi thấy mạnh mẽ nhất là
- Bạn có thể sử dụng GH Actions để chạy các tập lệnh theo lịch trình mà không phải lo lắng về việc thiết lập máy ảo trên đám mây
- Bạn có thể tích hợp quy trình công việc vào kho lưu trữ một cách liền mạch. Nghĩa là, các quy trình công việc có thể đọc và ghi vào kho lưu trữ nơi chứa mã
- Bạn có tất cả sức mạnh mà
name
2 có thể cung cấp. kiểm soát phiên bản, cộng tác, nhánh, khác biệt, v.v.
IMHO GitHub Actions là một siêu công cụ để chạy quy trình công việc ETL
4 Vẫn chưa thuyết phục, hãy cho tôi xem một ví dụ
Để cho bạn thấy sức mạnh của GH Actions, tôi đã tạo một trình quét trong python để thu thập các bản cập nhật hàng ngày về Covid-19 ở tỉnh San Juan, Argentina
Chính quyền địa phương duy trì một bảng điều khiển với các bản cập nhật. https. //sisanjuan. gob. ar/modulo-coronavirus
Bảng điều khiển được cập nhật hàng ngày giữa 19. 30 và 21. 00 UTC-3. Vấn đề là nó chỉ hiển thị các cập nhật hàng ngày, nhưng không có dấu vết của dữ liệu lịch sử
Để ghi lại tất cả dữ liệu này, tôi đã tạo tập lệnh python để loại bỏ bảng điều khiển và nối kết quả vào tệp csv. Tệp csv kết quả được lưu trong thư mục name
3
Mọi thứ đều có trên kho GitHub. tập lệnh name
4, dữ liệu được lưu dưới dạng tệp name
5 và quy trình công việc name
6
5 Hành động GH đầu tiên của chúng tôi
Mọi thứ là phần này được lấy từ tài liệu của GH. https. // tài liệu. github. com/vi/free-pro-team@latest/actions/learn-github-actions/introduction-to-github-actions
Để kích hoạt GH Actions trên kho lưu trữ của bạn, trước tiên bạn cần tạo một thư mục có tên là
name
7Trong thư mục
name
7, tạo một tệp mới có tên bạn muốn cho quy trình làm việc của mình và phần mở rộngname
6. Ví dụ, của tôi là.on
0
[Hãy tính đến việc các tệp name
6 nhạy cảm với thụt lề]
Để hiểu hướng dẫn này, hãy truy cập liên kết tài liệu GH ở trên và đọc về từ vựng liên quan đến Hành động GH. sự kiện, công việc, hành động, v.v. Hình ảnh sau đây giúp hiểu chúng liên quan với nhau như thế nào
6 Phân tích quy trình làm việc
Tất cả điều kỳ diệu xảy ra trong tệp yml mà chúng tôi đã lưu vào name
7, tôi. e. trong on
0. Tìm bên dưới mã hoàn chỉnh
name: scraper-san-juan-gobierno
on:
schedule:
- cron: '0 12 * * *' # runs at 12:00 UTC everyday
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: checkout repo content
uses: actions/checkout@v2 # checkout the repository content to github runner
- name: setup python
uses: actions/setup-python@v2
with:
python-version: '3.7.7' # install the python version needed
- name: install python packages
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: execute py script # run sj-gobierno.py to get the latest data
env:
EMAIL_ADDRESS: ${{ secrets.EMAIL_ADDRESS }}
EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }}
EMAIL_RECIPIENT: ${{ secrets.EMAIL_RECIPIENT }}
run: python sj-gobierno.py
- name: commit files
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add -A
git commit -m "update data" -a
- name: push changes
uses: ad-m/github-push-action@v0.6.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: main
Như phần thụt đầu dòng cho thấy, có 3 phần chính mà chúng tôi sẽ phân tích chi tiết
6. 1 Phần 1. name
Tùy chọn - Tên của quy trình công việc sẽ xuất hiện trong tab Hành động của kho lưu trữ GitHub
6. 2 Phần 2. on
Chỉ định sự kiện tự động kích hoạt tệp quy trình làm việc. Ví dụ này được lên lịch sử dụng cron nhưng bạn cũng có thể kích hoạt quy trình công việc dựa trên các sự kiện khác, chẳng hạn như sự kiện on
6, để các công việc chạy mỗi khi ai đó đẩy một thay đổi vào kho lưu trữ
Nếu bạn định lên lịch cho quy trình công việc, tôi khuyên bạn nên sử dụng crontab. guru để xây dựng các biểu thức cron của bạn
6. 3 Phần 3. name
6
Nhóm tất cả các công việc chạy trong tệp quy trình công việc yml lại với nhau. Chi tiết đầy đủ trong phần sau
7 Phần 3. chi tiết
CHỈNH SỬA. Phần này đã được cấu trúc lại do thiếu một số dòng mã trong tệp on
8 [xem phần nhận xét để biết thêm ngữ cảnh]. Bây giờ đã được sửa. Cảm ơn Matt vì đã thông báo trước
7. 1 name
8
Định cấu hình công việc để chạy trên trình chạy Ubuntu Linux. Điều này có nghĩa là công việc sẽ thực thi trên một máy ảo mới do GitHub lưu trữ
7. 2 name
9
Nhóm tất cả các bước chạy trong công việc lại với nhau. Mỗi dòng được lồng trong phần này là một hành động riêng biệt
7. 2. 1 name
0
Từ khóa name
62 cho biết công việc truy xuất v2 của hành động cộng đồng có tên name
63. Đây là một hành động kiểm tra kho lưu trữ của bạn và tải nó xuống trình chạy, cho phép bạn chạy các hành động đối với mã của mình.
Bạn phải sử dụng hành động thanh toán bất kỳ lúc nào quy trình công việc của bạn chạy theo mã của kho lưu trữ hoặc bạn đang sử dụng một hành động được xác định trong kho lưu trữ.
7. 2. 2 name
3
Từ khóa name
62 cho biết công việc truy xuất v2 của hành động cộng đồng có tên name
66. Hành động này cài đặt python vào người chạy. Bạn có thể chọn name
67 cài đặt phiên bản mới nhất của python 3 hoặc một phiên bản cụ thể của python, chẳng hạn như name
68
7. 2. 3 name
8
Sử dụng name
80, chúng tôi chạy mã python trong trình chạy. Trước tiên, chúng tôi cài đặt name
81 và sau đó là các thư viện cần thiết có trong tệp name
82
7. 2. 4 name
2
Ở đây chúng tôi chạy tập lệnh python để quét trang web. Trái ngược với bước trước, chúng tôi không cần name
84 vì bây giờ chúng tôi gọi một dòng mã python để chạy tập lệnh
Ngoài ra, ở đây bạn thấy từ khóa name
85 được sử dụng để gọi “bí mật GitHub”. Tôi sẽ giải thích chúng sau
Mặc dù bước name
86 mà chúng tôi chạy trước đó cũng chạy mã python, nhưng chúng tôi đã gọi nó trong một bước riêng do nguyên tắc đặc quyền tối thiểu. Bạn không cần truy cập vào các bí mật để cài đặt các thư viện cần thiết, do đó, việc này sẽ thực hiện trong một bước riêng. Cảm ơn người dùng airtower-luna đã cảnh báo tôi về điều này
7. 2. 5 name
0
Ở đây chúng tôi đang dàn dựng và cam kết các thay đổi
7. 2. 6 name
1
Chúng tôi sử dụng hành động name
89 từ người dùng ad-m để đẩy các thay đổi trở lại kho lưu trữ
Lưu ý rằng ở đây có một dòng hiển thị name
90. Theo thuật ngữ của GH, điều này được gọi là “bí mật”. Bí mật là các biến môi trường được mã hóa cho phép bạn lưu trữ thông tin nhạy cảm, chẳng hạn như mật khẩu hoặc khóa API. Để truy cập các bí mật trong quy trình làm việc của bạn, bạn sẽ cần ký hiệu đô la, dấu ngoặc nhọn kép, từ name
91 theo sau là dấu chấm và tên bí mật của bạn. Một cái gì đó như thế này. name
92
GitHub tự động tạo một bí mật name
93 để sử dụng trong quy trình làm việc của bạn, vì vậy bạn không phải lo lắng về việc tạo bí mật này. Bí mật name
93 cho phép chúng tôi xác thực chính mình [trong ví dụ này là cần thiết để đẩy các thay đổi]
Mặt khác, các bí mật name
95, name
96 và name
97 mà chúng tôi đã sử dụng ở bước trước không được tạo tự động và cần được thiết lập. Tôi khuyên bạn nên kiểm tra một bài đăng trên blog khác mà tôi đã viết riêng về bí mật GitHub để biết đầy đủ chi tiết về cách tạo bài đăng của bạn. https. //canovasjm. netlify. app/2021/01/12/github-secrets-from-python-and-r/
8 Yêu cầu huy hiệu của bạn
Để hiển thị huy hiệu của mình, bạn cần chuyển đến “Hành động”, chọn tên của quy trình công việc, nhấp vào \[\cdots\] menu and then click on “Create status badge”.
Điều này sẽ bật lên một cửa sổ nơi bạn có thể “Sao chép huy hiệu trạng thái Markdown”
Cuối cùng, chỉnh sửa README của bạn. md và dán văn bản đã sao chép lên trên
Lúc đầu, huy hiệu sẽ có màu xám và hiển thị chú giải “không có trạng thái”. Sau khi chạy thành công sẽ chuyển sang màu xanh và “passing”
9 Đi đâu tiếp theo
Bạn cũng có thể thiết lập quy trình làm việc để chỉ chạy trên một số nhánh, đường dẫn hoặc thẻ nhất định. Đối với các ví dụ cú pháp xem. https. // tài liệu. github. com/vi/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths
Tài liệu hành động GitHub. https. // tài liệu. github. com/vi/free-pro-team@latest/actions
Hướng dẫn bắt đầu hành động GitHub. https. // tài liệu. github. com/vi/free-pro-team@latest/actions/learn-github-actions#creating-a-workflow-file
Trang phục hành động GitHub. https. //tài nguyên. github. com/whitepapers/GitHub-Actions-Cheat-sheet/
Bí mật GitHub. https. // tài liệu. github. com/vi/free-pro-team@latest/actions/reference/encrypted-secrets
cú pháp YAML. https. //www. dự án mật mã. com/Articles/1214409/Học-YAML-trong-năm-phút
Thảo luận về Hành động GH trên các chi nhánh. https. // stackoverflow. com/câu hỏi/63436541/github-action-workflow-schedule-not-working-on-non-default-branch
Các hành động GitHub có thể chạy tập lệnh Python không?
Chạy hành động tập lệnh Python. Viết tập lệnh Python trong tệp quy trình Hành động . Hành động này cho phép bạn xác định tập lệnh Python tùy chỉnh bên trong tệp YAML của quy trình làm việc. Viết mã Python của bạn làm đối số tập lệnh và sử dụng tính năng chuỗi nhiều dòng YAML để xác định tập lệnh nhiều dòng.Tôi có thể chạy tập lệnh trong GitHub không?
Thêm tập lệnh vào quy trình làm việc của bạn . Để biết thêm thông tin, hãy xem "Cú pháp quy trình làm việc cho Tác vụ GitHub. "you can store the script in your repository and supply the path and shell type. For more information, see "Workflow syntax for GitHub Actions."