Kích hoạt hành động GitHub khi kho lưu trữ khác tạo bản phát hành mới


9

Tôi đang cố gắng xây dựng một quy trình công việc GitHub sẽ được kích hoạt khi một kho lưu trữ khác tạo ra một bản phát hành mới.

Trong tài liệu, có đoạn: on.event_name.typesnơi event_namesẽ được release.

Câu hỏi là: Có cách nào để tham khảo releasesự kiện của một kho lưu trữ khác không?


1
Tôi không tin như vậy. Bạn sẽ cần truy cập vào repo tạo ra bản phát hành.
osowskit

Câu trả lời:


7

Có cách nào để tham khảo sự kiện phát hành của một kho lưu trữ khác không?

Khá chắc chắn tính năng này không tồn tại.

Nếu bạn có quyền truy cập vào kho lưu trữ tạo bản phát hành thì bạn có thể gọi một sự kiện webhook để kích hoạt một on: repository_dispatchluồng công việc để chạy trong kho lưu trữ khác. hành động kho lưu trữ có thể giúp đỡ trong trường hợp này.

Nếu bạn không có quyền truy cập vào kho lưu trữ tạo ra bản phát hành (mà tôi giả sử là trường hợp ở đây) thì đây sẽ là đề xuất của tôi. Đầu tiên, tạo quy trình làm việc sau đây kiểm tra định kỳ thẻ phiên bản phát hành của kho lưu trữ bạn muốn theo dõi. Nếu nó khác với phiên bản phát hành mà bạn hiện đã lưu trong kho lưu trữ thì phiên bản mới sẽ được cam kết.

Lưu ý rằng trước tiên bạn phải chuẩn bị tệp đích (ví dụ: phiên bản phát hành / swagger-ui-mới.txt) để kiểm tra các tệp đã sửa đổi để hoạt động. Hơn nữa, bạn phải sử dụng repomã thông báo có phạm vi thay vì mặc định GITHUB_TOKEN. Để biết thêm chi tiết về điều đó, hãy xem Push to origin từ hành động GitHub

name: Get latest release version
on:
  schedule:
    - cron:  '0 10 * * *'
jobs:
  get-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          token: ${{ secrets.REPO_SCOPED_TOKEN }}
      - name: Fetch release version
        run: |
          curl -sL https://api.github.com/repos/swagger-api/swagger-ui/releases/latest | \
          jq -r ".tag_name" > release-versions/swagger-ui-latest.txt
      - name: Check for modified files
        id: git-check
        run: echo ::set-output name=modified::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)
      - name: Commit latest release version
        if: steps.git-check.outputs.modified == 'true'
        run: |
          git config --global user.name 'Your Name'
          git config --global user.email 'your-email@users.noreply.github.com'
          git commit -am "New release version"
          git push

Sau đó, bạn có thể tạo một luồng công việc thứ hai chỉ chạy khi thấy bất kỳ thay đổi nào đối với thư mục release-versions.

on:
  push:
    paths:
      - 'release-versions/*'

Trong quy trình làm việc này, bạn có thể sử dụng phiên bản đã lưu để tìm nạp các tài sản bạn cần và thực hiện bất kỳ xử lý nào bạn cần.


1
Đáng buồn là bạn đã xác nhận linh cảm của tôi. Bên cạnh đó, cảm ơn bạn đã chia sẻ cách tiếp cận của bạn.
Cầu tàu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.