Hướng dẫn can i run python script in github actions? - tôi có thể chạy tập lệnh python trong các hành động github không?

Chạy hành động tập lệnh Python

Viết các tập lệnh Python trong một tệp quy trình làm việc của hành động!

Hành động này cho phép bạn xác định một tập lệnh python tùy chỉnh bên trong tệp yaml công việc. Viết mã Python của bạn làm đối số script và sử dụng tính năng chuỗi đa dòng YAML để xác định các tập lệnh đa dòng.

Yêu cầu duy nhất là bạn thiết lập môi trường Python trước khi chạy hành động. Dưới đây là một quy trình công việc ví dụ in nội dung thư mục gốc của kho lưu trữ vào nhật ký hành động:

name: Run Script

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        with:
          script: |
            import os
            print("Directory contents:")
            for f in os.listdir():
                print(f)

Xử lý lỗi

Theo mặc định, hành động sẽ thất bại nếu nó gặp bất kỳ lỗi nào khi cố gắng chạy tập lệnh của bạn. Bạn có thể ghi đè này với đầu vào fail-on-error.

Hành động đặt ba đầu ra:

  • stdout chứa bất kỳ văn bản nào mà chương trình của bạn in vào bảng điều khiển
  • stderr chứa bất kỳ văn bản nào được chuyển đến Stderr, chẳng hạn như tin nhắn ngoại lệ
  • error là một chuỗi có "true" hoặc "false" tùy thuộc vào việc có lỗi hay không, hãy sử dụng điều này để kiểm tra lỗi khi bạn chọn không thất bại

Nhìn vào đoạn trích sau đây để xem cách xử lý lỗi hoạt động trong thực tế:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 

Các chức năng tiện ích

Hành động đi kèm với các tiện ích mà bạn có thể sử dụng để tương tác với quy trình làm việc. Nếu bạn muốn vô hiệu hóa các tiện ích này, bạn có thể đặt

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
0 làm đầu vào cho bước. Bạn có thể gọi các chức năng này trực tiếp từ script của bạn mà không cần phải nhập bất cứ thứ gì.

Example:

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()

Thêm đường dẫn

Chữ ký:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
2:
name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
2

Trao tiền cho đường dẫn hệ thống. Sự thay đổi sẽ chỉ ảnh hưởng đến các bước sau.

Nhận đầu vào

Chữ ký:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
3:
name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
3

Trả về giá trị của đầu vào đã cho dưới dạng chuỗi.

Đặt đầu ra

Chữ ký:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
4:
name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
4

Đặt một tham số đầu ra.

Đặt env

Chữ ký:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
5:
name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
5

Đặt một biến môi trường để sử dụng trong các bước sau.

Gỡ lỗi

Chữ ký:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
6:
name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
6

Gửi tin nhắn gỡ lỗi. Thông báo sẽ chỉ hiển thị khi ghi nhật ký gỡ lỗi đã được bật.

Cảnh báo

Chữ ký:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
7:
name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
7

Gửi một thông báo cảnh báo sẽ được tô sáng với màu vàng trong nhật ký công việc.

Lỗi

Chữ ký:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
8:
name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
8

Gửi một thông báo lỗi sẽ được Higlight với màu đỏ trong nhật ký quy trình làm việc.

Tập đoàn

Chữ ký:

name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
9:
name: Run Script

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: jannekem/run-python-script-action@v1
        id: script
        with:
          fail-on-error: false
          script: |
            print("Doing something that will fail")
            a = []
            a[10]
      - name: Print errors
        if: steps.script.outputs.error == 'true'
        run: |
          printenv "SCRIPT_STDOUT"
          printenv "SCRIPT_STDERR"
        env:
          SCRIPT_STDOUT: ${{ steps.script.outputs.stdout }}
          SCRIPT_STDERR: ${{ steps.script.outputs.stderr }} 
9

Tạo một nhóm có thể mở rộng trong nhật ký quy trình làm việc.

Kết thúc nhóm

Chữ ký:

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
0:
- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
0

Kết thúc một nhóm. Tất cả các dòng in trước khi gọi

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
0 thuộc nhóm được xác định trước đó.

Thêm mặt nạ

Chữ ký:

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
2:
- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
2

Mặt nạ ra dữ liệu nhạy cảm và thay thế nó bằng

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
3. Giá trị có thể là một chuỗi ("dữ liệu nhạy cảm của tôi") hoặc nó có thể trỏ đến một biến môi trường ("$ db_password").

Dừng lệnh

Chữ ký:

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
4:
- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
4

Tất cả các lệnh sẽ dừng xử lý. Nó cho phép bạn đăng nhập bất cứ thứ gì mà không vô tình kích hoạt các lệnh quy trình công việc.

Tiếp tục lệnh

Chữ ký:

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
5:
- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
5

Tiếp tục xử lý lệnh.

Nhận trạng thái

Chữ ký:

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
6:
- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
6

Chia sẻ các biến môi trường với các hành động

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
7 và
- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
8 của bạn. Xem tài liệu chính thức để biết thêm chi tiết.

Giữ trạng thái

Chữ ký:

- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
9:
- uses: jannekem/run-python-script-action@v1
  with:
    script: |
      add_path("/usr/local/test")
      set_env("HELLO", "WORLD")
      group("Messages")
      print("Sending a message")
      warning("There might be an issue")
      end_group()
9

Lưu giá trị như một biến môi trường với tiền tố script0. Xem tài liệu chính thức để biết thêm chi tiết.

Tôi có thể mã hóa Python trên GitHub không?

GitHub cung cấp một quy trình công việc khởi đầu Python nên hoạt động cho hầu hết các dự án Python..

Tôi có thể chạy tập lệnh trong GitHub không?

Ví dụ, thêm tập lệnh vào quy trình làm việc của bạn để chạy tập lệnh dưới dạng hành động, bạn có thể lưu trữ tập lệnh trong kho lưu trữ của mình và cung cấp đường dẫn và loại shell.Để biết thêm thông tin, hãy xem "Cú pháp quy trình công việc cho các hành động 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."

Làm cách nào để thêm một tập lệnh Python vào GitHub?

Để xuất bản dự án Python của bạn trên GitHub:..
Tạo một tài khoản GitHub nếu bạn chưa có ..
Tạo một repo mới cho dự án của bạn.....
Trên trang repo mới được tạo, nhấp vào Quản lý chủ đề và thêm các thẻ Py Python và và Python3, và/hoặc Hồi Python2, khi thích hợp ..

Làm cách nào để điều hành một dự án Python trong Git?

Làm cách nào để điều hành một dự án Python trong Git ?..
Tải xuống và cài đặt phiên bản bắt buộc của Python trên hệ điều hành của bạn ..
Cài đặt PIP Nếu làm việc trên Python 2, PIP là Trình quản lý gói của Python, nó đi kèm với Python 3 nhưng không phải với Python 2 ..
Đọc về Virtualenv trong Python ..
Kích hoạt môi trường trong CMD ..