git đẩy đến github qua cron trên mac


6

Tôi đang cố gắng sử dụng git push trong một tập lệnh bash đang được điều hành bởi crontab để đẩy một cam kết đến github. Ở phần cuối của kịch bản tôi đang làm điều này:

# script processes some files, then:
git add -A
git commit -a -m "Updated $(date)"
git push origin master

Thêm và cam kết hoạt động tốt (và đẩy hoạt động tốt khi chạy tập lệnh từ CL, không sử dụng cron), nhưng tôi gặp lỗi khi đẩy sang github bằng cron:

git: 'credential-osxkeychain' is not a git command. See 'git --help'.
fatal: could not read Username for 'https://github.com': Device not configured

Tôi đã tìm kiếm thông qua các chủ đề khác (như điều này điều này ), nhưng dường như không có vấn đề gì với SSH (ít nhất tôi đã thử chuyển biến môi trường SSH_AUTH_SOCK trong dòng crontab và điều đó không hoạt động). Chạy OSX 10.8.

Có ý kiến ​​gì không?

Câu trả lời:


5

TL; DR: Đã giải quyết các vấn đề với git đẩy qua cron bằng cách sử dụng SSH thay vì HTTPS.

Nhờ nhóm hỗ trợ tại GitHub tôi đã có thể giải quyết điều này.

Vấn đề đầu tiên là git-credential-osxkeychain đã không ở trong con đường của tôi khi công việc định kỳ chạy. Cho tôi, gitgit-credential-osxkeychain cả hai đều được chạy ra khỏi thư mục công cụ dòng lệnh Xcode:

$ which git
/Applications/Xcode.app/Contents/Developer/usr/bin/git
$ which git-credential-osxkeychain
/Applications/Xcode.app/Contents/Developer/usr/bin/git-credential-osxkeychain

Khi chạy which git từ cron, hóa ra cron đang chạy git từ /usr/bin.

Tôi đã thêm thư mục thích hợp vào PATH ở đầu công việc định kỳ với:

export PATH=$PATH:/Applications/Xcode.app/Contents/Developer/usr/bin

Điều đó đã giải quyết git: 'credential-osxkeychain' is not a git command lỗi, nhưng tôi đã nhận được một lỗi khác:

fatal: could not read Username for 'https://github.com': Device not configured

Theo đề nghị của nhóm hỗ trợ GitHub, tôi đã giải quyết vấn đề (không cần git-credential-osxkeychain hoàn toàn) bằng cách xác thực qua SSH thay vì https:

git remote set-url origin git@github.com:username/repo.git
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.