ಸ್ಟ್ಯಾಟಿಕ್ ಜನರೇಟರ್ ಮತ್ತು GitHub ಪುಟಗಳಲ್ಲಿನ ಸೈಟ್‌ಗಾಗಿ CI/CD ಆಗಿ GitHub ಕ್ರಿಯೆಗಳು

ಸ್ಟ್ಯಾಟಿಕ್ ಜನರೇಟರ್ ಮತ್ತು GitHub ಪುಟಗಳಲ್ಲಿನ ಸೈಟ್‌ಗಾಗಿ CI/CD ಆಗಿ GitHub ಕ್ರಿಯೆಗಳು

Habr ಅನ್ನು ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಶೋಧಿಸಿದ ನಂತರ, GitHub ನ (ಬೀಟಾ) ವೈಶಿಷ್ಟ್ಯ - ಕ್ರಿಯೆಗಳ ವಿಷಯದ ಕುರಿತು ಕೆಲವೇ ಲೇಖನಗಳನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ ಎಂದು ನನಗೆ ಆಶ್ಚರ್ಯವಾಯಿತು.

"ಬೀಟಾ" ಆದರೂ ಕಾರ್ಯವು ಇನ್ನೂ ಪರೀಕ್ಷೆಯಲ್ಲಿದೆ ಎಂಬ ಅಂಶದಿಂದ ಅಂತಹ ತಗ್ಗನ್ನು ವಿವರಿಸಬಹುದು ಎಂದು ತೋರುತ್ತದೆ. ಆದರೆ ಇದು ಬೀಟಾದ ಉಪಯುಕ್ತ ವೈಶಿಷ್ಟ್ಯವಾಗಿದ್ದು, ಈ ಉಪಕರಣವನ್ನು ಖಾಸಗಿ ರೆಪೊಸಿಟರಿಗಳಲ್ಲಿ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಈ ತಂತ್ರಜ್ಞಾನದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಬಗ್ಗೆ ನಾನು ಈ ಲೇಖನದಲ್ಲಿ ಮಾತನಾಡುತ್ತೇನೆ.

ಪೂರ್ವ ಇತಿಹಾಸ

ನಾವು ಕ್ರಮವಾಗಿ ಪ್ರಾರಂಭಿಸಿದರೆ, ವೈಯಕ್ತಿಕ “ನನ್ನ ಬಗ್ಗೆ” ವೆಬ್‌ಸೈಟ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲು ವೇಗವಾದ, ಅನುಕೂಲಕರ, ಸುಲಭ ಮತ್ತು ಉಚಿತ ಆಯ್ಕೆಯನ್ನು ಹುಡುಕುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ, ನಾನು ಹಲವಾರು ರಾತ್ರಿಗಳನ್ನು ಕಳೆಯಬೇಕಾಗಿತ್ತು ಮತ್ತು ಅನೇಕ ಲೇಖನಗಳ ಮೂಲಕ ಬಾಚಣಿಗೆ ಮಾಡಬೇಕಾಗಿತ್ತು.

ಕೆಲವು ಜನರು ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತಾರೆ, ಇತರರು ಕ್ಲೌಡ್ ಸರ್ವರ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತಾರೆ ಮತ್ತು ಕೆಲಸ, ಸಂವಹನ ಮತ್ತು ಪಾವತಿಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಬಯಸದವರು ರೆಪೊಸಿಟರಿಗೆ ಸ್ಥಿರ ಸೈಟ್‌ಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡುವಂತೆ, ಈಗ ಇದನ್ನು GitHub ಮತ್ತು GitLab ಎರಡರಲ್ಲೂ ಮಾಡಬಹುದು.

ಸಹಜವಾಗಿ, ಇದು ಪ್ರತಿಯೊಬ್ಬರ ವೈಯಕ್ತಿಕ ಆಯ್ಕೆಯಾಗಿದೆ.

ನನ್ನ ಅಂತಿಮ ಆಯ್ಕೆಯು GitHub ಪುಟಗಳು.

ಪುಟಗಳ ಬಗ್ಗೆ

