CI ರನ್ನರ್ VPN: ಟನಲ್ ಬಿಲ್ಡ್ಗಿಂತ ಹೆಚ್ಚು ಬದುಕುತ್ತದೆಯೇ?
ಹಂಚಿಕೆಯ CI ರನ್ನರ್ ಕೆಲಸಗಳ ನಡುವೆ ರೂಟ್ಗಳು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಇಟ್ಟುಕೊಳ್ಳುತ್ತದೆ. ಕೆಲಸಕ್ಕೆ ಮೊದಲು, ನಡುವೆ ಮತ್ತು ನಂತರ VPN ನ ಸ್ಥಿತಿಗಳನ್ನು ಯೋಜಿಸಿ, ಮತ್ತು ಕೆಲಸದ ಒಡೆತನದ ಸಂಪರ್ಕವನ್ನು ಮಾತ್ರ ಸ್ವಚ್ಛಗೊಳಿಸಿ.
ಡಿಪ್ಲಾಯ್ ಕೆಲಸವು ಸಂಪರ್ಕಿಸಿ, ತನ್ನ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ನಕಲಿಸಿ, ಯಶಸ್ಸನ್ನು ವರದಿ ಮಾಡುತ್ತದೆ. ಅದು ತೆರೆದ ಟನಲ್ ಮುಂದಿನ ಕೆಲಸ ಪ್ರಾರಂಭವಾಗುವಾಗಲೂ ಚಾಲನೆಯಲ್ಲಿರಬಹುದು, ಮತ್ತು ಅದು ಬದಲಿಸಿದ ರೂಟ್ ಇಡೀ ಹೋಸ್ಟ್ಗೆ ಸೇರಿದ್ದು. ಬಿಲ್ಡ್ ಫಲಿತಾಂಶವು ಆಜ್ಞೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ, ಅದು ಬಿಟ್ಟುಹೋದ ಸ್ಥಿತಿಯನ್ನಲ್ಲ. VPN ಅನ್ನು ಆಯುಷ್ಯವಿರುವ ಸಂಪನ್ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಿ, ಹಂತದ ಆರಂಭದಲ್ಲಿ ಒಂದು ಸಾಲಿನಂತೆ ಅಲ್ಲ.
ಈ ಹೋಸ್ಟ್ನಲ್ಲಿ ಇನ್ನೇನು ಚಲಿಸುತ್ತದೆ
ಒಂದು Jenkins ನೋಡ್ ಒಟ್ಟಿಗೆ ಹಲವು ಎಕ್ಸಿಕ್ಯೂಟರ್ಗಳನ್ನು ಚಲಾಯಿಸಬಲ್ಲದು, ಮತ್ತು ಹೋಸ್ಟ್ನ ರೂಟ್ಗಳು, ರಿಜಾಲ್ವರ್ ಸೆಟ್ಟಿಂಗ್ಗಳು ಅಥವಾ ಸಿಸ್ಟಂ-ವ್ಯಾಪಿ ಸಂಪರ್ಕವನ್ನು ಬದಲಿಸುವ ಕೆಲಸ ಅವನ್ನು ಎಲ್ಲರಿಗೂ ಬದಲಿಸುತ್ತದೆ. ಇನ್ನೊಂದು ಕೆಲಸ ಅದನ್ನು ಗಮನಿಸುತ್ತದೆಯೇ ಎಂಬುದು ರೂಟ್ ಮತ್ತು ಫಿಲ್ಟರಿಂಗ್ ನೀತಿಯನ್ನು ಅವಲಂಬಿಸಿದೆ, VPN ಬಗ್ಗೆ ಸಾಮಾನ್ಯ ನಿಯಮವನ್ನಲ್ಲ. ರಿಪೊಸಿಟರಿ ಪ್ರವೇಶ, ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಪ್ರವೇಶ ಮತ್ತು ನಿಯಂತ್ರಣ ಚಾನಲ್ ರನ್ನರ್ಗೆ ಇನ್ನೂ ಬೇಕಾದ ಪ್ರತ್ಯೇಕ ಅಗತ್ಯಗಳು. ಪೂರ್ಣ ಟನಲ್ ಆಯ್ಕೆ ಮಾಡುವ ಮೊದಲು ಅವನ್ನು ಡಿಪ್ಲಾಯ್ ಗಮ್ಯಸ್ಥಾನಗಳ ಪಟ್ಟಿಗೆ ಸೇರಿಸಿ.
ನಿಯಂತ್ರಣ ಚಾನಲ್ ಟನಲ್ ದಾಟಬೇಕಿದ್ದರೆ, ವಿನ್ಯಾಸವು ಅದನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಹೇಳಬೇಕು. ರೋಲ್ಬ್ಯಾಕ್ ಸಮಯದಲ್ಲಿ ಅದನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಯೋಜನೆಯಲ್ಲ. ಎರಡು ಪಟ್ಟಿಗಳನ್ನು ಬರೆಯಿರಿ: ಕೆಲಸವು ಖಾಸಗಿಯಾಗಿ ಏನನ್ನು ತಲುಪಬೇಕು, ಮತ್ತು ರನ್ನರ್ ಯಾವುದೇ ಸ್ಥಿತಿಯಲ್ಲಿ ಏನನ್ನು ತಲುಪಬೇಕು.
ಈ ಕೆಲಸಕ್ಕೆ ಖಾಸಗಿ ಪ್ರವೇಶ ಅಗತ್ಯವಿದೆಯೇ?
ಟನಲ್ ಸೇರಿಸುವ ಮೊದಲು ಬಿಲ್ಡ್ ಹಂತಕ್ಕೆ ಅದು ಬೇಕೇ ಎಂದು ಕೇಳಿ. ಖಾಸಗಿ ಡಿಪ್ಲಾಯ್ ಏಜೆಂಟ್ ಅನುಮೋದಿತ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ತಂದು ಡಿಪ್ಲಾಯ್ ಮಾಡಬಹುದು, ಇದು ಸಾಮಾನ್ಯ ಬಿಲ್ಡ್ ಹಂತವನ್ನು ಖಾಸಗಿ ನೆಟ್ವರ್ಕ್ನ ಹೊರಗೆ ಇಡುತ್ತದೆ. ಆ ವಿಭಜನೆ ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರತಿ ಬಿಲ್ಡ್ ಹೆಜ್ಜೆಗೆ ಟನಲ್ ಮೂಲಕ ರೂಟ್ ಮಾಡುವುದನ್ನು ಕಲಿಸುವುದಕ್ಕಿಂತ ಅಗ್ಗ.
ಗಡಿಯನ್ನು ಅಭ್ಯಾಸದಿಂದಲ್ಲ, ಕಾರ್ಯಪ್ರವಾಹದಿಂದ ಆರಿಸಿ. ಉತ್ತರ ಇಲ್ಲ ಎಂದರೆ, ಈ ಪುಟದ ಉಳಿದ ಭಾಗ ಅನಗತ್ಯ, ಮತ್ತು ಅದೇ ಲಭ್ಯವಿರುವ ಉತ್ತಮ ಫಲಿತಾಂಶ.
ಮುಂದಿನ ಕೆಲಸ ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುವ ಸ್ಥಿತಿ
ಕೆಲಸಕ್ಕೆ ಮೊದಲು, ಖಾಸಗಿ ಪ್ರವೇಶ ಇರುವಾಗ ಮತ್ತು ಅದು ಮುಗಿದ ನಂತರ—ರದ್ದತಿ ಸೇರಿದಂತೆ—ಏನು ನಿಜವಾಗಿರಬೇಕು ಎಂದು ವಿವರಿಸಿ. ಅಂತಿಮ ಸ್ಥಿತಿಯೇ ಹೆಚ್ಚಾಗಿ ಹೇಳದೆ ಉಳಿಯುತ್ತದೆ, ಮತ್ತು ಅದನ್ನೇ ಮುಂದಿನ ಕೆಲಸ ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುತ್ತದೆ. ಅದನ್ನು ಯಾರೋ ನೆನಪಿನಲ್ಲಿ ಬಿಡುವ ಬದಲು ಪೈಪ್ಲೈನ್ ಪಕ್ಕದಲ್ಲಿ ಬರೆಯಿರಿ.
| Moment | What proves it | What leaks if it is skipped |
|---|---|---|
| Job start: pre-flight route check | The route table shows no tunnel from an earlier job, and the profile list is empty | A stale route sends deployment traffic into a dead tunnel |
| Job end: disconnect and shred | The profile is down and the temporary key file is gone | The next job inherits an open tunnel and a usable credential |
| Cancelled job: reboot or disposal | The host is replaced or rebooted before the next job starts | A killed process leaves the tunnel up with no owner |
ಮೀಸಲಾದ ಅಥವಾ ಒಂದು ಬಾರಿ ಬಳಸುವ ಏಜೆಂಟ್ ಆ ಗಡಿಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲು ಸುಲಭ ಮಾಡುತ್ತದೆ. ಕಂಟೇನರ್ ಅಥವಾ ನೇಮ್ಸ್ಪೇಸ್ ಅದರ ನೆಟ್ವರ್ಕ್ ಮತ್ತು ವಿಶೇಷಾಧಿಕಾರ ವ್ಯವಸ್ಥೆ ಬದಲಾವಣೆಯನ್ನು ನಿಜವಾಗಿ ಪ್ರತ್ಯೇಕಿಸಿದರೆ ಮಾತ್ರ ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಪ್ರೋಗ್ರಾಂ ಅನ್ನಲ್ಲ, ಸಂಪರ್ಕವನ್ನು ನಿಲ್ಲಿಸಿ
ಈ ಕೆಲಸ ಪ್ರಾರಂಭಿಸಿದ ಸಂಪರ್ಕವನ್ನು ಮುಚ್ಚಲು ಮತ್ತು ಅದರ ತಾತ್ಕಾಲಿಕ ರುಜುವಾತುಗಳನ್ನು ತೆಗೆಯಲು ಪೈಪ್ಲೈನ್ನ ಅಂತಿಮಗೊಳಿಸುವ ಮಾರ್ಗ ಬಳಸಿ. ಇತರ ಕೆಲಸಗಳು ಬಳಸುವ ಹೋಸ್ಟ್ನಲ್ಲಿ ಪ್ರೋಗ್ರಾಂ ಹೆಸರಿನಿಂದ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಹೊಂದಿಸಬೇಡಿ; ಬದಲಾಗಿ ನಿರ್ದಿಷ್ಟ ಸಂಪರ್ಕವನ್ನು ನಿಲ್ಲಿಸಿ. ಕೆಳಗಿನ ಎರಡು ಆಜ್ಞೆಗಳೇ ಇಡೀ ಸ್ವಚ್ಛತೆ, ಮತ್ತು ಯಾವುದೂ ಪ್ರಕ್ರಿಯೆ ಹುಡುಕುವುದನ್ನು ಅವಲಂಬಿಸಿಲ್ಲ.
vpn-cli disconnect --profile "$PROFILE"
rm -f "$RUNNER_TEMP/client.key"
ಅಂತಿಮಗೊಳಿಸುವಿಕೆ ಪ್ರತ್ಯೇಕತೆಯಲ್ಲ: ಸಾಯುವ ರನ್ನರ್ ತೆರೆದ ಟನಲ್ ಇಟ್ಟುಕೊಳ್ಳುತ್ತದೆ, ಮತ್ತು ಬಲವಂತವಾಗಿ ನಿಲ್ಲಿಸಿದ ಪ್ರಕ್ರಿಯೆ ಬ್ಲಾಕ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬಿಟ್ಟುಬಿಡುತ್ತದೆ. ಆದ್ದರಿಂದ ಸ್ವಚ್ಛತೆಯ ಆಜ್ಞೆ ಒಂದೇ ಇಡೀ ವಿನ್ಯಾಸವಾಗಲಾರದು. ಪ್ರಾಯೋಗಿಕವಾಗಿ ಇದು ಹೀಗೆ ವಿಫಲವಾಗುತ್ತದೆ: ಡಿಪ್ಲಾಯ್ ಕೆಲಸ ನಕಲಿಸುವ ಹಂತದಲ್ಲಿ ರದ್ದಾಗುತ್ತದೆ, ಅಂತಿಮಗೊಳಿಸುವ ಬ್ಲಾಕ್ ಎಂದೂ ಚಲಿಸುವುದಿಲ್ಲ, ಮತ್ತು ಅದೇ ಹೋಸ್ಟ್ನ ಮುಂದಿನ ಕೆಲಸ ಜೀವಂತ ಟನಲ್ ಮತ್ತು ತಲುಪಲಾಗದ ನೆಟ್ವರ್ಕ್ಗೆ ತೋರಿಸುವ ರೂಟ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ವೈಫಲ್ಯವು ಮುಂದಿನ ಬಿಲ್ಡ್ನಲ್ಲಿ 'DNS' ಸಮಸ್ಯೆಯಂತೆ ಕಾಣುತ್ತದೆ, ಅದನ್ನು ಉಂಟುಮಾಡಿದ ಕೆಲಸ ಮುಗಿದ ಗಂಟೆಗಳ ನಂತರ.
ಪ್ರೊಫೈಲ್ ಹೆಸರು ಮತ್ತು ರುಜುವಾತಿನ ಮಾರ್ಗವನ್ನು ಕೆಲಸದ ಔಟ್ಪುಟ್ನಲ್ಲಿ ದಾಖಲಿಸಿ. ಗುರುತಿಸುವಿಕೆ ಇಲ್ಲದ ಬರೀ ಡಿಸ್ಕನೆಕ್ಟ್ ಆಜ್ಞೆಯನ್ನು ನಂತರ ಆಡಿಟ್ ಮಾಡುವುದು ಕಷ್ಟ. ಲಾಗ್ ಸಾಲೇ ಬ್ಲಾಕ್ ಚಲಿಸಿತು ಎಂದು ಸಾಬೀತು ಮಾಡುವುದು, ನಂತರದ ತನಿಖೆ ಕೇಳಿದಾಗ.
ಬೇರೆ ಯಾರೂ ಬಳಸದ ಹೋಸ್ಟ್ ಅನ್ನು ಕೆಲಸಕ್ಕೆ ಕೊಡಿ
ಒಂದು ಬಾರಿ ಬಳಸಿ ಬಿಸಾಡುವ ಮೂಲಸೌಕರ್ಯ ಆನುವಂಶಿಕ ಸಮಸ್ಯೆಯನ್ನು ನಿರ್ವಹಿಸುವ ಬದಲು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಪ್ರತಿ ಕೆಲಸಕ್ಕೆ ಹೊಸ ಏಜೆಂಟ್ ರೂಟ್, ಪ್ರೊಫೈಲ್ ಮತ್ತು ಬೇರೆಯವರ ರುಜುವಾತುಗಳಿಲ್ಲದೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಮತ್ತು ಅದರ ನಾಶ ಕೆಲಸ ಬಿಟ್ಟಿದ್ದನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುತ್ತದೆ. ಇದು ಪ್ರತಿ ಬಿಲ್ಡ್ಗೆ ಹೆಚ್ಚು ವೆಚ್ಚವಾಗುತ್ತದೆ, ಮತ್ತು ಸ್ವಚ್ಛತೆ ಕೋಡ್ ಅನ್ನು ಅವಲಂಬಿಸದ ಗಡಿಯ ಪ್ರಾಮಾಣಿಕ ಬೆಲೆ ಅದೇ. ಉತ್ಪಾದನಾ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ಮುಟ್ಟುವ ಕೆಲಸಗಳಿಗೆ, ಘಟನೆಗಳನ್ನು ಎಣಿಸಿದ ನಂತರ ಸಾಮಾನ್ಯವಾಗಿ ಇದೇ ಅಗ್ಗದ ಆಯ್ಕೆ.
ಹಂಚಿಕೆಯ ರನ್ನರ್ ಇರಬೇಕಾದ ಕಡೆ, ವೈಫಲ್ಯ ಮತ್ತು ರದ್ದತಿಯನ್ನು ಯಶಸ್ವಿ ನಕಲಿಸುವಷ್ಟೇ ಎಚ್ಚರದಿಂದ ಪರೀಕ್ಷಿಸಿ. ಈ ಕೆಲಸ ಅರ್ಧದಾರಿಯಲ್ಲಿ ರದ್ದಾದರೆ ಮುಂದಿನ ಕೆಲಸ ಏನನ್ನು ನೋಡುತ್ತದೆ ಎಂದು ಪರೀಕ್ಷೆ ತೋರಿಸಬೇಕು. ಕೆಲಸದ ಪ್ರವೇಶ ಮತ್ತು ತಾತ್ಕಾಲಿಕ ಸ್ಥಿತಿ ಮುಗಿದಾಗ ಕೆಲಸ ಮುಗಿಯುತ್ತದೆ, ನಕಲಿಸುವ ಆಜ್ಞೆ ಶೂನ್ಯ ಹಿಂತಿರುಗಿಸಿದಾಗ ಅಲ್ಲ.