Chạy tập lệnh python trên github

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à name2 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 name3

Mọi thứ đều có trên kho GitHub. tập lệnh name4, dữ liệu được lưu dưới dạng tệp name5 và quy trình công việc name6

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

  1. Để 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à name7

  2. Trong thư mục name7, 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ộng name6. Ví dụ, của tôi là. on0

[Hãy tính đến việc các tệp name6 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 công 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 name7, tôi. e. trong on0. 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 làm việc dựa trên các sự kiện khác, chẳng hạn như sự kiện on6, để 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. name6

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 on8 [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 name8

Đị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 name9

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 name0

Từ khóa name62 cho biết công việc truy xuất v2 của hành động cộng đồng có tên name63. Đâ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 name3

Từ khóa name62 cho biết công việc truy xuất v2 của hành động cộng đồng có tên name66. Hành động này cài đặt python vào người chạy. Bạn có thể chọn name67 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ư name68

7. 2. 3 name8

Sử dụng name80, chúng tôi chạy mã python trong trình chạy. Trước tiên, chúng tôi cài đặt name81 và sau đó là các thư viện cần thiết có trong tệp name82

7. 2. 4 name2

Ở đâ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 name84 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 name85 đượ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 name86 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 name0

Ở đây chúng tôi đang dàn dựng và cam kết các thay đổi

7. 2. 6 name1

Chúng tôi sử dụng hành động name89 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ị name90. 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ừ name91 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. name92

GitHub tự động tạo một bí mật name93 để 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 name93 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 name95, name96 và name97 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

Chủ Đề