ಯಾರಿಗೆ ಗೊತ್ತಿಲ್ಲ gh-pages - ಇದು ವೆಬ್‌ಸೈಟ್‌ನ ರೂಪದಲ್ಲಿ ದಸ್ತಾವೇಜನ್ನು ಸಂಗ್ರಹಿಸಲು ಒಂದು ಆಯ್ಕೆಯಾಗಿದೆ ಮತ್ತು ಇದನ್ನು ಉಚಿತವಾಗಿ ನೀಡಲಾಗುತ್ತದೆ ಮತ್ತು ದಸ್ತಾವೇಜನ್ನು ಜೊತೆಗೆ, ವೈಯಕ್ತಿಕ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಸಹ ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ. ಈ ಕಾರ್ಯವನ್ನು ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ GitHub ಒದಗಿಸಿದೆ ಮತ್ತು ರೆಪೊಸಿಟರಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಲಭ್ಯವಿದೆ.

ಪ್ರಾಜೆಕ್ಟ್ ರೆಪೊಸಿಟರಿಯು ಶಾಖೆಯನ್ನು ಬಳಸುತ್ತದೆ gh-pages, ಬಳಕೆದಾರರ ಸೈಟ್‌ಗಾಗಿ - ಹೆಸರಿನೊಂದಿಗೆ ಪ್ರತ್ಯೇಕ ರೆಪೊಸಿಟರಿ username.github.io ಸೈಟ್ ಮೂಲಗಳೊಂದಿಗೆ master ಶಾಖೆ.

ನೀವು ಹೆಚ್ಚಿನ ವಿವರಗಳನ್ನು ನೋಡಬಹುದು ದಾಖಲಾತಿಯಲ್ಲಿ, ಆದರೆ ಫೈಲ್ ಅನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಅಂತಹ ಸೈಟ್‌ಗೆ ತಮ್ಮದೇ ಆದ ಡೊಮೇನ್ ಅನ್ನು ಲಿಂಕ್ ಮಾಡಲು ಯಾರಾದರೂ ಅನುಮತಿಸುವಲ್ಲಿ GitHub ಆಶ್ಚರ್ಯಕರವಾಗಿ ಉದಾರವಾಗಿದೆ ಎಂಬುದನ್ನು ನಾನು ಗಮನಿಸುತ್ತೇನೆ. CNAME ಡೊಮೇನ್ ಹೆಸರಿನೊಂದಿಗೆ ಮತ್ತು GitHub ಸರ್ವರ್‌ಗಳಲ್ಲಿ ನಿಮ್ಮ ಡೊಮೇನ್ ಪೂರೈಕೆದಾರರ DNS ಅನ್ನು ಹೊಂದಿಸಿ.

ಅಂತಹ ಸೈಟ್ ಅನ್ನು ಹೇಗೆ ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ಇಲ್ಲಿ ಅನೇಕ ಲೇಖನಗಳಿವೆ ಎಂದು ನನಗೆ ಖಾತ್ರಿಯಿದೆ, ಆದ್ದರಿಂದ ನಾನು ಮುಂದೆ ಮಾತನಾಡಲು ಹೋಗುವುದಿಲ್ಲ.

ಸಮಸ್ಯೆಯ ಸಂಭವ

ಸಮಸ್ಯೆಯು ಸ್ಥಿರ ಜನರೇಟರ್ ಅನ್ನು ಬಳಸುವಾಗ, ಹೆಚ್ಚುವರಿ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬರೆಯುವ ಅವಶ್ಯಕತೆಯಿದೆ ಮತ್ತು ಪುಟಗಳನ್ನು ಉತ್ಪಾದಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸರಳಗೊಳಿಸಲು ಮತ್ತು ಅವುಗಳನ್ನು ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಲೋಡ್ ಮಾಡಲು ಗ್ರಂಥಾಲಯಗಳನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ. ಸರಳವಾಗಿ, ನೀವು ಮೂಲಗಳನ್ನು ಪ್ರತ್ಯೇಕ ಖಾಸಗಿ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದರೆ, ಪ್ರತಿ ಬಾರಿ ಸೈಟ್‌ನಲ್ಲಿ ಯಾವುದೇ ಬದಲಾವಣೆ ಕಂಡುಬಂದರೆ, ನಂತರದ ಪೀಳಿಗೆಯ ಸ್ಥಿರ ಪುಟಗಳು ಮತ್ತು ಮುಖ್ಯ ಸೈಟ್ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಪ್ರಕಟಣೆಗಾಗಿ ಸ್ಥಳೀಯ ಪರಿಸರವನ್ನು ನಿಯೋಜಿಸಲು ಇದು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ.

