-
GitHub Actions की समस्याएँ
- हाल ही में GitHub Actions में CI स्क्रिप्ट्स को दोबारा लिखने में बहुत समय लगा। पहले Earthly का उपयोग किया जाता था, लेकिन उसके बंद हो जाने के बाद फिर से GitHub Actions पर लौटना पड़ा।
- CI जटिल है और इसमें merge queue, कई runners, Rust builds, Docker images, integration tests आदि शामिल हैं। हर PR merge पर काफी CI समय खर्च होता है।
- अच्छे software practice के लिए ज़रूरी है कि सभी tests पास हों, मामूली गलतियाँ अपने-आप ठीक हो जाएँ, और जिन artifacts का test किया गया है वही release में भी हों। GitHub Actions यह संभव बनाता है, लेकिन इसकी configuration जटिल और असंगत है।
-
Status checks और merge queue
- GitHub की merge queue, PR को main branch पर rebase करने के बाद CI चलाती है। लेकिन CI को queue में डालने से पहले और बाद में दोनों बार चलाना पड़ता है, और इसे configure करना कठिन है।
- समाधान यह है कि दोनों चरणों में job name एक जैसा रखा जाए। इससे दोनों चरणों का पास होना आवश्यक हो जाता है।
-
सुरक्षा समस्याएँ
- हाल ही में एक लोकप्रिय GitHub Action से छेड़छाड़ की गई। जवाबी उपाय के तौर पर dependencies को hash से pin करने की सलाह दी गई, लेकिन अधिकांश उपयोगकर्ता ऐसा नहीं करते।
- GitHub का security model जटिल है और समझना कठिन है। आप
GITHUB_TOKEN की default permissions सेट कर सकते हैं, लेकिन permissions हटाना स्पष्ट नहीं है।
- Workflow permissions, action खुद पर निर्भर नहीं करतीं, और code के अंदर permissions बढ़ाना अजीब लगता है।
-
Docker और GitHub Actions का संयोजन
- GitHub Actions में container के भीतर jobs चलाई जा सकती हैं, लेकिन file permissions की समस्या और
$HOME directory की location बदल जाने जैसी दिक्कतें आती हैं।
container field में कई सीमाएँ हैं, इसलिए entrypoint override करना या सिर्फ कुछ steps को container के अंदर चलाना संभव नहीं है।
-
YAML में workflow development
- YAML में logic लिखना जटिल हो सकता है और गलती करना आसान है। कुछ checks के लिए RustRover IDE का उपयोग किया गया, लेकिन बेहतर static checking की ज़रूरत है।
- इसे local में test करना कठिन है, इसलिए एक जैसी repository बनाकर बार-बार commit और push करना पड़ता है, जब तक CI काम न करने लगे।
- Workflows को छोटा रखा जाता है और artifacts push किए जाते हैं ताकि उन्हें दूसरे workflows में दोबारा इस्तेमाल किया जा सके। लेकिन artifacts download करते समय token की आवश्यकता होती है।
-
निष्कर्ष
- नए CI scripts से merge समय काफ़ी कम हुआ है, लेकिन configuration प्रक्रिया जटिल है और debugging कठिन है। नवाचार की ज़रूरत है।
1 टिप्पणियां
Hacker News राय
कुछ लोगों का मानना है कि GitLab बेहतर है, लेकिन GitLab में भी अलग तरह की समस्याएँ हैं
यह दिलचस्प है कि GitHub Actions और DevOps की इतनी व्यापक आलोचना होती है
GitLab इस्तेमाल करने के बाद GitHub पर स्विच किया, लेकिन निराशा हुई
30-60 सेकंड का feedback loop सबसे खराब है
यह नहीं चाहता कि CI अपने-आप code को modify करे
यह देखकर निराशा होती है कि GitHub Actions का विकास जैसे रुक गया है
GitHub Actions की वजह से container को install script की तरह गलत तरीके से इस्तेमाल किया जाता है
सही tool चुनना महत्वपूर्ण है
GitHub Action की security समस्याओं के कारण hash का इस्तेमाल करके dependencies को pin करना चाहिए
GitHub Actions में कई समस्याएँ हैं