ನೀವು ಶುಕ್ರವಾರ ಸಂಜೆ ನಾಲ್ಕು ಗಂಟೆಗೆ ಒಂದು ಫಿಕ್ಸ್ ಅನ್ನು ಪೋಷ್ (push) ಮಾಡಿದ್ದೀರಿ. ಶನಿವಾರ ಬೆಳಿಗ್ಗೆಯ ಹೊತ್ತಿಗೆ, ಅಲರ್ಟ್ಗಳು ಮೊಳಗುತ್ತಿವೆ. ಹದಿನೆಂಟು ಗಂಟೆಗಳ ಹಿಂದೆ ಮರ್ಜ್ ಮಾಡಲಾದ ಒಂದು ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ (pull request) ಮೂಲಕ ಈ ಘಟನೆಯನ್ನು ನೀವು ಪತ್ತೆಹಚ್ಚುತ್ತೀರಿ. ಬ್ರಾಂಚ್ ಕಂ编译 (compile) ಆಯಿತು, ಟೆಸ್ಟ್ಗಳು ಪಾಸಾದವು, ಆದರೆ PR ವಿವರಣೆ (description) ಖಾಲಿ ಇದೆ. ಅದಕ್ಕೆ ಯಾವುದೇ ವರ್ಕ್ ಐಟಂ ಲಿಂಕ್ ಆಗಿಲ್ಲ. ಅಪ್ರೂವಲ್ ಇತಿಹಾಸದಲ್ಲಿ ಏನೂ ಕಾಣಿಸುತ್ತಿಲ್ಲ. ನೀವು ಒಂದು 'ಘೋಸ್ಟ್ ಮರ್ಜ್' (ghost merge) ಅನ್ನು ನೋಡುತ್ತಿದ್ದೀರಿ, ಮತ್ತು ಈಗ ಮೇನ್ (main) ಬ್ರಾಂಚ್ಗೆ ತಲುಪುವ ಮೊದಲೇ ಪತ್ತೆಹಚ್ಚಬೇಕಿದ್ದ ಗೊಂದಲವನ್ನು ಸರಿಪಡಿಸಲು ನಿಮ್ಮ ವೀಕೆಂಡ್ ಅನ್ನು ಕಳೆಯುತ್ತಿದ್ದೀರಿ.
ಸಣ್ಣ ತಂಡಗಳು ಪ್ರತಿದಿನ ಈ ಅಪಾಯದೊಂದಿಗೆ ಬದುಕುತ್ತಿವೆ. ಪ್ರತಿ ಮರ್ಜ್ ಮಾಡುವಾಗಲೂ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ನಿಮ್ಮ ಬಳಿ ರಿಲೀಸ್ ಮ್ಯಾನೇಜರ್ ಇಲ್ಲ. ವಿಶೇಷ ಪಾಲಿಸಿ ಇಂಜಿನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮ್ಮ ಬಳಿ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ತಂಡವಿಲ್ಲ. ನಿಮ್ಮ ಬಳಿ ಇರುವುದು Azure DevOps ಮಾತ್ರ, ಮತ್ತು ಅದರ ಬಿಲ್ಟ್-ಇನ್ ಬ್ರಾಂಚ್ ಪಾಲಿಸಿಗಳು (branch policies) ಅಸಮರ್ಪಕ ಸಾಧನಗಳಂತಿವೆ. ಅವು ಒಂದೋ ಸಂಪೂರ್ಣವಾಗಿ ಬಾಗಿಲನ್ನು ಮುಚ್ಚುತ್ತವೆ ಅಥವಾ ಪೂರ್ತಿಯಾಗಿ ತೆರೆದಿಡುತ್ತವೆ. ಇಬ್ಬರು ರಿವ್ಯೂಯರ್ಗಳನ್ನು (reviewers) ಅಗತ್ಯವನ್ನಾಗಿಸಿದರೆ ನೀವು ತುರ್ತು ಹಾಟ್ಫಿಕ್ಸ್ (hotfixes) ಅನ್ನು ತಡೆಯುತ್ತೀರಿ. ನಿಯಮಗಳನ್ನು ಸಡಿಲಗೊಳಿಸಿದರೆ, ಟಿಕೆಟ್ ಇಲ್ಲದ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ ಖಾಲಿ ವಿವರಣೆಗಳು ಪ್ರೊಡಕ್ಷನ್ಗೆ ಹೋಗುತ್ತವೆ. ಇಲ್ಲಿ ಮಧ್ಯಮ ಮಾರ್ಗವಿರುವುದು ಅಪರೂಪ.
ಆ ಕೊರತೆಯನ್ನೇ ನೀಗಿಸಲು ನಾವು Gatekeeper ಅನ್ನು ನಿರ್ಮಿಸಿದ್ದೇವೆ. ಇದು ವಿಶೇಷವಾಗಿ Azure DevOps ಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ AI-ಚಾಲಿತ PR ರಿವ್ಯೂ ડેಸ್ಕ್ ಆಗಿದೆ, ಆದರೆ ಆಧುನಿಕ ಡೆವಲಪರ್ ಟೂಲ್ಗಳ ಬಗ್ಗೆ ನೀವು ಅಂದುಕೊಂಡಿರುವ ಎಲ್ಲವನ್ನೂ ಮರೆತುಬಿಡಿ. ಇದರಲ್ಲಿ ಯಾವುದೇ Docker ಕಂಟೇನರ್, ಸಬ್ಸ್ಕ್ರಿಪ್ಷನ್ ಪ್ಲಾನ್ ಅಥವಾ ಕ್ಲೌಡ್ ಡಿಪ್ಲಾಯ್ಮೆಂಟ್ ಪೈಪ್ಲೈನ್ ಇಲ್ಲ. Gatekeeper ಎಂಬುದು ಕೇವಲ ಒಂದು HTML ಫೈಲ್. ನೀವು ಅದನ್ನು ನಿಮ್ಮ ಬ್ರೌಸರ್ನಲ್ಲಿ ತೆರೆದು, ನಾಲ್ಕು ಮೌಲ್ಯಗಳನ್ನು ನಮೂದಿಸಿ, ಒಂದು ಬಟನ್ ಒತ್ತಿದರೆ ಸಾಕು. ಆ ನಂತರ ಈ ಟೂಲ್ ಮೂರು ಸರಳ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸುತ್ತದೆ: ಈ PR ಒಂದು ಟಿಕೆಟ್ಗೆ ಲಿಂಕ್ ಆಗಿದೆಯೇ? ಒಬ್ಬ ಮನುಷ್ಯ ನಿಜವಾಗಿಯೂ ಇದನ್ನು ರಿವ್ಯೂ ಮಾಡಿದ್ದಾರೆಯೇ? ಮತ್ತು ಕೋಡ್ ಗುಣಮಟ್ಟ ಚೆನ್ನಾಗಿದೆಯೇ?
ಎಲ್ಲವನ್ನೂ ಒಂದೇ ಸ್ವತಂತ್ರ ಫೈಲ್ನಲ್ಲಿ ಪ್ಯಾಕೇಜ್ ಮಾಡುವ ನಿರ್ಧಾರವು ಕೇವಲ ಪ್ರದರ್ಶನಕ್ಕಾಗಿ ಅಲ್ಲ. ಇದು ನೈಜ ಕಾರ್ಯಾಚರಣೆಯ ತಲೆನೋವುಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ. ಮೊದಲನೆಯದಾಗಿ, ಇದನ್ನು ಹೋಸ್ಟ್ ಮಾಡಲು ಅಥವಾ ಪಾವತಿಸಲು ಯಾವುದೇ ಇನ್ಫ್ರಾಸ್ಟ್ರಕ್ಚರ್ ಅಗತ್ಯವಿಲ್ಲ. ನೀವು App Service ಅನ್ನು ಪ್ರೊವಿಷನ್ ಮಾಡುವ ಅಥವಾ ಎಗ್ರೆಸ್ (egress) ವೆಚ್ಚಗಳ ಬಗ್ಗೆ ಚಿಂತಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ಎರಡನೆಯದಾಗಿ, ನಿಮ್ಮ ಕ್ರೆಡೆನ್ಶಿಯಲ್ಗಳು (credentials) ನಿಮ್ಮ ಮೆಷೀನಿನಿಂದ ಹೊರಗೆ ಹೋಗುವುದಿಲ್ಲ. ನಿಮ್ಮ Azure DevOps ಪರ್ಸನಲ್ ಆಕ್ಸೆಸ್ ಟೋಕನ್ (personal access token) ಕೇವಲ ಬ್ರೌಸರ್ ಮೆಮೊರಿಯಲ್ಲಿ ಇರುತ್ತದೆ ಮತ್ತು ನೀವು ಪೇಜ್ ಅನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿದ ತಕ್ಷಣ ಮಾಯವಾಗುತ್ತದೆ. ಸೋರಿಕೆಯಾಗಲು ಯಾವುದೇ ಸೀಕ್ರೆಟ್ ಡೇಟಾಬೇಸ್ ಇಲ್ಲ ಮತ್ತು ನಂಬಲು ಯಾವುದೇ OAuth ಸರ್ವರ್ ಇಲ್ಲ. ಮೂರನೆಯದಾಗಿ, ಇದನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವುದು ಅತ್ಯಂತ ಸುಲಭ. ನೀವು ಯಾರನ್ನೂ ವಿಕಿ (wiki) ಮೂಲಕ ಆನ್ಬೋರ್ಡ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ. ನೀವು ಈ ಫೈಲ್ ಅನ್ನು ಇಮೇಲ್ಗೆ ಅಟ್ಯಾಚ್ ಮಾಡಬಹುದು ಅಥವಾ Slack ಥ್ರೆಡ್ನಲ್ಲಿ ಹಾಕಬಹುದು. ಸ್ವೀಕರಿಸುವವರು ಅದನ್ನು ತಕ್ಷಣವೇ ತೆರೆದು ರಿವ್ಯೂ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಬಹುದು.
ಫ್ಯಾಕ್ಟ್ ಲೇಯರ್ (The Fact Layer): ಮೊದಲು ನಿರ್ಣಾಯಕತೆ (Determinism First)
Gatekeeper ತನ್ನ ರಿವ್ಯೂ ಅನ್ನು ಎರಡು ವಿಭಿನ್ನ ಲೇಯರ್ಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ, ಮತ್ತು ಆ ವಿಭಜನೆಯೇ ಅದರ ವಿಶ್ವಾಸಾರ್ಹತೆಯ ಬೆನ್ನೆಲುಬು.
ಮೊದಲ ಲೇಯರ್ ಎಂದರೆ ನೇರವಾಗಿ Azure DevOps REST API ಜೊತೆಗೆ ಸಂವಹನ ನಡೆಸುವ ಶುದ್ಧ JavaScript ಆಗಿದೆ. ಇದು ಬದಲಾಗದ ಸತ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಒಂದು ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ ವರ್ಕ್ ಐಟಂಗೆ ಲಿಂಕ್ ಆಗಿರಬಹುದು ಅಥವಾ ಇಲ್ಲದಿರಬಹುದು. ಒಬ್ಬ ರಿವ್ಯೂಯರ್ ಅಪ್ರೂವಲ್ ವೋಟ್ ಹಾಕಿರಬಹುದು ಅಥವಾ ಇಲ್ಲದಿರಬಹುದು. ವಿವರಣೆಯು ಖಾಲಿ ಇರಬಹುದು ಅಥವಾ ವಾಕ್ಯಗಳನ್ನು ಹೊಂದಿರಬಹುದು. ಚರ್ಚೆಗಳು (discussions) ಇತ್ಯರ್ಥಗೊಂಡಿರಬಹುದು ಅಥವಾ ಇನ್ನೂ ಬಾಕಿ ಇರಬಹುದು.
ನಿರ್ದಿಷ್ಟವಾಗಿ, ಫ್ಯಾಕ್ಟ್ ಲೇಯರ್ ಈ ನಾಲ್ಕು ವಿಷಯಗಳನ್ನು ಗಮನಿಸುತ್ತದೆ:
- ಟಿಕೆಟ್ ಮ್ಯಾಪಿಂಗ್ (Ticket mapping): PR ಕನಿಷ್ಠ ಒಂದು ವರ್ಕ್ ಐಟಂಗೆ ಲಿಂಕ್ ಆಗಿದೆಯೇ?
- ರಿವ್ಯೂಯರ್ ಸೈನ್-ಆಫ್ (Reviewer sign-off): ಯಾರಾದರೂ ಅಪ್ರೂವ್ ಮಾಡಲು ವೋಟ್ ಹಾಕಿದ್ದಾರೆಯೇ ಅಥವಾ ಸಂಖ್ಯೆ ಇನ್ನೂ ಶೂನ್ಯವಾಗಿದೆಯೇ?
- ವಿವರಣೆಯ ಗುಣಮಟ್ಟ (Description quality): ವಿವರಣೆಯು ಖಾಲಿ ಇದೆಯೇ ಅಥವಾ ಕೇವಲ ಒಂದು ಸಣ್ಣ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ (placeholder) ಆಗಿದೆಯೇ?
- ಬಾಕಿ ಇರುವ ಚರ್ಚೆಗಳು (Open discussions): ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಕಾಯುತ್ತಿರುವ ಇತ್ಯರ್ಥವಾಗದ ಕಾಮೆಂಟ್ ಥ್ರೆಡ್ಗಳಿವೆಯೇ?
ಈ ಪರಿಶೀಲನೆಗಳು ಪುಟದಾದ್ಯಂತ ದೃಶ್ಯ ಮುದ್ರೆಗಳನ್ನು (visual stamps) ನೀಡುತ್ತವೆ. ದೊಡ್ಡ ಕೆಂಪು ಬಣ್ಣದ NOT MAPPED ಮುದ್ರೆಯನ್ನು ನಿರ್ಲಕ್ಷಿಸುವುದು ಕಷ್ಟ. ಟೇಬಲ್ ಸೆಲ್ನಲ್ಲಿರುವ ಸಣ್ಣ ಹಸಿರು ಚೆಕ್ಮಾರ್ಕ್ ಅನ್ನು ಗಮನಿಸುವುದು ಸುಲಭವಾಗಿ ತಪ್ಪಬಹುದು. ಪ್ರಕ್ರಿಯೆಯ ವೈಫಲ್ಯಗಳು ಸ್ಪಷ್ಟವಾಗಿ ಕಾಣಿಸಬೇಕು ಎಂಬುದು ನಮಗೆ ಮೊದಲೇ ತಿಳಿದಿತ್ತು. ಒಬ್ಬ ಡೆವಲಪರ್ ಮರ್ಜ್ ಮಾಡಲು ಅವಸರ ಮಾಡುತ್ತಿರುವಾಗ, ಮೃದುವಾದ ಸೂಚನೆಗಳು ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ. ಅಸ್ಪಷ್ಟತೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಹೋಗಲಾಡಿಸಲು ಫ್ಯಾಕ್ಟ್ ಲೇಯರ್ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.
ಈ ಲೇಯರ್ ನಿರ್ಣಾಯಕ API ಪ್ರತಿಕ್ರಿಯೆಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುವುದರಿಂದ, ಇದರ ನಿಖರತೆ ಸಂಪೂರ್ಣವಾಗಿದೆ. ಮುದ್ರೆಯು NO APPROVAL ಎಂದು ತೋರಿಸುತ್ತಿದ್ದರೆ, ಯಾರೂ ಅಪ್ರೂವ್ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿಲ್ಲ ಎಂದು ನೀವು ಖಚಿತವಾಗಿ ಹೇಳಬಹುದು. ಅದು UNRESOLVED THREADS ಎಂದು ತೋರಿಸುತ್ತಿದ್ದರೆ, ಚರ್ಚೆಯು ಇನ್ನೂ ನಡೆಯುತ್ತಿದೆ ಎಂದರ್ಥ. ಈ ಲೇಯರ್...