ಸಮೃದ್ಧಿ ಇದೆ ಸ್ಥಿರ ಜನರೇಟರ್ಗಳು ಮತ್ತು ಅವರೆಲ್ಲರಿಗೂ ಒಂದೇ ಸಮಸ್ಯೆ ಇದೆ. ಈ ಕ್ರಿಯೆಗಳು ಹೆಚ್ಚು ಸಮಯ ಮತ್ತು ಶ್ರಮವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ ಮತ್ತು ಅಂತಿಮವಾಗಿ ಸೈಟ್‌ನಲ್ಲಿ ಕೆಲಸವನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತವೆ, ವಿಶೇಷವಾಗಿ OS ನಿಂದ OS ಗೆ ಹಲವಾರು ವಲಸೆಗಳ ನಂತರ ಅಥವಾ ಹಾರ್ಡ್ ಡ್ರೈವ್‌ಗಳಲ್ಲಿ ಡೇಟಾ ನಷ್ಟದ ಘಟನೆಗಳ ನಂತರ (ನನ್ನ ವಿಷಯದಲ್ಲಿ ಹೀಗಿತ್ತು).

ಇತ್ತೀಚೆಗಷ್ಟೇ, ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿನ ಪಾಪ್-ಅಪ್ ಅಧಿಸೂಚನೆಯಲ್ಲಿ ಅಥವಾ GitHub ನಿಂದ ಸುದ್ದಿಪತ್ರದಲ್ಲಿ, ಹೊಸದಾಗಿ ನಿರ್ಮಿಸಲಾದ CI/CD ಅನ್ನು ಗಮನಿಸಲಾಗಿದೆ, ಇದು ಈ ಕ್ರಿಯೆಗಳನ್ನು ಕನಿಷ್ಠ ಪ್ರಯತ್ನದಿಂದ ಕೈಗೊಳ್ಳಲು ಅವಕಾಶ ಮಾಡಿಕೊಟ್ಟಿತು.

ಸ್ಥಿರ ಪುಟ ಜನರೇಟರ್‌ಗಳ ಬಗ್ಗೆ

ನಾನು ಈ ಉಪ-ಐಟಂ ಮೇಲೆ ವಿಶೇಷ ಗಮನವನ್ನು ಕೇಂದ್ರೀಕರಿಸುವುದಿಲ್ಲ, ಆದರೆ ಈ ಕೆಳಗಿನವುಗಳ ಆಯ್ಕೆ ಮತ್ತು ಬಳಕೆಯ ಸಮಯದಲ್ಲಿ ನಾನು ಬಂದ ಕೆಲವು ಪ್ರಬಂಧಗಳನ್ನು ನಾನು ಹಂಚಿಕೊಳ್ಳುತ್ತೇನೆ:

1) ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗೆ ಸೂಕ್ತವಾದ ಜನರೇಟರ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿ, ಅಥವಾ ಸಾಧ್ಯವಾದಷ್ಟು ಸ್ಪಷ್ಟವಾಗಿದೆ. ಸೈಟ್ ಕೆಲಸ ಮಾಡಲು ನಾನು ಕೆಲವು ಕಾರ್ಯಗಳನ್ನು ಸೇರಿಸಬೇಕಾದ ಸಮಯದಲ್ಲಿ ನಾನು ಈ ಆಲೋಚನೆಗೆ ಬಂದಿದ್ದೇನೆ, ಅದರ ಹೆಚ್ಚಿನ ಸ್ಥಿರತೆ ಮತ್ತು ಯಾಂತ್ರೀಕರಣಕ್ಕಾಗಿ ಊರುಗೋಲುಗಳನ್ನು ಸೇರಿಸುತ್ತೇನೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಪ್ಲಗಿನ್‌ಗಳ ರೂಪದಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಕಾರ್ಯವನ್ನು ನೀವೇ ಬರೆಯಲು ಇದು ಉತ್ತಮ ಕಾರಣವಾಗಿದೆ;

2) ಯಾವ ಜನರೇಟರ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ವೈಯಕ್ತಿಕ ಆಯ್ಕೆಯಾಗಿದೆ, ಆದರೆ GitHub ಪುಟಗಳ ಕಾರ್ಯನಿರ್ವಹಣೆಯ ಕೆಲಸದಲ್ಲಿ ಆರಂಭಿಕ ಇಮ್ಮರ್ಶನ್ಗಾಗಿ, ನೀವು ಮೊದಲು ಸ್ಥಾಪಿಸಬೇಕು ಎಂದು ಪರಿಗಣಿಸುವುದು ಯೋಗ್ಯವಾಗಿದೆ ಜೆಕಿಲ್. ಅದೃಷ್ಟವಶಾತ್, ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ನೇರವಾಗಿ ಮೂಲಗಳಿಂದ ವೆಬ್‌ಸೈಟ್ ಅನ್ನು ರಚಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ (ನನ್ನ ಆಯ್ಕೆಯೊಂದಿಗೆ ನಾನು ಇದನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತೇನೆ).

ಜನರೇಟರ್ನ ನನ್ನ ಆಯ್ಕೆಯು ಮೊದಲ ಬಿಂದುವನ್ನು ಆಧರಿಸಿದೆ. ಪೆಲಿಕನ್ ಪೈಥಾನ್‌ನಲ್ಲಿ ಬರೆಯಲಾದ ಜೆಕಿಲ್ ಅನ್ನು ಸುಲಭವಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ, ಅದು ನನಗೆ ವಿದೇಶಿಯಾಗಿದೆ (ಸುಮಾರು ಒಂದು ವರ್ಷ ಇದನ್ನು ಬಳಸಲಾಗಿದೆ). ಪರಿಣಾಮವಾಗಿ, ಲೇಖನಗಳನ್ನು ರಚಿಸುವುದು ಮತ್ತು ಸಂಪಾದಿಸುವುದು ಮತ್ತು ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದು ನನಗೆ ಆಸಕ್ತಿದಾಯಕ ಭಾಷೆಯಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಅನುಭವವನ್ನು ನೀಡುತ್ತದೆ.

__

ಸಮಸ್ಯೆ ಹೇಳಿಕೆ

ಖಾಸಗಿ ರೆಪೊಸಿಟರಿಯಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಥಿರ ಪುಟಗಳನ್ನು ರಚಿಸುವ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು (ವಾಸ್ತವವಾಗಿ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್) ಬರೆಯುವುದು ಮುಖ್ಯ ಕಾರ್ಯವಾಗಿದೆ. ಪರಿಹಾರವು ವರ್ಚುವಲ್ ಪರಿಸರದ ಕಾರ್ಯವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಸ್ವತಃ ರೆಡಿಮೇಡ್ ಪುಟಗಳನ್ನು ಸಾರ್ವಜನಿಕ ಭಂಡಾರಕ್ಕೆ ಸೇರಿಸುತ್ತದೆ.

ಪರಿಹಾರಕ್ಕಾಗಿ ಪರಿಕರಗಳು

ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ನಾವು ಬಳಸುವ ಪರಿಕರಗಳು:

  • GitHub ಕ್ರಿಯೆಗಳು;
  • ಪೈಥಾನ್ 3.7;
  • ಪೆಲಿಕನ್;
  • Git;
  • GitHub ಪುಟಗಳು.

ನಿವಾರಣೆ

ಆದ್ದರಿಂದ, ದಸ್ತಾವೇಜನ್ನು ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಪರಿಚಯ ಮಾಡಿಕೊಂಡ ನಂತರ ಮತ್ತು ಕ್ರಿಯೆಗಳಿಗೆ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಹೇಗೆ ಬರೆಯಲಾಗಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡ ನಂತರ, ಈ ಕಾರ್ಯವಿಧಾನವು ಉದ್ಭವಿಸಿದ ಸಮಸ್ಯೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪರಿಹರಿಸುತ್ತದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಯಿತು. ಬರೆಯುವ ಸಮಯದಲ್ಲಿ, ಈ ಕಾರ್ಯವನ್ನು ಬಳಸಲು ನೀವು ಚಂದಾದಾರರಾಗಿರಬೇಕು. ಬೀಟಾ ಪರೀಕ್ಷೆಗಾಗಿ!

ಸ್ಟ್ಯಾಟಿಕ್ ಜನರೇಟರ್ ಮತ್ತು GitHub ಪುಟಗಳಲ್ಲಿನ ಸೈಟ್‌ಗಾಗಿ CI/CD ಆಗಿ GitHub ಕ್ರಿಯೆಗಳು
Github ಸ್ವತಃ ಹೊಸ ಕಾರ್ಯನಿರ್ವಹಣೆಯ ವಿವರಣೆ

ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಹೆಸರಿಸಲಾದ ಫೈಲ್ ಅನ್ನು ರಚಿಸುವ ಮೂಲಕ ಕ್ರಿಯೆಗಳ ಸ್ಕ್ರಿಪ್ಟ್ ಬರೆಯುವುದು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ .github ಮತ್ತು ಅದರ ಉಪ ಫೋಲ್ಡರ್ workflows. ಇದನ್ನು ಕೈಯಾರೆ ಅಥವಾ ರೆಪೊಸಿಟರಿ ಪುಟದಲ್ಲಿನ ಕ್ರಿಯೆಗಳ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಸಂಪಾದಕರಿಂದ ಮಾಡಬಹುದು.

ಸ್ಟ್ಯಾಟಿಕ್ ಜನರೇಟರ್ ಮತ್ತು GitHub ಪುಟಗಳಲ್ಲಿನ ಸೈಟ್‌ಗಾಗಿ CI/CD ಆಗಿ GitHub ಕ್ರಿಯೆಗಳು
ಖಾಲಿ ಸ್ಕ್ರಿಪ್ಟ್ ಫಾರ್ಮ್‌ನ ಉದಾಹರಣೆ

ನಾನು ಫಾರ್ಮ್ ಬಗ್ಗೆ ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಕಾಮೆಂಟ್ ಮಾಡುತ್ತೇನೆ

name: CI    # название скрипта: будет отображаться во вкладке Actions

on: [push]  # действие, по которому запускается данный скрипт

jobs:       # роботы, которые будут выполняться
  build:    # сборка, которая..

    runs-on: ubuntu-latest      # ..будет запущена на основе этого образа

    steps:              # шаги которые будут проделаны после запуска образа
    - uses: actions/checkout@v1     # переход в самую актуальную ветку
    - name: Run a one-line script   # имя работы номер 1
      run: echo Hello, world!       # суть работы номер 1 (bash-команда записана в одну строку)
    - name: Run a multi-line script   # имя работы номер 2
      run: |                    # суть работы номер 2 (многострочная)
        echo Add other actions to build,
        echo test, and deploy your project.

ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ಆಧರಿಸಿ ನಮ್ಮದೇ ಆದದನ್ನು ಬರೆಯೋಣ:

0) ನೀವು "CI" ಎಂಬ ಹೆಸರನ್ನು ಸಹ ಬಿಡಬಹುದು. ಇದು ರುಚಿಯ ವಿಷಯ.

1) ಮುಂದೆ, ನೀವು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವ ಕ್ರಿಯೆ/ಪ್ರಚೋದಕವನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ ಇದು ರೆಪೊಸಿಟರಿಗೆ ಹೊಸ ಬದ್ಧತೆಯ ಸಾಮಾನ್ಯ ಪುಶ್ ಆಗಿದೆ.

on:
  push

2) ಉಬುಂಟು ಅಗತ್ಯ ಕಾರ್ಯಚಟುವಟಿಕೆಯಲ್ಲಿ ಸಾಕಷ್ಟು ತೃಪ್ತಿ ಹೊಂದಿರುವುದರಿಂದ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಉದಾಹರಣೆಯಾಗಿ ಪ್ರಾರಂಭಿಸುವ ಆಧಾರದ ಮೇಲೆ ನಾವು ಚಿತ್ರವನ್ನು ಸಹ ಬಿಡುತ್ತೇವೆ. ಅತ್ತ ನೋಡುತ್ತ ಲಭ್ಯವಿರುವ ಉಪಕರಣಗಳು ಇದು ಯಾವುದೇ ಅಗತ್ಯ ಅಥವಾ ಸರಳವಾಗಿ ಅನುಕೂಲಕರವಾದ ಚಿತ್ರ (ಅಥವಾ ಅದರ ಆಧಾರದ ಮೇಲೆ ಡಾಕರ್ ಕಂಟೇನರ್) ಆಗಿರಬಹುದು ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗುತ್ತದೆ.

  build:
    runs-on: ubuntu-latest

3) ಹಂತಗಳಲ್ಲಿ, ನಾವು ಮೊದಲು ಮುಖ್ಯ ಕೆಲಸಕ್ಕಾಗಿ ತಯಾರಾಗಲು ಪರಿಸರವನ್ನು ಹೊಂದಿಸುತ್ತೇವೆ.

3.1) ನಮಗೆ ಅಗತ್ಯವಿರುವ ಶಾಖೆಗೆ ಹೋಗಿ (ಪ್ರಮಾಣಿತ ಹಂತ checkout):

- uses: actions/checkout@v1

3.2) ಪೈಥಾನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ:

    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.7

3.3) ನಮ್ಮ ಜನರೇಟರ್ನ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿ:

    - name: Install dependencies
      run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

3.4) ಸೈಟ್ ಪುಟಗಳನ್ನು ರಚಿಸುವ ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸಿ:

   - name: Make output folder
      run: mkdir output

4) ಸೈಟ್‌ನಲ್ಲಿನ ಕೆಲಸವು ಸ್ಥಿರವಾಗಿರಲು, ಅವುಗಳೆಂದರೆ, ಹಿಂದಿನ ಬದಲಾವಣೆಗಳನ್ನು ಅಳಿಸದಿರಲು ಮತ್ತು ಸಂಘರ್ಷಗಳಿಲ್ಲದೆ ಸೈಟ್ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಮುಂದಿನ ಹಂತವು ಪ್ರತಿ ಬಾರಿ ಸೈಟ್ ರೆಪೊಸಿಟರಿಯನ್ನು ಕ್ಲೋನ್ ಮಾಡುವುದು:

   - name: Clone master branch
      run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output

ಈ ಹಂತವು ಸಿಸ್ಟಮ್ ವೇರಿಯಬಲ್‌ಗಳನ್ನು ಕರೆಯುತ್ತದೆ:

  • ವೇರಿಯಬಲ್ GITHUB_ACTOR GitHub ಸ್ವತಃ ಸ್ಥಾಪಿಸುತ್ತದೆ, ಮತ್ತು ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಯಾರ ದೋಷದಿಂದ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆಯೋ ಅದರ ಬಳಕೆದಾರಹೆಸರು;
  • ವೇರಿಯಬಲ್ secrets.ACCESS_TOKEN ಇದು ಉತ್ಪತ್ತಿಯಾಗುತ್ತದೆ Github ಅನ್ನು ನಿರ್ವಹಿಸಲು ಟೋಕನ್, ನಾವು ಅದನ್ನು ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಹೊಂದಿಸುವ ಮೂಲಕ ಪರಿಸರ ವೇರಿಯಬಲ್ ಆಗಿ ರವಾನಿಸಬಹುದು Secrets ನಮ್ಮ ರೆಪೊಸಿಟರಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು. ಪೀಳಿಗೆಯ ಸಮಯದಲ್ಲಿ ಟೋಕನ್ ಅನ್ನು ಒಮ್ಮೆ ನಮಗೆ ಒದಗಿಸಲಾಗುತ್ತದೆ, ಅದಕ್ಕೆ ಹೆಚ್ಚಿನ ಪ್ರವೇಶವಿರುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಹಾಗೆಯೇ ಸೀಕ್ರೆಟ್ಸ್ ಐಟಂಗಳ ಮೌಲ್ಯಗಳು.

5) ನಮ್ಮ ಪುಟಗಳನ್ನು ರಚಿಸಲು ನಾವು ಮುಂದುವರಿಯೋಣ:

   - name: Generate static pages
      run: pelican content -o output -s publishconf.py

ಜನರೇಟರ್‌ಗೆ ರವಾನಿಸಲಾದ ನಿಯತಾಂಕಗಳು ರಚಿಸಿದ ಫೈಲ್‌ಗಳನ್ನು ಕಳುಹಿಸುವ ಡೈರೆಕ್ಟರಿಗೆ ಜವಾಬ್ದಾರರಾಗಿರುತ್ತವೆ (-o output) ಮತ್ತು ನಾವು ರಚಿಸಲು ಬಳಸುವ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ (-s publishconf.py; ಪೆಲಿಕನ್ ದಸ್ತಾವೇಜನ್ನು ಪ್ರಕಟಿಸಲು ಸ್ಥಳೀಯ ಸಂರಚನೆ ಮತ್ತು ಸಂರಚನೆಯನ್ನು ಬೇರ್ಪಡಿಸುವ ವಿಧಾನವನ್ನು ನೀವು ಓದಬಹುದು).

ನಮ್ಮ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಏನಿದೆ ಎಂದು ನಾನು ನಿಮಗೆ ನೆನಪಿಸುತ್ತೇನೆ output ಸೈಟ್ ರೆಪೊಸಿಟರಿಯನ್ನು ಈಗಾಗಲೇ ಕ್ಲೋನ್ ಮಾಡಲಾಗಿದೆ.

6) ನಮ್ಮ ಬದಲಾದ ಫೈಲ್‌ಗಳನ್ನು ಜಿಟ್ ಮತ್ತು ಇಂಡೆಕ್ಸ್ ಹೊಂದಿಸೋಣ:

    - name: Set git config and add changes
      run: |
          git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
          git config --global user.name "${GITHUB_ACTOR}"
          git add --all
      working-directory: ./output

ಈ ಹಂತದಲ್ಲಿ, ಈಗಾಗಲೇ ತಿಳಿದಿರುವ ವೇರಿಯಬಲ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಈ ಹಂತದಿಂದ ಆಜ್ಞೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವ ಕಾರ್ಯ ಡೈರೆಕ್ಟರಿಯನ್ನು ಸೂಚಿಸಲಾಗುತ್ತದೆ. ಕೆಲಸ ಮಾಡುವ ಡೈರೆಕ್ಟರಿಗೆ ಹೋಗುವ ಆಜ್ಞೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ - cd output.

7) ನಾವು ಬದ್ಧತೆಯ ಸಂದೇಶವನ್ನು ರಚಿಸೋಣ, ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡೋಣ ಮತ್ತು ಅವುಗಳನ್ನು ಭಂಡಾರಕ್ಕೆ ತಳ್ಳೋಣ. ಆದ್ದರಿಂದ ಬದ್ಧತೆಯು ವ್ಯರ್ಥವಾಗುವುದಿಲ್ಲ ಮತ್ತು ಆದ್ದರಿಂದ ಬ್ಯಾಷ್‌ನಲ್ಲಿ ದೋಷವನ್ನು ಉಂಟುಮಾಡುವುದಿಲ್ಲ (ಔಟ್‌ಪುಟ್ ಫಲಿತಾಂಶವು ಅಲ್ಲ 0) - ಮೊದಲಿಗೆ, ಏನನ್ನಾದರೂ ಬದ್ಧಗೊಳಿಸಲು ಮತ್ತು ತಳ್ಳಲು ಅಗತ್ಯವಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸೋಣ. ಇದನ್ನು ಮಾಡಲು ನಾವು ಆಜ್ಞೆಯನ್ನು ಬಳಸುತ್ತೇವೆ git diff-index --quiet --cached HEAD -- ಇದು ಟರ್ಮಿನಲ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ 0 ಸೈಟ್ನ ಹಿಂದಿನ ಆವೃತ್ತಿಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಯಾವುದೇ ಬದಲಾವಣೆಗಳಿಲ್ಲದಿದ್ದರೆ, ಮತ್ತು 1 ಅಂತಹ ಬದಲಾವಣೆಗಳಿವೆ. ನಂತರ ನಾವು ಈ ಆಜ್ಞೆಯ ಫಲಿತಾಂಶವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತೇವೆ. ಹೀಗಾಗಿ, ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಮಾಹಿತಿಯಲ್ಲಿ, ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕ್ರ್ಯಾಶ್ ಆಗುವ ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ ಕ್ರ್ಯಾಶ್ ಬಗ್ಗೆ ವರದಿಯನ್ನು ಕಳುಹಿಸುವ ಬದಲು ಈ ಹಂತದಲ್ಲಿ ಸೈಟ್‌ನ ಸ್ಥಿತಿಯ ಕುರಿತು ಉಪಯುಕ್ತ ಮಾಹಿತಿಯನ್ನು ನಾವು ದಾಖಲಿಸುತ್ತೇವೆ.

ರೆಡಿಮೇಡ್ ಪುಟಗಳೊಂದಿಗೆ ನಮ್ಮ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ನಾವು ಈ ಕ್ರಿಯೆಗಳನ್ನು ಸಹ ಕೈಗೊಳ್ಳುತ್ತೇವೆ.

   - name: Push and send notification
      run: |
          COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
          git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
          # Only if repo have changes
          git commit -m "${COMMIT_MESSAGE}"
          git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
      working-directory: ./output

ಪರಿಣಾಮವಾಗಿ

ಪರಿಣಾಮವಾಗಿ, ಅಂತಹ ಸ್ಕ್ರಿಪ್ಟ್ ಸ್ಥಿರ ಪುಟಗಳನ್ನು ರಚಿಸುವ ಬಗ್ಗೆ ಯೋಚಿಸದಿರಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಖಾಸಗಿ ರೆಪೊಸಿಟರಿಗೆ ನೇರವಾಗಿ ಬದಲಾವಣೆಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ, ಯಾವುದೇ ಸಿಸ್ಟಮ್‌ನಿಂದ git ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಮೂಲಕ ಅಥವಾ GitHub ವೆಬ್ ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ ಫೈಲ್ ಅನ್ನು ರಚಿಸುವ ಮೂಲಕ, ಕ್ರಿಯೆಗಳು ಎಲ್ಲವನ್ನೂ ಸ್ವತಃ ಮಾಡುತ್ತವೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಅನಿರೀಕ್ಷಿತವಾಗಿ ಕ್ರ್ಯಾಶ್ ಆಗಿದ್ದರೆ, ನಿಮ್ಮ ಇಮೇಲ್‌ಗೆ ಅಧಿಸೂಚನೆಯನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತದೆ.

ಪೂರ್ಣ ಕೋಡ್

ನನ್ನ ಕೆಲಸದ ಆವೃತ್ತಿಯನ್ನು ನಾನು ಬಿಡುತ್ತೇನೆ, ಇದರಲ್ಲಿ ಕೊನೆಯ ಹಂತವು ಮುಖ್ಯ ರೆಪೊಸಿಟರಿಗೆ ಬದ್ಧತೆಯನ್ನು ತಳ್ಳಲಾಗಿದೆ ಎಂಬ ಅಧಿಸೂಚನೆಯನ್ನು ಕಳುಹಿಸುವುದನ್ನು ಸೇರಿಸುತ್ತದೆ.

ಮೇಲೆ ವಿವರಿಸಿದ ರಹಸ್ಯಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಅಲ್ಲಿ ಬೋಟ್ ಟೋಕನ್ ಮತ್ತು ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಬೇಕಾದ ಬಳಕೆದಾರ ID ಅನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ.

name: Push content to the user's GitHub pages repository

on:
  push

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.7
    - name: Install dependencies
      run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
    - name: Make output folder
      run: mkdir output
    - name: Clone master branch
      run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output
    - name: Generate static pages
      run: pelican content -o output -s publishconf.py
    - name: Set git config and add changes
      run: |
          git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
          git config --global user.name "${GITHUB_ACTOR}"
          git add --all
      working-directory: ./output
    - name: Push and send notification
      run: |
          COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
          git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
          git commit -m "${COMMIT_MESSAGE}"
          git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
          curl "https://api.telegram.org/bot${{ secrets.BOT_TOKEN }}/sendMessage?text=$COMMIT_MESSAGE %0ALook at ${GITHUB_ACTOR}.github.io %0ARepository%3A github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io&chat_id=${{ secrets.ADMIN_ID }}"
      working-directory: ./output

ಪರದೆ

ಸ್ಟ್ಯಾಟಿಕ್ ಜನರೇಟರ್ ಮತ್ತು GitHub ಪುಟಗಳಲ್ಲಿನ ಸೈಟ್‌ಗಾಗಿ CI/CD ಆಗಿ GitHub ಕ್ರಿಯೆಗಳು
ಮೂಲ ರೆಪೊಸಿಟರಿಯ ಕ್ರಿಯೆಗಳ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲಾದ ರನ್‌ಗಳ ಫಲಿತಾಂಶ

ಸ್ಟ್ಯಾಟಿಕ್ ಜನರೇಟರ್ ಮತ್ತು GitHub ಪುಟಗಳಲ್ಲಿನ ಸೈಟ್‌ಗಾಗಿ CI/CD ಆಗಿ GitHub ಕ್ರಿಯೆಗಳು
ಸ್ಕ್ರಿಪ್ಟ್ ಪೂರ್ಣಗೊಂಡ ಬಗ್ಗೆ ಬೋಟ್‌ನಿಂದ ಸಂದೇಶ

ಉಪಯುಕ್ತ ಕೊಂಡಿಗಳು

ಕ್ರಿಯೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
ಕ್ರಿಯೆಗಳ ಸಿಂಟ್ಯಾಕ್ಸ್
ಪ್ರಚೋದಕಗಳ ಪಟ್ಟಿ
ವರ್ಚುವಲ್ ಪರಿಸರದ ಆಯ್ಕೆಗಳು
ಗಿಥಬ್ ಪುಟಗಳು
ಸ್ಥಿರ ಜನರೇಟರ್ ಪಟ್ಟಿ

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