{"id":752,"date":"2026-03-24T08:40:58","date_gmt":"2026-03-24T07:40:58","guid":{"rendered":"https:\/\/secure-pipelines.com\/ci-cd-security\/gitlab-ci-cd-security-definitive-guide-2\/"},"modified":"2026-07-08T22:27:44","modified_gmt":"2026-07-08T21:27:44","slug":"gitlab-ci-cd-security-definitive-guide","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/gitlab-ci-cd-security-definitive-guide\/","title":{"rendered":"\u0623\u0645\u0627\u0646 GitLab CI\/CD: \u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0634\u0627\u0645\u0644"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0623\u0635\u0628\u062d GitLab CI\/CD \u0627\u0644\u0639\u0645\u0648\u062f \u0627\u0644\u0641\u0642\u0631\u064a \u0644\u0645\u0645\u0627\u0631\u0633\u0627\u062a DevSecOps \u0627\u0644\u062d\u062f\u064a\u062b\u0629\u060c \u0625\u0630 \u064a\u0648\u0641\u0651\u0631 \u0645\u0646\u0635\u0629 \u0645\u062a\u0643\u0627\u0645\u0644\u0629 \u062a\u062c\u062a\u0645\u0639 \u0641\u064a\u0647\u0627 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0648\u062e\u0637\u0648\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 (pipelines) \u0648\u0627\u0644\u0641\u062d\u0635 \u0627\u0644\u0623\u0645\u0646\u064a \u0648\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0641\u064a \u0648\u0627\u062c\u0647\u0629 \u0648\u0627\u062d\u062f\u0629. \u0644\u0643\u0646 \u0647\u0630\u0627 \u0627\u0644\u062a\u0643\u0627\u0645\u0644 \u0627\u0644\u0639\u0645\u064a\u0642 \u0633\u0644\u0627\u062d \u0630\u0648 \u062d\u062f\u0651\u064a\u0646: \u0641\u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0645\u064f\u0639\u062f\u0651 \u0625\u0639\u062f\u0627\u062f\u0627\u064b \u062e\u0627\u0637\u0626\u0627\u064b \u0642\u062f \u064a\u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631\u060c \u0623\u0648 \u064a\u0633\u0645\u062d \u0628\u0639\u0645\u0644\u064a\u0627\u062a \u0646\u0634\u0631 \u063a\u064a\u0631 \u0645\u0635\u0631\u0651\u062d \u0628\u0647\u0627\u060c \u0623\u0648 \u064a\u0645\u0646\u062d \u0627\u0644\u0645\u0647\u0627\u062c\u0645\u064a\u0646 \u0645\u0648\u0637\u0626 \u0642\u062f\u0645 \u0641\u064a \u0628\u0646\u064a\u062a\u0643 \u0627\u0644\u062a\u062d\u062a\u064a\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\">\u064a\u063a\u0637\u0651\u064a \u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0634\u0627\u0645\u0644 \u0643\u0644 \u0633\u0637\u062d \u0630\u064a \u0635\u0644\u0629 \u0623\u0645\u0646\u064a\u0629 \u0641\u064a GitLab CI\/CD \u2014 \u0645\u0646 \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 (protected variables) \u0648\u062a\u062d\u062f\u064a\u062f \u0646\u0637\u0627\u0642 \u0627\u0644\u0640 runners \u0625\u0644\u0649 \u0627\u062a\u062d\u0627\u062f \u0627\u0644\u0647\u0648\u064a\u0629 \u0639\u0628\u0631 OIDC \u0648\u0623\u0645\u0627\u0646 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062f\u0645\u062c (merge request). \u0633\u0648\u0627\u0621 \u0643\u0646\u062a \u062a\u0639\u0645\u0644 \u0639\u0644\u0649 \u062a\u0642\u0648\u064a\u0629 \u062a\u0646\u0635\u064a\u0628 GitLab \u0642\u0627\u0626\u0645 \u0623\u0648 \u062a\u0628\u0646\u064a \u0645\u0645\u0627\u0631\u0633\u0629 DevSecOps \u0645\u0646 \u0627\u0644\u0635\u0641\u0631\u060c \u064a\u0645\u0646\u062d\u0643 \u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0627\u0644 \u0627\u0644\u0645\u0639\u0631\u0641\u0629 \u0648\u0642\u0648\u0627\u0626\u0645 \u0627\u0644\u062a\u062d\u0642\u0642 \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062a\u064a \u062a\u062d\u062a\u0627\u062c\u0647\u0627.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0644\u0645\u0627\u0630\u0627 \u064a\u0647\u0645\u0651 \u0623\u0645\u0627\u0646 GitLab CI\/CD<\/h2>\n\n<p class=\"wp-block-paragraph\">\u064a\u0642\u062f\u0651\u0645 GitLab \u0646\u0641\u0633\u0647 \u0628\u0648\u0635\u0641\u0647 \u00ab\u0645\u0646\u0635\u0629 DevOps \u0627\u0644\u0648\u0627\u062d\u062f\u0629\u00bb\u060c \u0648\u0644\u0633\u0628\u0628 \u0648\u062c\u064a\u0647. \u0641\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0645\u0635\u062f\u0631\u064a\u0629 \u0648\u062a\u062a\u0628\u0651\u0639 \u0627\u0644\u0642\u0636\u0627\u064a\u0627 \u0648CI\/CD \u0648\u0633\u062c\u0644\u0651 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0648\u0633\u062c\u0644\u0651 \u0627\u0644\u062d\u0650\u0632\u0645 \u0648\u0627\u0644\u0641\u062d\u0635 \u0627\u0644\u0623\u0645\u0646\u064a \u0648\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0646\u0634\u0631 \u062a\u0639\u064a\u0634 \u0643\u0644\u0647\u0627 \u062a\u062d\u062a \u0633\u0642\u0641 \u0648\u0627\u062d\u062f. \u0647\u0630\u0627 \u0627\u0644\u062a\u0648\u062d\u064a\u062f \u064a\u0628\u0633\u0651\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a \u2014 \u0644\u0643\u0646\u0647 \u0623\u064a\u0636\u0627\u064b \u064a\u064f\u0631\u0643\u0651\u0632 \u0627\u0644\u0645\u062e\u0627\u0637\u0631. \u0641\u0645\u0647\u0645\u0651\u0629 (job) \u0648\u0627\u062d\u062f\u0629 \u0645\u062e\u062a\u0631\u064e\u0642\u0629 \u0641\u064a \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0642\u062f \u062a\u062a\u0645\u0643\u0651\u0646 \u0645\u0646 \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0645\u0635\u062f\u0631\u064a\u0629\u060c \u0648\u0633\u0631\u0642\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f\u060c \u0648\u062f\u0641\u0639 \u0635\u0648\u0631 \u062e\u0628\u064a\u062b\u0629\u060c \u0648\u062a\u0634\u063a\u064a\u0644 \u0639\u0645\u0644\u064a\u0627\u062a \u0646\u0634\u0631 \u0625\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0627\u062c.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0623\u0638\u0647\u0631\u062a \u0647\u062c\u0645\u0627\u062a \u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f \u0627\u0644\u0623\u062e\u064a\u0631\u0629 \u0623\u0646\u0651 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI\/CD \u0623\u0647\u062f\u0627\u0641 \u0639\u0627\u0644\u064a\u0629 \u0627\u0644\u0642\u064a\u0645\u0629. \u0641\u0627\u0644\u0645\u0647\u0627\u062c\u0645\u0648\u0646 \u0627\u0644\u0630\u064a\u0646 \u064a\u0646\u062c\u062d\u0648\u0646 \u0641\u064a \u062d\u0642\u0646 \u062e\u0637\u0648\u0627\u062a \u062f\u0627\u062e\u0644 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u2014 \u0633\u0648\u0627\u0621 \u0639\u0628\u0631 \u062a\u0628\u0639\u064a\u0629 \u0645\u0633\u0645\u0648\u0645\u0629\u060c \u0623\u0648 runner \u0645\u0634\u062a\u0631\u0643 \u0645\u062e\u062a\u0631\u064e\u0642\u060c \u0623\u0648 \u0637\u0644\u0628 \u062f\u0645\u062c \u062e\u0628\u064a\u062b \u2014 \u064a\u0645\u0643\u0646\u0647\u0645 \u062a\u0633\u0631\u064a\u0628 \u0627\u0644\u0623\u0633\u0631\u0627\u0631\u060c \u0623\u0648 \u0627\u0644\u0639\u0628\u062b \u0628\u0645\u062e\u0631\u062c\u0627\u062a \u0627\u0644\u0628\u0646\u0627\u0621 (artifacts)\u060c \u0623\u0648 \u0627\u0644\u062a\u062d\u0631\u0651\u0643 \u0623\u0641\u0642\u064a\u0627\u064b \u062f\u0627\u062e\u0644 \u0628\u064a\u0626\u0627\u062a \u0627\u0644\u0633\u062d\u0627\u0628\u0629. \u064a\u0648\u0641\u0651\u0631 GitLab \u0645\u062c\u0645\u0648\u0639\u0629 \u063a\u0646\u064a\u0629 \u0645\u0646 \u0627\u0644\u0636\u0648\u0627\u0628\u0637 \u0644\u0645\u0646\u0639 \u0647\u0630\u0647 \u0627\u0644\u0646\u062a\u0627\u0626\u062c\u060c \u0644\u0643\u0646 \u0630\u0644\u0643 \u0645\u0634\u0631\u0648\u0637 \u0628\u0641\u0647\u0645\u0643 \u0644\u0647\u0627 \u0648\u062a\u0641\u0639\u064a\u0644\u0647\u0627.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0641\u0647\u0645 \u0646\u0645\u0648\u0630\u062c \u0623\u0645\u0627\u0646 GitLab CI<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0644\u063a\u0648\u0635 \u0641\u064a \u0627\u0644\u0636\u0648\u0627\u0628\u0637 \u0627\u0644\u0641\u0631\u062f\u064a\u0629\u060c \u0645\u0646 \u0627\u0644\u0645\u0641\u064a\u062f \u0641\u0647\u0645 \u0627\u0644\u0631\u0643\u0627\u0626\u0632 \u0627\u0644\u0623\u0631\u0628\u0639 \u0644\u0646\u0645\u0648\u0630\u062c \u0623\u0645\u0627\u0646 GitLab CI:<\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>\u0627\u0644\u0640 Runners<\/strong> \u2014 \u0637\u0628\u0642\u0629 \u0627\u0644\u062d\u0648\u0633\u0628\u0629 \u0627\u0644\u062a\u064a \u062a\u0646\u0641\u0651\u0630 \u0627\u0644\u0645\u0647\u0627\u0645. \u064a\u0639\u062a\u0645\u062f \u0623\u0645\u0646\u0647\u0627 \u0639\u0644\u0649 \u0627\u0644\u0639\u0632\u0644 \u0648\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u062b\u0642\u0629 \u0648\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0646\u0637\u0627\u0642.<\/li>\n<li><strong>\u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a (Variables)<\/strong> \u2014 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0648\u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0645\u062d\u0642\u0648\u0646\u0629 \u0641\u064a \u0627\u0644\u0645\u0647\u0627\u0645. \u0627\u0644\u062d\u0645\u0627\u064a\u0629 \u0648\u0627\u0644\u0625\u062e\u0641\u0627\u0621 (masking) \u064a\u062d\u062f\u0651\u062f\u0627\u0646 \u0645\u064e\u0646 \u0648\u0645\u0627 \u0627\u0644\u0630\u064a \u064a\u0645\u0643\u0646\u0647 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u064a\u0647\u0627.<\/li>\n<li><strong>\u0627\u0644\u0628\u064a\u0626\u0627\u062a (Environments)<\/strong> \u2014 \u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0645\u0646\u0637\u0642\u064a\u0629 (staging\u060c production). \u0642\u0648\u0627\u0639\u062f \u0627\u0644\u062d\u0645\u0627\u064a\u0629 \u0648\u0628\u0648\u0627\u0628\u0627\u062a \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u062a\u062a\u062d\u0643\u0651\u0645 \u0641\u064a \u0645\u064e\u0646 \u064a\u0646\u0634\u0631 \u0648\u0623\u064a\u0646.<\/li>\n<li><strong>\u0627\u0644\u0631\u0645\u0648\u0632 (Tokens)<\/strong> \u2014 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0642\u0635\u064a\u0631\u0629 \u0627\u0644\u0639\u0645\u0631 (<code>CI_JOB_TOKEN<\/code>\u060c \u0648\u0631\u0645\u0648\u0632 OIDC <code>id_tokens<\/code>) \u062a\u064f\u0635\u0627\u062f\u0650\u0642 \u0627\u0644\u0645\u0647\u0627\u0645 \u0644\u062f\u0649 \u062e\u062f\u0645\u0627\u062a \u0623\u062e\u0631\u0649. \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0646\u0637\u0627\u0642 \u064a\u062d\u062f\u0651 \u0645\u0646 \u0646\u0637\u0627\u0642 \u0627\u0644\u0636\u0631\u0631 \u0627\u0644\u0645\u062d\u062a\u0645\u0644.<\/li>\n<\/ol>\n\n<p class=\"wp-block-paragraph\">\u0643\u0644 \u062a\u062f\u0628\u064a\u0631 \u062a\u0642\u0648\u064a\u0629 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644 \u064a\u0639\u0648\u062f \u0625\u0644\u0649 \u0648\u0627\u062d\u062f\u0629 \u0623\u0648 \u0623\u0643\u062b\u0631 \u0645\u0646 \u0647\u0630\u0647 \u0627\u0644\u0631\u0643\u0627\u0626\u0632. \u0623\u062a\u0642\u0650\u0646 \u0627\u0644\u0623\u0631\u0628\u0639 \u062c\u0645\u064a\u0639\u0627\u064b\u060c \u0648\u0633\u062a\u062d\u0635\u0644 \u0639\u0644\u0649 \u0648\u0636\u0639\u064a\u0629 \u062f\u0641\u0627\u0639 \u0645\u062a\u0639\u0645\u0651\u0642 \u0642\u0627\u062f\u0631\u0629 \u0639\u0644\u0649 \u0627\u0644\u0635\u0645\u0648\u062f \u0623\u0645\u0627\u0645 \u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u062f\u0627\u062e\u0644 \u0648\u0647\u062c\u0645\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c \u0639\u0644\u0649 \u062d\u062f\u0651 \u0633\u0648\u0627\u0621.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0648\u0627\u0644\u0645\u064f\u062e\u0641\u0627\u0629<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a CI\/CD \u0647\u064a \u0627\u0644\u0622\u0644\u064a\u0629 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0644\u062d\u0642\u0646 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u2014 \u0645\u0641\u0627\u062a\u064a\u062d API\u060c \u0648\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u0629\u060c \u0648\u0643\u0644\u0645\u0627\u062a \u0645\u0631\u0648\u0631 \u0642\u0648\u0627\u0639\u062f \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u2014 \u062f\u0627\u062e\u0644 \u0645\u0647\u0627\u0645 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628. \u064a\u0642\u062f\u0651\u0645 GitLab \u0636\u0645\u0627\u0646\u062a\u064a\u0646 \u0645\u062a\u0639\u0627\u0645\u062f\u062a\u064a\u0646: <strong>\u0627\u0644\u062d\u0645\u0627\u064a\u0629 (protection)<\/strong> \u0648<strong>\u0627\u0644\u0625\u062e\u0641\u0627\u0621 (masking)<\/strong>.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0639\u0646\u062f\u0645\u0627 \u064a\u064f\u0648\u0633\u064e\u0645 \u0645\u062a\u063a\u064a\u0651\u0631 \u0628\u0623\u0646\u0647 <em>\u0645\u062d\u0645\u064a<\/em>\u060c \u0644\u0627 \u064a\u0643\u0634\u0641\u0647 GitLab \u0625\u0644\u0627 \u0644\u0644\u0645\u0647\u0627\u0645 \u0627\u0644\u062a\u064a \u062a\u0639\u0645\u0644 \u0639\u0644\u0649 <strong>\u0627\u0644\u0641\u0631\u0648\u0639 \u0627\u0644\u0645\u062d\u0645\u064a\u0629<\/strong> \u0623\u0648 <strong>\u0627\u0644\u0648\u0633\u0648\u0645 \u0627\u0644\u0645\u062d\u0645\u064a\u0629<\/strong>. \u0647\u0630\u0627 \u0636\u0627\u0628\u0637 \u0628\u0627\u0644\u063a \u0627\u0644\u0623\u0647\u0645\u064a\u0629: \u0641\u0647\u0648 \u064a\u0639\u0646\u064a \u0623\u0646\u0651 \u0645\u0637\u0648\u0651\u0631\u0627\u064b \u064a\u0641\u062a\u062d \u0637\u0644\u0628 \u062f\u0645\u062c \u0645\u0646 \u0641\u0631\u0639 \u0645\u064a\u0632\u0629 \u0644\u0627 \u064a\u0633\u062a\u0637\u064a\u0639 \u0643\u062a\u0627\u0628\u0629 \u062e\u0637\u0648\u0629 \u0641\u064a \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u062a\u0637\u0628\u0639 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f AWS \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643. \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631 \u0628\u0628\u0633\u0627\u0637\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f \u0641\u064a \u0628\u064a\u0626\u0629 \u0627\u0644\u0645\u0647\u0645\u0629 \u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0631\u0627\u062c\u0639 (refs) \u063a\u064a\u0631 \u0627\u0644\u0645\u062d\u0645\u064a\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0623\u0641\u0636\u0644 \u0627\u0644\u0645\u0645\u0627\u0631\u0633\u0627\u062a \u0644\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629:<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u0648\u0633\u0650\u0645 \u0643\u0644 \u0633\u0631\u0651 \u0625\u0646\u062a\u0627\u062c\u064a \u0628\u0623\u0646\u0647 \u0645\u062d\u0645\u064a. \u0644\u0627 \u064a\u0648\u062c\u062f \u0633\u0628\u0628 \u0648\u062c\u064a\u0647 \u0644\u0623\u0646 \u062a\u0635\u0644 \u0645\u0647\u0645\u0629 \u0639\u0644\u0649 \u0641\u0631\u0639 \u0645\u064a\u0632\u0629 \u0625\u0644\u0649 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0625\u0646\u062a\u0627\u062c.<\/li>\n<li>\u0642\u064a\u0651\u062f \u0645\u064e\u0646 \u064a\u0633\u062a\u0637\u064a\u0639 \u0627\u0644\u062f\u0641\u0639 \u0625\u0644\u0649 \u0627\u0644\u0641\u0631\u0648\u0639 \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0623\u0648 \u0627\u0644\u062f\u0645\u062c \u0641\u064a\u0647\u0627 (\u062f\u0648\u0631 Maintainer \u0641\u0645\u0627 \u0641\u0648\u0642). \u0647\u0630\u0627 \u064a\u064f\u0646\u0634\u0626 \u0628\u0648\u0627\u0628\u0629 \u0628\u0634\u0631\u064a\u0629 \u0642\u0628\u0644 \u0623\u0646 \u062a\u0635\u0628\u062d \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0645\u062a\u0627\u062d\u0629.<\/li>\n<li>\u0627\u0633\u062a\u062e\u062f\u0645 \u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0645\u062d\u062f\u0651\u062f\u0629 \u0627\u0644\u0646\u0637\u0627\u0642 \u062d\u0633\u0628 \u0627\u0644\u0628\u064a\u0626\u0629 \u0639\u0646\u062f\u0645\u0627 \u064a\u062e\u062a\u0644\u0641 \u0627\u0633\u0645 \u0627\u0644\u0633\u0631\u0651 \u0646\u0641\u0633\u0647 \u0628\u064a\u0646 staging \u0648production. \u0633\u064a\u062d\u0642\u0646 GitLab \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0635\u062d\u064a\u062d\u0629 \u0627\u0633\u062a\u0646\u0627\u062f\u0627\u064b \u0625\u0644\u0649 \u0627\u0644\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0641\u062a\u0627\u062d\u064a\u0629 <code>environment:<\/code> \u0641\u064a \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0645\u0647\u0645\u0629.<\/li>\n<li>\u062f\u0648\u0650\u0651\u0631 \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0628\u0627\u0646\u062a\u0638\u0627\u0645. \u062d\u062a\u0649 \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0642\u062f \u062a\u062a\u0633\u0631\u0651\u0628 \u0639\u0628\u0631 \u062a\u0633\u062c\u064a\u0644 (logging) \u0633\u064a\u0651\u0626 \u0627\u0644\u0625\u0639\u062f\u0627\u062f \u0623\u0648 runners \u0645\u062e\u062a\u0631\u064e\u0642\u0629.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u064f\u062e\u0641\u0627\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u0645\u0646\u0639 \u0627\u0644\u0625\u062e\u0641\u0627\u0621 \u0638\u0647\u0648\u0631 \u0642\u064a\u0645\u0629 \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631 \u0641\u064a \u0633\u062c\u0644\u0651\u0627\u062a \u0627\u0644\u0645\u0647\u0627\u0645. \u064a\u0633\u062a\u0628\u062f\u0644 GitLab \u0623\u064a \u0638\u0647\u0648\u0631 \u0644\u0644\u0642\u064a\u0645\u0629 \u0628\u0640<code>[MASKED]<\/code>. \u0627\u0644\u0625\u062e\u0641\u0627\u0621 \u0634\u0628\u0643\u0629 \u0623\u0645\u0627\u0646 \u0644\u0627 \u062d\u062f\u0651 \u0623\u0645\u0646\u064a: \u0641\u0647\u0648 \u064a\u062d\u0645\u064a \u0645\u0646 \u0627\u0644\u0643\u0634\u0641 \u0627\u0644\u0639\u064e\u0631\u064e\u0636\u064a (\u0645\u062b\u0644 \u0623\u0645\u0631 <code>curl<\/code> \u0645\u064f\u0637\u0646\u0650\u0628 \u064a\u0633\u062c\u0651\u0644 \u0627\u0644\u062a\u0631\u0648\u064a\u0633\u0627\u062a) \u0644\u0643\u0646\u0647 \u0644\u0627 \u064a\u0645\u0646\u0639 \u062e\u0637\u0648\u0629 \u0645\u0647\u0645\u0629 \u062e\u0628\u064a\u062b\u0629 \u0645\u0646 \u062a\u0631\u0645\u064a\u0632 \u0627\u0644\u0642\u064a\u0645\u0629 \u0628\u0640 Base64 \u0623\u0648 \u0643\u062a\u0627\u0628\u062a\u0647\u0627 \u0625\u0644\u0649 artifact.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u062c\u0645\u0639 \u0628\u064a\u0646 \u0627\u0644\u062d\u0645\u0627\u064a\u0629 \u0648\u0627\u0644\u0625\u062e\u0641\u0627\u0621.<\/strong> \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631 \u0627\u0644\u0645\u062d\u0645\u064a <em>\u0648<\/em>\u0627\u0644\u0645\u064f\u062e\u0641\u0649 \u0641\u064a \u0622\u0646\u064d \u064a\u0645\u0646\u062d\u0643 \u0623\u0642\u0648\u0649 \u062f\u0641\u0627\u0639 \u0645\u064f\u062f\u0645\u064e\u062c: \u0646\u0637\u0627\u0642 \u0641\u0631\u0639 \u0645\u062d\u062f\u0648\u062f \u0625\u0636\u0627\u0641\u0629\u064b \u0625\u0644\u0649 \u062a\u0646\u0642\u064a\u062d \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0633\u062c\u0644\u0651.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0640 Runners \u0648\u062a\u062d\u062f\u064a\u062f \u0646\u0637\u0627\u0642\u0647\u0627<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0640 runners \u0647\u064a \u0627\u0644\u0645\u0643\u0627\u0646 \u0627\u0644\u0630\u064a \u062a\u064f\u0646\u0641\u064e\u0651\u0630 \u0641\u064a\u0647 \u0634\u064a\u0641\u0631\u062a\u0643 \u0641\u0639\u0644\u064a\u0627\u064b. \u0641\u0647\u0645 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0640 runners \u0648\u0622\u062b\u0627\u0631\u0647\u0627 \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0623\u0645\u0631 \u062c\u0648\u0647\u0631\u064a \u0644\u0628\u064a\u0626\u0629 GitLab CI \u0645\u064f\u0642\u0648\u0651\u0627\u0629.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0640 Runners \u0627\u0644\u0645\u0634\u062a\u0631\u0643\u0629 \u0648\u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0648\u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u062f\u0639\u0645 GitLab \u062b\u0644\u0627\u062b\u0629 \u0646\u0637\u0627\u0642\u0627\u062a \u0644\u0644\u0640 runners:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0627\u0644\u0640 Runners \u0627\u0644\u0645\u0634\u062a\u0631\u0643\u0629<\/strong> \u2014 \u0645\u062a\u0627\u062d\u0629 \u0644\u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0641\u064a \u0627\u0644\u062a\u0646\u0635\u064a\u0628. \u0645\u0631\u064a\u062d\u0629 \u0644\u0643\u0646\u0647\u0627 \u0627\u0644\u0623\u0639\u0644\u0649 \u062e\u0637\u0631\u0627\u064b: \u0641\u0642\u062f \u064a\u062a\u0631\u0643 \u0645\u0634\u0631\u0648\u0639 \u062e\u0628\u064a\u062b \u0645\u062e\u0631\u062c\u0627\u062a \u0623\u0648 \u0630\u0648\u0627\u0643\u0631 \u062a\u062e\u0632\u064a\u0646 \u0645\u0624\u0642\u062a (caches) \u0623\u0648 \u0639\u0645\u0644\u064a\u0627\u062a \u062a\u0624\u062b\u0651\u0631 \u0641\u064a \u0627\u0644\u0645\u0647\u0645\u0629 \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u0627\u0644\u0642\u0627\u062f\u0645\u0629 \u0645\u0646 \u0645\u0634\u0631\u0648\u0639 \u063a\u064a\u0631 \u0630\u064a \u0635\u0644\u0629.<\/li>\n<li><strong>\u0627\u0644\u0640 Runners \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629<\/strong> \u2014 \u0645\u062a\u0627\u062d\u0629 \u0644\u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u062f\u0627\u062e\u0644 \u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u062d\u062f\u0651\u062f\u0629. \u062d\u0644\u0651 \u0648\u0633\u0637 \u0645\u0639\u0642\u0648\u0644 \u064a\u062d\u062f\u0651 \u0645\u0646 \u0627\u0644\u062a\u0639\u0631\u0651\u0636 \u0627\u0644\u0639\u0627\u0628\u0631 \u0644\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0645\u0639 \u062a\u0642\u0644\u064a\u0644 \u0639\u0628\u0621 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0640 runners.<\/li>\n<li><strong>\u0627\u0644\u0640 Runners \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/strong> \u2014 \u0645\u062e\u0635\u0651\u0635\u0629 \u0644\u0645\u0634\u0631\u0648\u0639 \u0648\u0627\u062d\u062f. \u0623\u0642\u0635\u0649 \u0639\u0632\u0644\u060c \u0644\u0643\u0646 \u0628\u0643\u0644\u0641\u0629 \u062a\u0634\u063a\u064a\u0644\u064a\u0629 \u0623\u0639\u0644\u0649. \u064a\u064f\u0648\u0635\u0649 \u0628\u0647\u0627 \u0644\u0644\u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a \u0639\u0627\u0644\u064a\u0629 \u0627\u0644\u0623\u0645\u0627\u0646 \u0627\u0644\u062a\u064a \u062a\u062a\u0639\u0627\u0645\u0644 \u0645\u0639 \u0623\u0633\u0631\u0627\u0631 \u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0623\u0648 \u0628\u064a\u0627\u0646\u0627\u062a \u0639\u0645\u0644\u0627\u0621 \u062d\u0633\u0651\u0627\u0633\u0629.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0640 Runners \u0627\u0644\u0645\u062d\u0645\u064a\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u0645\u0643\u0646 \u0648\u0633\u0645 \u0623\u064a runner \u0628\u0623\u0646\u0647 <strong>\u0645\u062d\u0645\u064a<\/strong>. \u0644\u0627 \u064a\u0644\u062a\u0642\u0637 \u0627\u0644\u0640 runner \u0627\u0644\u0645\u062d\u0645\u064a \u0625\u0644\u0627 \u0627\u0644\u0645\u0647\u0627\u0645 \u0627\u0644\u0642\u0627\u062f\u0645\u0629 \u0645\u0646 \u0627\u0644\u0641\u0631\u0648\u0639 \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0623\u0648 \u0627\u0644\u0648\u0633\u0648\u0645 \u0627\u0644\u0645\u062d\u0645\u064a\u0629. \u0647\u0630\u0627 \u064a\u0642\u062a\u0631\u0646 \u0637\u0628\u064a\u0639\u064a\u0627\u064b \u0645\u0639 \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629: \u0641\u0640 runner \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a \u0644\u062f\u064a\u0643 \u064a\u0646\u0641\u0651\u0630 \u0641\u0642\u0637 \u0639\u0644\u0649 <code>main<\/code>\u060c \u0648\u0627\u0644\u0645\u0647\u0627\u0645 \u0639\u0644\u0649 <code>main<\/code> \u0648\u062d\u062f\u0647\u0627 \u0647\u064a \u0627\u0644\u062a\u064a \u062a\u0635\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0642\u0627\u0626\u0645\u0629 \u062a\u062d\u0642\u0642 \u062a\u0642\u0648\u064a\u0629 \u0627\u0644\u0640 Runner:<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0633\u062a\u062e\u062f\u0645 runners \u0633\u0631\u064a\u0639\u0629 \u0627\u0644\u0632\u0648\u0627\u0644 (\u062a\u064f\u0648\u0633\u064e\u0651\u0639 \u062a\u0644\u0642\u0627\u0626\u064a\u0627\u064b \u0648\u062a\u064f\u062f\u0645\u064e\u0651\u0631 \u0628\u0639\u062f \u0643\u0644 \u0645\u0647\u0645\u0629) \u0644\u0644\u0642\u0636\u0627\u0621 \u0639\u0644\u0649 \u0628\u0642\u0627\u0621 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0628\u064a\u0646 \u0627\u0644\u0645\u0647\u0627\u0645.<\/li>\n<li>\u0644\u0627 \u062a\u0634\u063a\u0651\u0644 Docker-in-Docker \u0628\u0648\u0636\u0639 <code>--privileged<\/code> \u0625\u0644\u0627 \u0639\u0646\u062f \u0627\u0644\u0636\u0631\u0648\u0631\u0629 \u0627\u0644\u0642\u0635\u0648\u0649\u060c \u0648\u0627\u0639\u0632\u0644 \u062a\u0644\u0643 \u0627\u0644\u0640 runners \u0641\u064a \u0645\u062c\u0645\u0648\u0639\u0629 \u0623\u0645\u0627\u0646 \u0645\u062e\u0635\u0651\u0635\u0629.<\/li>\n<li>\u0639\u0637\u0651\u0644 \u0645\u064f\u0646\u0641\u0651\u0630 \u0627\u0644\u0635\u062f\u0641\u0629 (shell executor) \u0639\u0644\u0649 \u0627\u0644\u0640 runners \u0627\u0644\u0645\u0634\u062a\u0631\u0643\u0629. \u0627\u0633\u062a\u062e\u062f\u0645 \u0645\u064f\u0646\u0641\u0651\u0630\u0627\u062a Docker \u0623\u0648 Kubernetes \u0628\u0633\u064a\u0627\u0642\u0627\u062a \u0623\u0645\u0627\u0646 \u0645\u0642\u064a\u0651\u062f\u0629.<\/li>\n<li>\u0648\u0633\u0650\u0645 runners \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a \u0648\u0627\u062d\u0635\u0631\u0647\u0627 \u0641\u064a \u0645\u0634\u0627\u0631\u064a\u0639 \u0645\u062d\u062f\u0651\u062f\u0629 \u0648\u0641\u0631\u0648\u0639 \u0645\u062d\u0645\u064a\u0629.<\/li>\n<li>\u062f\u0642\u0651\u0642 \u0641\u064a \u0631\u0645\u0648\u0632 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0640 runner (registration tokens) \u2014 \u062f\u0648\u0651\u0631\u0647\u0627 \u0628\u0627\u0646\u062a\u0638\u0627\u0645 \u0648\u0623\u0644\u063a\u0650 \u0623\u064a \u0631\u0645\u0632 \u0645\u064f\u0633\u0631\u064e\u0651\u0628 \u0641\u0648\u0631\u0627\u064b.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u0628\u064a\u0626\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0648\u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0634\u0631<\/h2>\n\n<p class=\"wp-block-paragraph\">\u062a\u0645\u062b\u0651\u0644 \u0628\u064a\u0626\u0627\u062a GitLab \u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u0646\u0634\u0631 \u0645\u062b\u0644 <code>staging<\/code> \u0623\u0648 <code>production<\/code> \u0623\u0648 <code>canary<\/code>. \u062d\u0645\u0627\u064a\u0629 \u0627\u0644\u0628\u064a\u0626\u0629 \u062a\u0636\u064a\u0641 \u0637\u0628\u0642\u0629 \u062a\u0641\u0648\u064a\u0636 \u062a\u062a\u062c\u0627\u0648\u0632 \u062d\u0645\u0627\u064a\u0629 \u0627\u0644\u0641\u0631\u0648\u0639.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0643\u064a\u0641 \u062a\u0639\u0645\u0644 \u0627\u0644\u0628\u064a\u0626\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0639\u0646\u062f\u0645\u0627 \u062a\u062d\u0645\u064a \u0628\u064a\u0626\u0629\u060c \u062a\u062d\u062f\u0651\u062f \u0623\u064a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0623\u0648 \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0627\u062a \u064a\u064f\u0633\u0645\u062d \u0644\u0647\u0645 \u0628\u0627\u0644\u0646\u0634\u0631 \u0625\u0644\u064a\u0647\u0627. \u0648\u062d\u062a\u0649 \u0625\u0646 \u0643\u0627\u0646 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u064a\u0639\u0645\u0644 \u0639\u0644\u0649 \u0641\u0631\u0639 \u0645\u062d\u0645\u064a\u060c \u0644\u0646 \u062a\u064f\u0646\u0641\u064e\u0651\u0630 \u0645\u0647\u0645\u0629 \u0627\u0644\u0646\u0634\u0631 \u0645\u0627 \u0644\u0645 \u064a\u0645\u062a\u0644\u0643 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0630\u064a \u0623\u0637\u0644\u0642\u0647\u0627 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629. \u0647\u0630\u0627 \u064a\u064f\u0646\u0634\u0626 \u0641\u0635\u0644\u0627\u064b \u0641\u064a \u0627\u0644\u0645\u0647\u0627\u0645: \u0628\u0625\u0645\u0643\u0627\u0646 \u0627\u0644\u0645\u0637\u0648\u0651\u0631\u064a\u0646 \u062f\u0645\u062c \u0627\u0644\u0634\u064a\u0641\u0631\u0629\u060c \u0644\u0643\u0646 \u0627\u0644\u0646\u0627\u0634\u0631\u064a\u0646 \u0627\u0644\u0645\u0639\u064a\u0651\u0646\u064a\u0646 \u0648\u062d\u062f\u0647\u0645 \u064a\u0633\u062a\u0637\u064a\u0639\u0648\u0646 \u062f\u0641\u0639\u0647\u0627 \u0625\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0627\u062c.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0634\u0631 (Premium\/Ultimate)<\/h3>\n\n<p class=\"wp-block-paragraph\">\u062a\u064f\u0642\u062f\u0651\u0645 \u0641\u0626\u062a\u0627 GitLab Premium \u0648Ultimate <strong>\u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0634\u0631<\/strong> \u2014 \u0622\u0644\u064a\u0629 \u062a\u0648\u0642\u0650\u0641 \u0645\u0647\u0645\u0629 \u0627\u0644\u0646\u0634\u0631 \u0648\u062a\u0646\u062a\u0638\u0631 \u0623\u0646 \u064a\u0645\u0646\u062d \u0645\u064f\u0648\u0627\u0641\u0650\u0642 \u0645\u0639\u064a\u0651\u0646 \u0648\u0627\u062d\u062f \u0623\u0648 \u0623\u0643\u062b\u0631 \u0627\u0644\u0636\u0648\u0621 \u0627\u0644\u0623\u062e\u0636\u0631. \u0647\u0630\u0627 \u0644\u0627 \u064a\u064f\u0642\u062f\u064e\u0651\u0631 \u0628\u062b\u0645\u0646 \u0641\u064a \u0627\u0644\u0628\u064a\u0626\u0627\u062a \u0627\u0644\u062e\u0627\u0636\u0639\u0629 \u0644\u0644\u062a\u0646\u0638\u064a\u0645 \u062d\u064a\u062b \u062a\u062a\u0637\u0644\u0651\u0628 \u0639\u0645\u0644\u064a\u0627\u062a \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062a\u063a\u064a\u064a\u0631 \u0645\u0648\u0627\u0641\u0642\u0629 \u0628\u0634\u0631\u064a\u0629 \u0642\u0628\u0644 \u0628\u062b\u0651 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0646\u0635\u0627\u0626\u062d \u0644\u0644\u0625\u0639\u062f\u0627\u062f:<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0634\u062a\u0631\u0637 \u0645\u064f\u0648\u0627\u0641\u0650\u0642\u064e\u064a\u0646 \u0627\u062b\u0646\u064a\u0646 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0644\u0645\u0646\u0639 \u0627\u062e\u062a\u0631\u0627\u0642 \u0634\u062e\u0635 \u0648\u0627\u062d\u062f.<\/li>\n<li>\u0627\u0636\u0628\u0637 \u0642\u0648\u0627\u0639\u062f \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0643\u064a \u062a\u064f\u0637\u0628\u064e\u0651\u0642 \u0628\u0627\u062a\u0633\u0627\u0642 \u0639\u0628\u0631 \u0643\u0644 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u062f\u0627\u062e\u0644 \u0648\u062d\u062f\u0629 \u0639\u0645\u0644.<\/li>\n<li>\u0627\u062c\u0645\u0639 \u0628\u064a\u0646 \u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0648\u0627\u0644\u0640 runners \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0648\u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u062f\u0641\u0627\u0639 \u0645\u062a\u0639\u062f\u0651\u062f \u0627\u0644\u0637\u0628\u0642\u0627\u062a.<\/li>\n<li>\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0641\u062a\u0627\u062d\u064a\u0629 <code>environment: deployment_tier<\/code> \u0644\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0628\u064a\u0626\u0627\u062a (production\u060c staging\u060c testing\u060c development) \u0648\u062a\u0637\u0628\u064a\u0642 \u0633\u064a\u0627\u0633\u0627\u062a \u0645\u0644\u0627\u0626\u0645\u0629 \u0644\u0643\u0644 \u0637\u0628\u0642\u0629.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u062a\u062d\u062f\u064a\u062f \u0646\u0637\u0627\u0642 CI_JOB_TOKEN<\/h2>\n\n<p class=\"wp-block-paragraph\">\u062a\u062a\u0644\u0642\u0651\u0649 \u0643\u0644 \u0645\u0647\u0645\u0629 GitLab CI \u0631\u0645\u0632 <code>CI_JOB_TOKEN<\/code> \u0645\u064f\u0648\u0644\u0651\u062f\u0627\u064b \u062a\u0644\u0642\u0627\u0626\u064a\u0627\u064b \u2014 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0642\u0635\u064a\u0631\u0629 \u0627\u0644\u0639\u0645\u0631 \u062a\u064f\u0635\u0627\u062f\u0650\u0642 \u0627\u0644\u0645\u0647\u0645\u0629 \u0644\u062f\u0649 \u0648\u0627\u062c\u0647\u0629 GitLab API \u0648\u0633\u062c\u0644\u0651 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0648\u0633\u062c\u0644\u0651 \u0627\u0644\u062d\u0650\u0632\u0645. \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0627\u064b\u060c \u064a\u0633\u062a\u0637\u064a\u0639 \u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0645\u0648\u0627\u0631\u062f \u0639\u0628\u0631 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639\u060c \u0645\u0627 \u064a\u062e\u0644\u0642 \u062e\u0637\u0631 \u062a\u062d\u0631\u0651\u0643 \u0623\u0641\u0642\u064a.<\/p>\n\n<h3 class=\"wp-block-heading\">\u062a\u0642\u064a\u064a\u062f \u0648\u0635\u0648\u0644 CI_JOB_TOKEN<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0642\u062f\u0651\u0645 GitLab \u0641\u064a \u0627\u0644\u0625\u0635\u062f\u0627\u0631 15.9 \u0641\u0645\u0627 \u0641\u0648\u0642 \u0636\u0648\u0627\u0628\u0637 <strong>\u0646\u0637\u0627\u0642 \u0631\u0645\u0632 \u0645\u0647\u0645\u0629 CI\/CD<\/strong>. \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0622\u0646 \u0625\u0639\u062f\u0627\u062f \u0642\u0627\u0626\u0645\u0629 \u0633\u0645\u0627\u062d (allowlist) \u0628\u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u062a\u064a \u064a\u0633\u062a\u0637\u064a\u0639 <code>CI_JOB_TOKEN<\/code> \u0627\u0644\u062e\u0627\u0635 \u0628\u0645\u0634\u0631\u0648\u0639 \u0645\u0639\u064a\u0651\u0646 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u064a\u0647\u0627. \u0647\u0630\u0627 \u0625\u0639\u062f\u0627\u062f \u064a\u062c\u0628 \u062a\u0641\u0639\u064a\u0644\u0647 \u0644\u0623\u064a \u0645\u0624\u0633\u0633\u0629 \u0648\u0627\u0639\u064a\u0629 \u0623\u0645\u0646\u064a\u0627\u064b.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0637\u0648\u0627\u062a \u062a\u0642\u0648\u064a\u0629 CI_JOB_TOKEN:<\/strong><\/p>\n\n<ol class=\"wp-block-list\">\n<li>\u0627\u0646\u062a\u0642\u0644 \u0625\u0644\u0649 <strong>Settings &gt; CI\/CD &gt; Token Access<\/strong> \u0641\u064a \u0645\u0634\u0631\u0648\u0639\u0643.<\/li>\n<li>\u0641\u0639\u0651\u0644 <strong>Limit CI_JOB_TOKEN access<\/strong> (\u0647\u0630\u0627 \u064a\u0642\u0635\u0631 \u0627\u0644\u0631\u0645\u0632 \u0639\u0644\u0649 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0627\u0644\u062d\u0627\u0644\u064a \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0627\u064b).<\/li>\n<li>\u0623\u0636\u0650\u0641 \u0641\u0642\u0637 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u0645\u062d\u062f\u0651\u062f\u0629 \u0627\u0644\u062a\u064a \u062a\u062d\u062a\u0627\u062c \u0645\u0647\u0627\u0645 \u0647\u0630\u0627 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0625\u0644\u0649 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u064a\u0647\u0627 \u0628\u0634\u0643\u0644 \u0645\u0634\u0631\u0648\u0639.<\/li>\n<li>\u0631\u0627\u062c\u0650\u0639 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0633\u0645\u0627\u062d \u0643\u0644 \u0631\u0628\u0639 \u0633\u0646\u0629 \u0648\u0623\u0632\u0650\u0644 \u0627\u0644\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0645\u062a\u0642\u0627\u062f\u0645\u0629.<\/li>\n<\/ol>\n\n<p class=\"wp-block-paragraph\">\u0645\u0639 \u0627\u0644\u0631\u0645\u0648\u0632 \u0645\u062d\u062f\u0651\u062f\u0629 \u0627\u0644\u0646\u0637\u0627\u0642\u060c \u062d\u062a\u0649 \u0644\u0648 \u0627\u062e\u062a\u0631\u0642 \u0645\u0647\u0627\u062c\u0645 \u0645\u0647\u0645\u0629 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628\u060c \u064a\u0628\u0642\u0649 \u0646\u0637\u0627\u0642 \u0627\u0644\u0636\u0631\u0631 \u0645\u062d\u0635\u0648\u0631\u0627\u064b \u0641\u064a \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627 \u0635\u0631\u0627\u062d\u0629\u064b \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0643\u0627\u0645\u0644 \u062a\u0646\u0635\u064a\u0628 GitLab.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0627\u062a\u062d\u0627\u062f \u0627\u0644\u0647\u0648\u064a\u0629 \u0639\u0628\u0631 OIDC \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 id_tokens<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0627\u0644\u0645\u0636\u0645\u0651\u0646\u0629 \u0628\u0634\u0643\u0644 \u0635\u0644\u0628 \u0641\u064a \u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a CI \u062e\u0637\u0631 \u0623\u0645\u0646\u064a \u062f\u0627\u0626\u0645. \u064a\u0642\u0636\u064a \u062f\u0639\u0645 <strong>OIDC (OpenID Connect)<\/strong> \u0641\u064a GitLab \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062e\u0637\u0631 \u062a\u0645\u0627\u0645\u0627\u064b \u0628\u0627\u0644\u0633\u0645\u0627\u062d \u0644\u0645\u0647\u0627\u0645 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0628\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0644\u062f\u0649 \u0645\u0632\u0648\u0651\u062f\u064a \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0631\u0645\u0648\u0632 \u0642\u0635\u064a\u0631\u0629 \u0627\u0644\u0639\u0645\u0631 \u0645\u064f\u0648\u0642\u064e\u0651\u0639\u0629 \u062a\u0634\u0641\u064a\u0631\u064a\u0627\u064b.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0643\u064a\u0641 \u064a\u0639\u0645\u0644<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0639\u0646\u062f\u0645\u0627 \u062a\u0639\u0631\u0651\u0641 \u0643\u062a\u0644\u0629 <code>id_tokens<\/code> \u0641\u064a \u0645\u0644\u0641 <code>.gitlab-ci.yml<\/code>\u060c \u064a\u064f\u0648\u0644\u0651\u062f GitLab \u0631\u0645\u0632 JWT \u0645\u064f\u0648\u0642\u064e\u0651\u0639\u0627\u064b \u0644\u0643\u0644 \u0645\u0647\u0645\u0629. \u064a\u062d\u062a\u0648\u064a \u0631\u0645\u0632 JWT \u0639\u0644\u0649 \u0627\u062f\u0651\u0639\u0627\u0621\u0627\u062a (claims) \u062d\u0648\u0644 \u0627\u0644\u0645\u0647\u0645\u0629 \u2014 \u0645\u0633\u0627\u0631 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\u060c \u0627\u0633\u0645 \u0627\u0644\u0645\u0631\u062c\u0639\u060c \u0627\u0644\u0628\u064a\u0626\u0629\u060c \u0645\u0635\u062f\u0631 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u2014 \u064a\u0645\u0643\u0646 \u0644\u0645\u0632\u0648\u0651\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u062a\u0642\u064a\u064a\u0645\u0647\u0627 \u0625\u0632\u0627\u0621 \u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062b\u0642\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0647.<\/p>\n\n<pre><code>deploy_production:\n  id_tokens:\n    GITLAB_OIDC_TOKEN:\n      aud: https:\/\/aws.example.com\n  script:\n    - |\n      export AWS_WEB_IDENTITY_TOKEN_FILE=$(mktemp)\n      echo \"$GITLAB_OIDC_TOKEN\" > $AWS_WEB_IDENTITY_TOKEN_FILE\n      aws sts assume-role-with-web-identity \\\n        --role-arn arn:aws:iam::123456789012:role\/gitlab-deploy \\\n        --web-identity-token file:\/\/$AWS_WEB_IDENTITY_TOKEN_FILE\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0649 \u062c\u0627\u0646\u0628 \u0627\u0644\u0633\u062d\u0627\u0628\u0629 (AWS\u060c GCP\u060c Azure)\u060c \u062a\u064f\u0639\u0650\u062f\u0651 \u0633\u064a\u0627\u0633\u0629 \u062b\u0642\u0629 \u0644\u0627 \u062a\u0642\u0628\u0644 \u0625\u0644\u0627 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u0642\u0627\u062f\u0645\u0629 \u0645\u0646 \u0645\u0634\u0627\u0631\u064a\u0639 \u0648\u0641\u0631\u0648\u0639 \u0648\u0628\u064a\u0626\u0627\u062a \u0645\u062d\u062f\u0651\u062f\u0629. \u0648\u0647\u0630\u0627 \u064a\u0639\u0646\u064a:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0644\u0627 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u062b\u0627\u0628\u062a\u0629<\/strong> \u0644\u062a\u062f\u0648\u064a\u0631\u0647\u0627 \u0623\u0648 \u062a\u0633\u0631\u064a\u0628\u0647\u0627.<\/li>\n<li><strong>\u0648\u0635\u0648\u0644 \u062f\u0642\u064a\u0642 \u0627\u0644\u062d\u0628\u064a\u0628\u0627\u062a<\/strong> \u2014 \u064a\u0645\u0643\u0646 \u0644\u0645\u0632\u0648\u0651\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0631\u0641\u0636 \u0631\u0645\u0632 \u0642\u0627\u062f\u0645 \u0645\u0646 \u0641\u0631\u0639 \u0645\u064a\u0632\u0629\u060c \u062d\u062a\u0649 \u0644\u0648 \u0643\u0627\u0646 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0635\u0627\u0644\u062d\u0627\u064b \u0641\u064a\u0645\u0627 \u0639\u062f\u0627 \u0630\u0644\u0643.<\/li>\n<li><strong>\u0642\u0627\u0628\u0644\u064a\u0629 \u0627\u0644\u062a\u062f\u0642\u064a\u0642<\/strong> \u2014 \u0643\u0644 \u062d\u062f\u062b \u0645\u0635\u0627\u062f\u0642\u0629 \u064a\u064f\u0633\u062c\u064e\u0651\u0644 \u0645\u0639 \u0643\u0627\u0645\u0644 \u0627\u062f\u0651\u0639\u0627\u0621\u0627\u062a \u0631\u0645\u0632 JWT.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">\u0644\u062a\u0639\u0645\u0651\u0642 \u0641\u064a \u0623\u0646\u0645\u0627\u0637 \u0627\u062a\u062d\u0627\u062f \u0627\u0644\u0647\u0648\u064a\u0629 \u0639\u0628\u0631 OIDC \u0639\u0628\u0631 AWS \u0648GCP \u0648Azure\u060c \u0637\u0627\u0644\u0650\u0639 \u062f\u0644\u064a\u0644\u0646\u0627 \u0627\u0644\u0645\u062e\u0635\u0651\u0635: <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/short-lived-credentials-workload-identity-federation-ci-cd\/\">\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0642\u0635\u064a\u0631\u0629 \u0627\u0644\u0639\u0645\u0631 \u0648\u0627\u062a\u062d\u0627\u062f \u0647\u0648\u064a\u0629 \u0623\u062d\u0645\u0627\u0644 \u0627\u0644\u0639\u0645\u0644 \u0644\u0640 CI\/CD<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0623\u0645\u0627\u0646 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062f\u0645\u062c<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062f\u0645\u062c \u0647\u064a \u0627\u0644\u0645\u062a\u0651\u062c\u0647 \u0627\u0644\u0623\u0643\u062b\u0631 \u0634\u064a\u0648\u0639\u0627\u064b \u0644\u062d\u0642\u0646 \u0634\u064a\u0641\u0631\u0629 \u062e\u0628\u064a\u062b\u0629 \u0641\u064a \u062e\u0637\u0648\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628. \u0641\u0628\u0625\u0645\u0643\u0627\u0646 \u0645\u0633\u0627\u0647\u0645 \u062e\u0627\u0631\u062c\u064a (\u0623\u0648 \u062d\u0633\u0627\u0628 \u0645\u062e\u062a\u0631\u064e\u0642) \u062a\u0642\u062f\u064a\u0645 \u0637\u0644\u0628 \u062f\u0645\u062c \u064a\u0639\u062f\u0651\u0644 <code>.gitlab-ci.yml<\/code> \u0644\u062a\u0633\u0631\u064a\u0628 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0623\u0648 \u062a\u0631\u0633\u064a\u062e \u0648\u062c\u0648\u062f \u062f\u0627\u0626\u0645.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u062d\u0645\u0627\u064a\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0627\u0633\u062a\u062e\u062f\u0645 <code>rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event'<\/code><\/strong> \u0644\u0625\u0646\u0634\u0627\u0621 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 MR \u0645\u062e\u0635\u0651\u0635\u0629 \u062a\u0639\u0645\u0644 \u0628\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0645\u062e\u0641\u0651\u0636\u0629. \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 MR \u0627\u0644\u0642\u0627\u062f\u0645\u0629 \u0645\u0646 forks \u0644\u0627 \u062a\u0635\u0644 \u0625\u0644\u0649 \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0627\u064b.<\/li>\n<li><strong>\u0627\u0634\u062a\u0631\u0637 \u0646\u062c\u0627\u062d \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0642\u0628\u0644 \u0627\u0644\u062f\u0645\u062c.<\/strong> \u0647\u0630\u0627 \u064a\u0636\u0645\u0646 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u062d\u0648\u0635 \u0627\u0644\u0623\u0645\u0646\u064a\u0629 (SAST\u060c \u0641\u062d\u0635 \u0627\u0644\u062a\u0628\u0639\u064a\u0627\u062a\u060c \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631) \u0639\u0644\u0649 \u0643\u0644 MR.<\/li>\n<li><strong>\u0627\u062d\u0635\u0631 <code>include:<\/code> \u0641\u064a \u0645\u0635\u0627\u062f\u0631 \u0645\u0648\u062b\u0648\u0642\u0629.<\/strong> \u064a\u0645\u0643\u0646 \u0644\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062f\u0645\u062c \u0627\u0644\u062e\u0628\u064a\u062b\u0629 \u0625\u0636\u0627\u0641\u0629 \u062a\u0648\u062c\u064a\u0647\u0627\u062a <code>include: remote:<\/code> \u062a\u0633\u062d\u0628 YAML \u064a\u062a\u062d\u0643\u0651\u0645 \u0641\u064a\u0647 \u0627\u0644\u0645\u0647\u0627\u062c\u0645. \u0627\u0633\u062a\u062e\u062f\u0645 \u0642\u0627\u0626\u0645\u0629 \u0633\u0645\u0627\u062d \u0628\u0646\u0637\u0627\u0642\u0627\u062a \u0627\u0644\u0640 include \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627 \u0623\u0648 \u062b\u0628\u0651\u062a \u0639\u0644\u0649 \u0645\u0631\u0627\u062c\u0639 \u0645\u062d\u062f\u0651\u062f\u0629.<\/li>\n<li><strong>\u0641\u0639\u0651\u0644 \u00abPipelines must succeed\u00bb \u0648\u00abAll threads must be resolved\u00bb<\/strong> \u0641\u064a \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062f\u0645\u062c \u0628\u0645\u0634\u0631\u0648\u0639\u0643.<\/li>\n<li><strong>\u0631\u0627\u062c\u0650\u0639 \u062a\u063a\u064a\u064a\u0631\u0627\u062a <code>.gitlab-ci.yml<\/code> \u0628\u0639\u0646\u0627\u064a\u0629.<\/strong> \u0623\u064a MR \u064a\u0639\u062f\u0651\u0644 \u0625\u0639\u062f\u0627\u062f \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u064a\u0646\u0628\u063a\u064a \u0623\u0646 \u064a\u0633\u062a\u0644\u0632\u0645 \u0645\u0648\u0627\u0641\u0642\u0629 \u0645\u0631\u0627\u062c\u0650\u0639 \u0648\u0627\u0639\u064d \u0623\u0645\u0646\u064a\u0627\u064b.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0642\u064a\u0648\u062f \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0640 Fork<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u0639\u0627\u0645\u0629 \u0623\u0648 \u0645\u0641\u062a\u0648\u062d\u0629 \u0627\u0644\u0645\u0635\u062f\u0631\u060c \u062a\u0637\u0631\u062d \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0640 fork \u0645\u062e\u0627\u0637\u0631 \u0625\u0636\u0627\u0641\u064a\u0629. \u064a\u062a\u064a\u062d \u0644\u0643 GitLab:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u062a\u0634\u063a\u064a\u0644 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0640 fork \u0641\u064a \u0648\u0636\u0639 \u0645\u0642\u064a\u0651\u062f \u062f\u0648\u0646 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a CI \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0627\u0644\u0645\u0634\u0631\u0648\u0639.<\/li>\n<li>\u0627\u0634\u062a\u0631\u0627\u0637 \u0645\u0648\u0627\u0641\u0642\u0629 \u064a\u062f\u0648\u064a\u0629 \u0642\u0628\u0644 \u062a\u0634\u063a\u064a\u0644 \u062e\u0637\u0648\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0642\u0627\u062f\u0645\u0629 \u0645\u0646 forks (\u0645\u062a\u0627\u062d \u0641\u064a Premium\/Ultimate).<\/li>\n<li>\u0627\u0633\u062a\u062e\u062f\u0627\u0645 runners \u0645\u0646\u0641\u0635\u0644\u0629 \u063a\u064a\u0631 \u0645\u0645\u064a\u0651\u0632\u0629 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0644\u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0640 fork.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0639\u0628\u0631 \u0642\u0648\u0627\u0644\u0628 SAST \u0627\u0644\u0645\u064f\u062f\u0645\u062c\u0629<\/h2>\n\n<p class=\"wp-block-paragraph\">\u064a\u0623\u062a\u064a GitLab \u0645\u0639 \u0642\u0648\u0627\u0644\u0628 SAST (\u0627\u062e\u062a\u0628\u0627\u0631 \u0623\u0645\u0627\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0627\u0644\u0633\u0627\u0643\u0646) \u0645\u064f\u062f\u0645\u062c\u0629 \u062a\u0634\u0645\u0644 \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631. \u062a\u0641\u0639\u064a\u0644\u0647\u0627 \u0645\u0628\u0627\u0634\u0650\u0631:<\/p>\n\n<pre><code>include:\n  - template: Jobs\/Secret-Detection.gitlab-ci.yml\n  - template: Jobs\/SAST.gitlab-ci.yml\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u064a\u0633\u062a\u062e\u062f\u0645 \u0645\u0627\u0633\u062d \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0623\u0646\u0645\u0627\u0637 \u0648\u062a\u062d\u0644\u064a\u0644 \u0627\u0644\u0625\u0646\u062a\u0631\u0648\u0628\u064a\u0627 \u0644\u062a\u062d\u062f\u064a\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0645\u064f\u0633\u0631\u064e\u0651\u0628\u0629 \u0648\u0645\u0641\u0627\u062a\u064a\u062d API \u0648\u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u062e\u0627\u0635\u0629 \u0648\u0627\u0644\u0631\u0645\u0648\u0632 \u0641\u064a \u0634\u064a\u0641\u0631\u062a\u0643. \u062a\u0638\u0647\u0631 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0641\u064a \u0639\u0646\u0635\u0631 \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0623\u0645\u0627\u0646 (security widget) \u0627\u0644\u062e\u0627\u0635 \u0628\u0637\u0644\u0628 \u0627\u0644\u062f\u0645\u062c\u060c \u0645\u0627 \u064a\u0633\u0647\u0651\u0644 \u0639\u0644\u0649 \u0627\u0644\u0645\u0631\u0627\u062c\u0650\u0639\u064a\u0646 \u0631\u0635\u062f \u0627\u0644\u062a\u0633\u0631\u064a\u0628\u0627\u062a \u0642\u0628\u0644 \u0623\u0646 \u062a\u0635\u0644 \u0625\u0644\u0649 \u0627\u0644\u0641\u0631\u0639 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0639\u0638\u064a\u0645 \u0641\u0639\u0627\u0644\u064a\u0629 \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631:<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u0641\u0639\u0651\u0644 <strong>\u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628<\/strong> (\u0644\u0627 \u0627\u0644\u0641\u062d\u0635 \u0627\u0644\u062a\u0627\u0631\u064a\u062e\u064a \u0641\u062d\u0633\u0628) \u0643\u064a \u064a\u064f\u0641\u062d\u064e\u0635 \u0643\u0644 commit.<\/li>\n<li>\u0627\u0636\u0628\u0637 <strong>\u0642\u0648\u0627\u0639\u062f \u0627\u0644\u062f\u0641\u0639 (push rules)<\/strong> \u0644\u0631\u0641\u0636 \u0627\u0644\u0640 commits \u0627\u0644\u062a\u064a \u062a\u062d\u062a\u0648\u064a \u0623\u0646\u0645\u0627\u0637 \u0623\u0633\u0631\u0627\u0631 \u0645\u0639\u0631\u0648\u0641\u0629 (\u0645\u062b\u0644 <code>AKIA<\/code> \u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0648\u0635\u0648\u0644 AWS).<\/li>\n<li>\u062a\u0643\u0627\u0645\u0644 \u0645\u0639 <strong>\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0641\u064a GitLab<\/strong> \u0644\u062a\u062a\u0628\u0651\u0639 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0645\u0643\u062a\u0634\u064e\u0641\u0629 \u0648\u0641\u0631\u0632\u0647\u0627 \u0648\u0645\u0639\u0627\u0644\u062c\u062a\u0647\u0627.<\/li>\n<li>\u0623\u0636\u0650\u0641 \u0623\u0646\u0645\u0627\u0637\u0627\u064b \u0645\u062e\u0635\u0651\u0635\u0629 \u0644\u0635\u064a\u063a \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0645\u0624\u0633\u0633\u062a\u0643 (\u0645\u0641\u0627\u062a\u064a\u062d API \u0627\u0644\u062f\u0627\u062e\u0644\u064a\u0629\u060c \u0631\u0645\u0648\u0632 \u062d\u0633\u0627\u0628\u0627\u062a \u0627\u0644\u062e\u062f\u0645\u0629).<\/li>\n<li>\u0634\u063a\u0651\u0644 \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0639\u0644\u0649 \u0643\u0644 \u0645\u0646 \u0627\u0644\u0641\u0631\u0639 \u0627\u0644\u0645\u0635\u062f\u0631 \u0648\u0646\u062a\u064a\u062c\u0629 \u0627\u0644\u062f\u0645\u062c \u0644\u0627\u0644\u062a\u0642\u0627\u0637 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u062a\u064a \u064a\u064f\u062f\u062e\u0650\u0644\u0647\u0627 \u062a\u0639\u0627\u0631\u0636 \u0627\u0644\u062f\u0645\u062c.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u0633\u064a\u0631 \u0639\u0645\u0644 \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0622\u0645\u0646<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0625\u064a\u0635\u0627\u0644 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0645\u0646 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0625\u0644\u0649 \u0628\u064a\u0626\u0629 \u0625\u0646\u062a\u0627\u062c \u0628\u0623\u0645\u0627\u0646 \u064a\u062a\u0637\u0644\u0651\u0628 \u0623\u0643\u062b\u0631 \u0645\u0646 \u0645\u062c\u0631\u0651\u062f \u062a\u0634\u063a\u064a\u0644 <code>kubectl apply<\/code>. \u064a\u062f\u0639\u0645 GitLab \u0639\u062f\u0629 \u0627\u0633\u062a\u0631\u0627\u062a\u064a\u062c\u064a\u0627\u062a \u0646\u0634\u0631 \u062a\u0648\u0627\u0632\u0646 \u0628\u064a\u0646 \u0627\u0644\u0633\u0631\u0639\u0629 \u0648\u0627\u0644\u0623\u0645\u0627\u0646.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0628\u0648\u0627\u0628\u0627\u062a \u0627\u0644\u064a\u062f\u0648\u064a\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0641\u062a\u0627\u062d\u064a\u0629 <code>when: manual<\/code> \u0644\u0625\u0646\u0634\u0627\u0621 \u0646\u0642\u0627\u0637 \u0645\u0648\u0627\u0641\u0642\u0629 \u0635\u0631\u064a\u062d\u0629 \u0641\u064a \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628\u0643. \u0646\u0645\u0637 \u0634\u0627\u0626\u0639 \u0647\u0648 \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0625\u0644\u0649 staging \u0645\u0639 \u0627\u0634\u062a\u0631\u0627\u0637 \u0646\u0642\u0631\u0629 \u064a\u062f\u0648\u064a\u0629 \u0644\u0644\u0625\u0646\u062a\u0627\u062c. \u0648\u0628\u0627\u0644\u0627\u0642\u062a\u0631\u0627\u0646 \u0645\u0639 \u0627\u0644\u0628\u064a\u0626\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0648\u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0634\u0631\u060c \u064a\u062e\u0644\u0642 \u0630\u0644\u0643 \u0633\u064a\u0631 \u0639\u0645\u0644 \u0645\u062a\u064a\u0646\u0627\u064b \u0644\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062a\u063a\u064a\u064a\u0631.<\/p>\n\n<pre><code>deploy_production:\n  stage: deploy\n  environment:\n    name: production\n    deployment_tier: production\n  when: manual\n  only:\n    - main\n<\/code><\/pre>\n\n<h3 class=\"wp-block-heading\">\u0639\u0645\u0644\u064a\u0627\u062a \u0646\u0634\u0631 \u0627\u0644\u0640 Canary<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u062a\u0643\u0627\u0645\u0644 GitLab \u0645\u0639 Kubernetes \u0644\u062f\u0639\u0645 \u0639\u0645\u0644\u064a\u0627\u062a \u0646\u0634\u0631 \u0627\u0644\u0640 canary \u0623\u0635\u0644\u0627\u064b. \u0641\u0628\u0627\u0644\u0646\u0634\u0631 \u0625\u0644\u0649 \u0646\u0633\u0628\u0629 \u0635\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0640 pods \u0623\u0648\u0644\u0627\u064b \u0648\u0645\u0631\u0627\u0642\u0628\u0629 \u0645\u0639\u062f\u0651\u0644\u0627\u062a \u0627\u0644\u0623\u062e\u0637\u0627\u0621\u060c \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u062a\u0642\u0627\u0637 \u0627\u0644\u0645\u0634\u0643\u0644\u0627\u062a \u0642\u0628\u0644 \u0623\u0646 \u062a\u0624\u062b\u0651\u0631 \u0641\u064a \u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646. \u0647\u0630\u0627 \u0636\u0627\u0628\u0637 \u0623\u0645\u0646\u064a \u0628\u0642\u062f\u0631 \u0645\u0627 \u0647\u0648 \u0636\u0627\u0628\u0637 \u0645\u0648\u062b\u0648\u0642\u064a\u0629 \u2014 \u0641\u0627\u0644\u0628\u0646\u0627\u0621 \u0627\u0644\u0645\u062e\u062a\u0631\u064e\u0642 \u0627\u0644\u0630\u064a \u064a\u0635\u0644 \u0625\u0644\u0649 \u0627\u0644\u0640 canary \u064a\u0645\u0643\u0646 \u0627\u0644\u062a\u0642\u0627\u0637\u0647 \u0648\u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0639\u0646\u0647 \u0642\u0628\u0644 \u0623\u0646 \u064a\u0646\u062a\u0634\u0631 \u0639\u0644\u0649 \u0646\u0637\u0627\u0642 \u0648\u0627\u0633\u0639.<\/p>\n\n<h3 class=\"wp-block-heading\">GitOps \u0645\u0639 GitLab Agent \u0644\u0640 Kubernetes<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u062a\u064a\u062d GitLab Agent \u0644\u0640 Kubernetes (\u0627\u0644\u0645\u0639\u0631\u0648\u0641 \u0633\u0627\u0628\u0642\u0627\u064b \u0628\u0627\u0633\u0645 KAS) \u0646\u0645\u0648\u0630\u062c GitOps \u0642\u0627\u0626\u0645\u0627\u064b \u0639\u0644\u0649 \u0627\u0644\u0633\u062d\u0628. \u0641\u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0645\u0646\u062d \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI \u0648\u0635\u0648\u0644\u0627\u064b \u0645\u0628\u0627\u0634\u0631\u0627\u064b \u0625\u0644\u0649 \u0648\u0627\u062c\u0647\u0629 Kubernetes API\u060c \u064a\u0633\u062d\u0628 \u0627\u0644\u0648\u0643\u064a\u0644 \u0627\u0644\u0639\u0627\u0645\u0644 \u062f\u0627\u062e\u0644 \u0627\u0644\u0639\u0646\u0642\u0648\u062f \u0627\u0644\u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u0631\u062c\u0648\u0651\u0629 \u0645\u0646 \u0645\u0633\u062a\u0648\u062f\u0639 Git. \u0647\u0630\u0627 \u064a\u0644\u063a\u064a \u0627\u0644\u062d\u0627\u062c\u0629 \u0625\u0644\u0649 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f kubeconfig \u0637\u0648\u064a\u0644\u0629 \u0627\u0644\u0639\u0645\u0631 \u0641\u064a \u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a CI \u0648\u064a\u0642\u0644\u0651\u0635 \u0633\u0637\u062d \u0627\u0644\u0647\u062c\u0648\u0645 \u0628\u0634\u0643\u0644 \u0643\u0628\u064a\u0631.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0623\u0641\u0636\u0644 \u0645\u0645\u0627\u0631\u0633\u0627\u062a \u0623\u0645\u0627\u0646 \u0627\u0644\u0646\u0634\u0631:<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u0644\u0627 \u062a\u062e\u0632\u0651\u0646 kubeconfig \u0623\u0648 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0643\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a CI \u063a\u064a\u0631 \u0645\u062d\u0645\u064a\u0629 \u0625\u0637\u0644\u0627\u0642\u0627\u064b. \u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u062a\u062d\u0627\u062f \u0627\u0644\u0647\u0648\u064a\u0629 \u0639\u0628\u0631 OIDC \u0623\u0648 GitLab Agent.<\/li>\n<li>\u0637\u0628\u0651\u0642 \u0623\u062a\u0645\u062a\u0629 \u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u2014 \u0625\u0630\u0627 \u0641\u0634\u0644\u062a \u0641\u062d\u0648\u0635 \u0627\u0644\u0633\u0644\u0627\u0645\u0629 \u0628\u0639\u062f \u0627\u0644\u0646\u0634\u0631\u060c \u0641\u0627\u0631\u062c\u0650\u0639 \u062a\u0644\u0642\u0627\u0626\u064a\u0627\u064b \u0625\u0644\u0649 \u0622\u062e\u0631 \u062d\u0627\u0644\u0629 \u0645\u0639\u0631\u0648\u0641\u0629 \u0633\u0644\u064a\u0645\u0629.<\/li>\n<li>\u0648\u0642\u0651\u0639 \u0635\u0648\u0631 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0648\u062a\u062d\u0642\u0651\u0642 \u0645\u0646 \u0627\u0644\u062a\u0648\u0627\u0642\u064a\u0639 \u0642\u0628\u0644 \u0627\u0644\u0646\u0634\u0631 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Cosign \u0623\u0648 Notary.<\/li>\n<li>\u0627\u0633\u062a\u062e\u062f\u0645 \u0648\u0633\u0648\u0645\u0627\u064b \u063a\u064a\u0631 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u063a\u064a\u064a\u0631 \u0623\u0648 \u0645\u0631\u0627\u062c\u0639 \u0642\u0627\u0626\u0645\u0629 \u0639\u0644\u0649 \u0627\u0644\u0628\u0635\u0645\u0629 (digest) \u0644\u0635\u0648\u0631 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0644\u0645\u0646\u0639 \u0627\u0644\u0647\u062c\u0645\u0627\u062a \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0639\u0644\u0649 \u0627\u0644\u0648\u0633\u0648\u0645.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u0634\u0627\u0626\u0639\u0629 \u0641\u064a \u0627\u0644\u0625\u0639\u062f\u0627\u062f<\/h2>\n\n<p class=\"wp-block-paragraph\">\u062d\u062a\u0649 \u0627\u0644\u0641\u0650\u0631\u0642 \u0627\u0644\u062a\u064a \u062a\u0641\u0647\u0645 \u0645\u0641\u0627\u0647\u064a\u0645 \u0623\u0645\u0627\u0646 GitLab CI \u0643\u062b\u064a\u0631\u0627\u064b \u0645\u0627 \u062a\u0642\u0639 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0641\u062e\u0627\u062e:<\/p>\n\n<h3 class=\"wp-block-heading\">1. \u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u063a\u064a\u0631 \u0645\u062d\u0645\u064a\u0629 \u062a\u062d\u062a\u0648\u064a \u0623\u0633\u0631\u0627\u0631\u0627\u064b \u0625\u0646\u062a\u0627\u062c\u064a\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0647\u0630\u0627 \u0623\u0643\u062b\u0631 \u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u0625\u0639\u062f\u0627\u062f \u0634\u064a\u0648\u0639\u0627\u064b \u0648\u0623\u062e\u0637\u0631\u0647\u0627. \u0641\u0625\u0630\u0627 \u062e\u064f\u0632\u0651\u0646\u062a \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0643\u0645\u062a\u063a\u064a\u0651\u0631 \u063a\u064a\u0631 \u0645\u062d\u0645\u064a\u060c \u064a\u0633\u062a\u0637\u064a\u0639 \u0623\u064a \u0645\u0637\u0648\u0651\u0631 \u0625\u0646\u0634\u0627\u0621 \u0641\u0631\u0639 \u0648\u0625\u0636\u0627\u0641\u0629 \u062e\u0637\u0648\u0629 <code>echo $DB_PASSWORD<\/code> \u0648\u0642\u0631\u0627\u0621\u062a\u0647\u0627 \u0645\u0646 \u0633\u062c\u0644\u0651 \u0627\u0644\u0645\u0647\u0645\u0629. \u0627\u062d\u0645\u0650 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0648\u0623\u062e\u0641\u0650\u0647\u0627 \u062f\u0627\u0626\u0645\u0627\u064b.<\/p>\n\n<h3 class=\"wp-block-heading\">2. Runners \u0645\u0634\u062a\u0631\u0643\u0629 \u0645\u0641\u0631\u0637\u0629 \u0627\u0644\u062a\u0633\u0627\u0647\u0644<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0640 runners \u0627\u0644\u0645\u0634\u062a\u0631\u0643\u0629 \u0627\u0644\u062a\u064a \u062a\u0631\u0643\u0651\u0628 \u0645\u0642\u0628\u0633 Docker (<code>\/var\/run\/docker.sock<\/code>) \u0623\u0648 \u062a\u0639\u0645\u0644 \u0628\u0648\u0636\u0639 <code>--privileged<\/code> \u062a\u0645\u0646\u062d \u0627\u0644\u0645\u0647\u0627\u0645 \u062a\u062d\u0643\u0651\u0645\u0627\u064b \u0643\u0627\u0645\u0644\u0627\u064b \u0641\u064a \u0627\u0644\u0645\u0636\u064a\u0641. \u0641\u0645\u0647\u0645\u0629 \u062e\u0628\u064a\u062b\u0629 \u062a\u0633\u062a\u0637\u064a\u0639 \u0627\u0644\u0625\u0641\u0644\u0627\u062a \u0645\u0646 \u0627\u0644\u062d\u0627\u0648\u064a\u0629\u060c \u0623\u0648 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0647\u0627\u0645 \u0623\u062e\u0631\u0649\u060c \u0623\u0648 \u0627\u062e\u062a\u0631\u0627\u0642 \u0627\u0644\u0640 runner \u0646\u0641\u0633\u0647.<\/p>\n\n<h3 class=\"wp-block-heading\">3. \u0646\u0637\u0627\u0642 CI_JOB_TOKEN \u063a\u064a\u0631 \u0645\u0642\u064a\u0651\u062f<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0628\u062f\u0648\u0646 \u062a\u062d\u062f\u064a\u062f \u0646\u0637\u0627\u0642 \u0627\u0644\u0631\u0645\u0632 \u0635\u0631\u0627\u062d\u0629\u064b\u060c \u064a\u0645\u0643\u0646 \u0644\u0645\u0647\u0645\u0629 \u0645\u062e\u062a\u0631\u064e\u0642\u0629 \u0641\u064a \u0645\u0634\u0631\u0648\u0639 \u0645\u0646\u062e\u0641\u0636 \u0627\u0644\u0642\u064a\u0645\u0629 \u0623\u0646 \u062a\u0633\u062a\u062e\u062f\u0645 <code>CI_JOB_TOKEN<\/code> \u0627\u0644\u062e\u0627\u0635 \u0628\u0647\u0627 \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0648\u0627\u062c\u0647\u0627\u062a API \u0648\u0633\u062c\u0644\u0651\u0627\u062a \u0645\u0634\u0627\u0631\u064a\u0639 \u0639\u0627\u0644\u064a\u0629 \u0627\u0644\u0642\u064a\u0645\u0629. \u0641\u0639\u0651\u0644 \u0642\u064a\u0648\u062f \u0646\u0637\u0627\u0642 \u0627\u0644\u0631\u0645\u0632 \u0639\u0644\u0649 \u0643\u0644 \u0645\u0634\u0631\u0648\u0639.<\/p>\n\n<h3 class=\"wp-block-heading\">4. \u063a\u064a\u0627\u0628 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0639\u0644\u0649 \u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062f\u0645\u062c<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0625\u0630\u0627 \u0644\u0645 \u064a\u0643\u0646 \u0646\u062c\u0627\u062d \u062e\u0637\u0648\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0645\u0634\u062a\u0631\u0637\u0627\u064b \u0642\u0628\u0644 \u0627\u0644\u062f\u0645\u062c\u060c \u064a\u0633\u062a\u0637\u064a\u0639 \u0627\u0644\u0645\u0647\u0627\u062c\u0645\u0648\u0646 \u062f\u0641\u0639 \u0634\u064a\u0641\u0631\u0629 \u062a\u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u0641\u062d\u0648\u0635 \u0627\u0644\u0623\u0645\u0646\u064a\u0629. \u0641\u0639\u0651\u0644 \u0625\u0639\u062f\u0627\u062f \u00abPipelines must succeed\u00bb.<\/p>\n\n<h3 class=\"wp-block-heading\">5. \u0623\u0633\u0631\u0627\u0631 \u0645\u0636\u0645\u0651\u0646\u0629 \u0628\u0634\u0643\u0644 \u0635\u0644\u0628 \u0641\u064a .gitlab-ci.yml<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u0628\u062f\u0648 \u0627\u0644\u0623\u0645\u0631 \u0628\u062f\u064a\u0647\u064a\u0627\u064b\u060c \u0644\u0643\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0644\u0627 \u062a\u0632\u0627\u0644 \u062a\u0638\u0647\u0631 \u0641\u064a \u0645\u0644\u0641\u0627\u062a YAML \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u062e\u0637\u0648\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0628\u062a\u0648\u0627\u062a\u0631 \u0645\u0642\u0644\u0642. \u0627\u0633\u062a\u062e\u062f\u0645 \u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a CI\u060c \u0623\u0648 \u0645\u062f\u064a\u0631\u064a \u0623\u0633\u0631\u0627\u0631 \u062e\u0627\u0631\u062c\u064a\u064a\u0646\u060c \u0623\u0648 OIDC \u2014 \u0648\u0644\u0627 \u062a\u0636\u0645\u0651\u0646 \u0633\u0631\u0651\u0627\u064b \u062f\u0627\u062e\u0644 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0623\u0628\u062f\u0627\u064b.<\/p>\n\n<h3 class=\"wp-block-heading\">6. \u063a\u064a\u0627\u0628 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062a\u062f\u0642\u064a\u0642 \u0623\u0648 \u0627\u0644\u0645\u0631\u0627\u0642\u0628\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u0648\u0644\u0651\u062f GitLab \u0623\u062d\u062f\u0627\u062b \u062a\u062f\u0642\u064a\u0642 \u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0625\u0639\u062f\u0627\u062f CI\/CD\u060c \u0644\u0643\u0646 \u0643\u062b\u064a\u0631\u0627\u064b \u0645\u0646 \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062a \u0644\u0627 \u062a\u0631\u0633\u0644 \u0647\u0630\u0647 \u0627\u0644\u0633\u062c\u0644\u0651\u0627\u062a \u0625\u0644\u0649 \u0646\u0638\u0627\u0645 SIEM \u0648\u0644\u0627 \u062a\u064f\u0639\u0650\u062f\u0651 \u062a\u0646\u0628\u064a\u0647\u0627\u062a. \u0628\u062f\u0648\u0646 \u0645\u0631\u0627\u0642\u0628\u0629\u060c \u0642\u062f \u062a\u0645\u0631\u0651 \u0627\u0644\u0627\u062e\u062a\u0631\u0627\u0642\u0627\u062a \u062f\u0648\u0646 \u0643\u0634\u0641 \u0644\u0623\u0633\u0627\u0628\u064a\u0639.<\/p>\n\n<h3 class=\"wp-block-heading\">7. \u062a\u0633\u062c\u064a\u0644\u0627\u062a runner \u0645\u062a\u0642\u0627\u062f\u0645\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0640 runners \u0627\u0644\u062a\u064a \u0633\u064f\u062c\u0651\u0644\u062a \u0642\u0628\u0644 \u0623\u0634\u0647\u0631 \u0648\u0646\u064f\u0633\u064a\u062a \u0642\u062f \u062a\u062d\u0645\u0644 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0642\u062f\u064a\u0645\u0629\u060c \u0623\u0648 \u0623\u0646\u0638\u0645\u0629 \u062a\u0634\u063a\u064a\u0644 \u063a\u064a\u0631 \u0645\u064f\u0631\u0642\u064e\u0651\u0639\u0629\u060c \u0623\u0648 \u0648\u0635\u0648\u0644\u0627\u064b \u0645\u0641\u0631\u0637 \u0627\u0644\u0627\u062a\u0651\u0633\u0627\u0639 \u0625\u0644\u0649 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639. \u062f\u0642\u0651\u0642 \u0641\u064a \u0627\u0644\u0640 runners \u0627\u0644\u0645\u062a\u0642\u0627\u062f\u0645\u0629 \u0648\u0646\u0638\u0651\u0641\u0647\u0627 \u0628\u0627\u0646\u062a\u0638\u0627\u0645.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0642\u0627\u0626\u0645\u0629 \u062a\u062d\u0642\u0642 \u0627\u0644\u062a\u0646\u0641\u064a\u0630<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u062e\u062f\u0645 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u062d\u0642\u0642 \u0647\u0630\u0647 \u0644\u062a\u0642\u0648\u064a\u0629 \u0628\u064a\u0626\u0629 GitLab CI\/CD \u0628\u0634\u0643\u0644 \u0645\u0646\u0647\u062c\u064a. \u0631\u062a\u0651\u0628 \u0627\u0644\u0628\u0646\u0648\u062f \u062d\u0633\u0628 \u0623\u0648\u0644\u0648\u064a\u062a\u0647\u0627 \u0627\u0633\u062a\u0646\u0627\u062f\u0627\u064b \u0625\u0644\u0649 \u0646\u0645\u0648\u0630\u062c \u0627\u0644\u062a\u0647\u062f\u064a\u062f \u0648\u0645\u062a\u0637\u0644\u0651\u0628\u0627\u062a \u0627\u0644\u0627\u0645\u062a\u062b\u0627\u0644 \u0644\u062f\u064a\u0643.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0648\u0627\u0644\u0623\u0633\u0631\u0627\u0631<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>\u2610 \u062c\u0645\u064a\u0639 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0645\u0648\u0633\u0648\u0645\u0629 \u0628\u0623\u0646\u0647\u0627 \u0645\u062d\u0645\u064a\u0629 \u0648\u0645\u064f\u062e\u0641\u0627\u0629.<\/li>\n<li>\u2610 \u062a\u064f\u0633\u062a\u062e\u062f\u064e\u0645 \u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0645\u062d\u062f\u0651\u062f\u0629 \u0627\u0644\u0646\u0637\u0627\u0642 \u062d\u0633\u0628 \u0627\u0644\u0628\u064a\u0626\u0629 \u0644\u0641\u0635\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f staging \u0639\u0646 production.<\/li>\n<li>\u2610 \u0644\u0627 \u062a\u0648\u062c\u062f \u0623\u0633\u0631\u0627\u0631 \u0645\u0636\u0645\u0651\u0646\u0629 \u0628\u0634\u0643\u0644 \u0635\u0644\u0628 \u0641\u064a <code>.gitlab-ci.yml<\/code> \u0623\u0648 \u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639.<\/li>\n<li>\u2610 \u062c\u062f\u0648\u0644 \u062a\u062f\u0648\u064a\u0631 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0645\u0648\u062b\u0651\u0642 \u0648\u0645\u064f\u0646\u0641\u064e\u0651\u0630.<\/li>\n<li>\u2610 \u0645\u062f\u064a\u0631 \u0623\u0633\u0631\u0627\u0631 \u062e\u0627\u0631\u062c\u064a (HashiCorp Vault\u060c AWS Secrets Manager\u060c GCP Secret Manager) \u0645\u064f\u062a\u0643\u0627\u0645\u064e\u0644 \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0639\u0627\u0644\u064a\u0629 \u0627\u0644\u062d\u0633\u0627\u0633\u064a\u0629.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0640 Runners<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>\u2610 runners \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a \u0645\u062d\u062f\u0651\u062f\u0629 \u0627\u0644\u0646\u0637\u0627\u0642 \u0628\u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0648\u0645\u062d\u0645\u064a\u0629.<\/li>\n<li>\u2610 \u0627\u0644\u0640 runners \u0627\u0644\u0645\u0634\u062a\u0631\u0643\u0629 \u062a\u0633\u062a\u062e\u062f\u0645 \u0645\u064f\u0646\u0641\u0651\u0630\u0627\u062a \u062d\u0627\u0648\u0650\u064a\u0629 \u0633\u0631\u064a\u0639\u0629 \u0627\u0644\u0632\u0648\u0627\u0644.<\/li>\n<li>\u2610 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0645\u0645\u064a\u0651\u0632 (privileged) \u0645\u064f\u0639\u0637\u064e\u0651\u0644 \u0623\u0648 \u0645\u0642\u064a\u0651\u062f \u0628\u0645\u062c\u0645\u0648\u0639\u0627\u062a runner \u0645\u062e\u0635\u0651\u0635\u0629.<\/li>\n<li>\u2610 \u0631\u0645\u0648\u0632 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0640 runner \u062a\u064f\u062f\u0648\u064e\u0651\u0631 \u0628\u0627\u0646\u062a\u0638\u0627\u0645.<\/li>\n<li>\u2610 \u062a\u0633\u062c\u064a\u0644\u0627\u062a \u0627\u0644\u0640 runner \u0627\u0644\u0645\u062a\u0642\u0627\u062f\u0645\u0629 \u062a\u064f\u062f\u0642\u064e\u0651\u0642 \u0648\u062a\u064f\u0632\u0627\u0644 \u0643\u0644 \u0631\u0628\u0639 \u0633\u0646\u0629.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0628\u064a\u0626\u0627\u062a \u0648\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>\u2610 \u0628\u064a\u0626\u062a\u0627 production \u0648staging \u0645\u062d\u0645\u064a\u062a\u0627\u0646.<\/li>\n<li>\u2610 \u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0645\u064f\u0641\u0639\u0651\u0644\u0629 \u0644\u0644\u0625\u0646\u062a\u0627\u062c (Premium\/Ultimate).<\/li>\n<li>\u2610 \u0627\u0644\u0628\u0648\u0627\u0628\u0627\u062a \u0627\u0644\u064a\u062f\u0648\u064a\u0629 \u0645\u064f\u0639\u062f\u0651\u0629 \u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629.<\/li>\n<li>\u2610 \u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0645\u0648\u062b\u0651\u0642\u0629 \u0648\u0645\u064f\u062e\u062a\u0628\u064e\u0631\u0629.<\/li>\n<li>\u2610 \u0635\u0648\u0631 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0645\u0648\u0642\u0651\u0639\u0629 \u0648\u0645\u064f\u062a\u062d\u0642\u064e\u0651\u0642 \u0645\u0646\u0647\u0627 \u0642\u0628\u0644 \u0627\u0644\u0646\u0634\u0631.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0631\u0645\u0648\u0632 \u0648\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>\u2610 \u0646\u0637\u0627\u0642 <code>CI_JOB_TOKEN<\/code> \u0645\u0642\u064a\u0651\u062f \u0639\u0644\u0649 \u0643\u0644 \u0645\u0634\u0631\u0648\u0639.<\/li>\n<li>\u2610 \u062a\u064f\u0633\u062a\u062e\u062f\u064e\u0645 \u0631\u0645\u0648\u0632 OIDC <code>id_tokens<\/code> \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0627\u0644\u062b\u0627\u0628\u062a\u0629.<\/li>\n<li>\u2610 \u0633\u064a\u0627\u0633\u0627\u062a \u062b\u0642\u0629 IAM \u0627\u0644\u0633\u062d\u0627\u0628\u064a\u0629 \u062a\u062a\u062d\u0642\u0651\u0642 \u0645\u0646 \u0627\u062f\u0651\u0639\u0627\u0621\u0627\u062a \u0645\u0633\u0627\u0631 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0648\u0627\u0644\u0645\u0631\u062c\u0639 \u0648\u0627\u0644\u0628\u064a\u0626\u0629.<\/li>\n<li>\u2610 \u0631\u0645\u0648\u0632 \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0634\u062e\u0635\u064a\u0629 \u0630\u0627\u062a \u0646\u0637\u0627\u0642 CI\/CD \u0645\u064f\u0642\u0644\u064e\u0651\u0644\u0629 \u0648\u0645\u064f\u062f\u0642\u064e\u0651\u0642\u0629.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0648\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062f\u0645\u062c<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>\u2610 \u00abPipelines must succeed\u00bb \u0645\u064f\u0641\u0639\u0651\u0644 \u0644\u062c\u0645\u064a\u0639 \u0627\u0644\u0641\u0631\u0648\u0639 \u0627\u0644\u0645\u062d\u0645\u064a\u0629.<\/li>\n<li>\u2610 \u0642\u0648\u0627\u0644\u0628 \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0648SAST \u0645\u064f\u0636\u0645\u064e\u0651\u0646\u0629 \u0641\u064a \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a.<\/li>\n<li>\u2610 \u0642\u0648\u0627\u0639\u062f \u0627\u0644\u062f\u0641\u0639 \u062a\u0631\u0641\u0636 \u0627\u0644\u0640 commits \u0630\u0627\u062a \u0623\u0646\u0645\u0627\u0637 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0645\u0639\u0631\u0648\u0641\u0629.<\/li>\n<li>\u2610 \u062a\u063a\u064a\u064a\u0631\u0627\u062a <code>.gitlab-ci.yml<\/code> \u062a\u0633\u062a\u0644\u0632\u0645 \u0645\u0648\u0627\u0641\u0642\u0629 \u0645\u0631\u0627\u062c\u0650\u0639\u064a\u0646 \u0623\u0645\u0646\u064a\u064a\u0646.<\/li>\n<li>\u2610 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0640 fork \u0645\u0639\u0632\u0648\u0644\u0629 \u0641\u064a \u0635\u0646\u062f\u0648\u0642 \u0631\u0645\u0644 \u0623\u0648 \u062a\u0633\u062a\u0644\u0632\u0645 \u0645\u0648\u0627\u0641\u0642\u0629 \u064a\u062f\u0648\u064a\u0629.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0645\u0631\u0627\u0642\u0628\u0629 \u0648\u0627\u0644\u0627\u0645\u062a\u062b\u0627\u0644<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>\u2610 \u0623\u062d\u062f\u0627\u062b \u0627\u0644\u062a\u062f\u0642\u064a\u0642 \u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0625\u0639\u062f\u0627\u062f CI\/CD \u062a\u064f\u0631\u0633\u064e\u0644 \u0625\u0644\u0649 \u0646\u0638\u0627\u0645 SIEM.<\/li>\n<li>\u2610 \u0627\u0644\u062a\u0646\u0628\u064a\u0647\u0627\u062a \u0645\u064f\u0639\u062f\u0651\u0629 \u0644\u0644\u0646\u0634\u0627\u0637 \u0627\u0644\u0645\u0631\u064a\u0628 (\u0645\u062b\u0644 \u062a\u0633\u062c\u064a\u0644\u0627\u062a runner \u062c\u062f\u064a\u062f\u0629\u060c \u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a\u060c \u0639\u0645\u0644\u064a\u0627\u062a \u0646\u0634\u0631 \u063a\u064a\u0631 \u0645\u062a\u0648\u0642\u0651\u0639\u0629).<\/li>\n<li>\u2610 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0627\u0645\u062a\u062b\u0627\u0644 (Ultimate) \u062a\u0641\u0631\u0636 \u0645\u0647\u0627\u0645 \u0623\u0645\u0627\u0646 \u0625\u0644\u0632\u0627\u0645\u064a\u0629 \u0639\u0628\u0631 \u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639.<\/li>\n<li>\u2610 \u0645\u0631\u0627\u062c\u0639\u0627\u062a \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u062f\u0648\u0631\u064a\u0629 \u062a\u0634\u0645\u0644 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0640 runner \u0648\u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0648\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0625\u0644\u0649 \u0627\u0644\u0628\u064a\u0626\u0627\u062a.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">\u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0646\u0633\u062e\u0629 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0637\u0628\u0627\u0639\u0629 \u0648\u0633\u0631\u064a\u0639\u0629 \u0627\u0644\u0627\u0637\u0651\u0644\u0627\u0639 \u0645\u0646 \u0647\u0630\u0647 \u0627\u0644\u062a\u0648\u0635\u064a\u0627\u062a\u060c \u0637\u0627\u0644\u0650\u0639 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/gitlab-ci-security-cheat-sheet\/\">\u0648\u0631\u0642\u0629 \u0623\u0645\u0627\u0646 GitLab CI \u0627\u0644\u0645\u0631\u062c\u0639\u064a\u0629<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0645\u062e\u062a\u0628\u0631 \u062a\u0637\u0628\u064a\u0642\u064a<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0639\u0646 \u0627\u0644\u0623\u0645\u0627\u0646 \u0645\u0647\u0645\u0651\u0629\u060c \u0644\u0643\u0646 \u0627\u0644\u0645\u0645\u0627\u0631\u0633\u0629 \u0647\u064a \u0645\u0627 \u064a\u064f\u0631\u0633\u0651\u062e\u0647\u0627. \u064a\u0631\u0634\u062f\u0643 \u0645\u062e\u062a\u0628\u0631\u0646\u0627 \u0627\u0644\u062a\u0641\u0627\u0639\u0644\u064a \u062e\u0637\u0648\u0629 \u0628\u062e\u0637\u0648\u0629 \u062e\u0644\u0627\u0644 \u062a\u0623\u0645\u064a\u0646 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 GitLab CI \u062d\u0642\u064a\u0642\u064a \u2014 \u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629\u060c \u0648\u062a\u062d\u062f\u064a\u062f \u0646\u0637\u0627\u0642 \u0627\u0644\u0640 runners\u060c \u0648\u0636\u0628\u0637 \u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629\u060c \u0648\u0623\u0643\u062b\u0631.<\/p>\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-securing-gitlab-ci-pipelines-protected-variables-runners-environments\/\">\u0645\u062e\u062a\u0628\u0631: \u062a\u0623\u0645\u064a\u0646 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 GitLab CI \u2014 \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629 \u0648\u0627\u0644\u0640 Runners \u0648\u0627\u0644\u0628\u064a\u0626\u0627\u062a<\/a><\/p>\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u0623\u062f\u0648\u0627\u062a \u0648\u0627\u0644\u0645\u0648\u0627\u0631\u062f<\/h2>\n\n<p class=\"wp-block-paragraph\">\u064a\u0645\u0643\u0646 \u0644\u0644\u0623\u062f\u0648\u0627\u062a \u0648\u0627\u0644\u0645\u0648\u0627\u0631\u062f \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u0623\u0646 \u062a\u0633\u0627\u0639\u062f\u0643 \u0641\u064a \u062a\u0642\u064a\u064a\u0645 \u0648\u0636\u0639\u064a\u0629 \u0623\u0645\u0627\u0646 GitLab CI\/CD \u0644\u062f\u064a\u0643 \u0648\u062a\u062d\u0633\u064a\u0646\u0647\u0627:<\/p>\n\n<h3 class=\"wp-block-heading\">\u0645\u064a\u0632\u0627\u062a \u0627\u0644\u0623\u0645\u0627\u0646 \u0627\u0644\u0623\u0635\u064a\u0644\u0629 \u0641\u064a GitLab<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0644\u0648\u062d\u0629 \u0627\u0644\u0623\u0645\u0627\u0646 (Security Dashboard)<\/strong> \u2014 \u0639\u0631\u0636 \u0645\u0631\u0643\u0632\u064a \u0644\u0644\u062b\u063a\u0631\u0627\u062a \u0639\u0628\u0631 \u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0641\u064a \u0645\u062c\u0645\u0648\u0639\u0629 \u0623\u0648 \u062a\u0646\u0635\u064a\u0628.<\/li>\n<li><strong>\u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0627\u0645\u062a\u062b\u0627\u0644 (Ultimate)<\/strong> \u2014 \u062a\u0641\u0631\u0636 \u0645\u0647\u0627\u0645 CI \u0625\u0644\u0632\u0627\u0645\u064a\u0629 (\u0645\u062b\u0644 \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631) \u0644\u0627 \u064a\u0633\u062a\u0637\u064a\u0639 \u0645\u0634\u0631\u0641\u0648 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u062a\u062e\u0637\u0651\u064a\u0647\u0627 \u0623\u0648 \u062a\u0639\u062f\u064a\u0644\u0647\u0627.<\/li>\n<li><strong>\u0648\u0627\u062c\u0647\u0629 \u0623\u062d\u062f\u0627\u062b \u0627\u0644\u062a\u062f\u0642\u064a\u0642 (Audit Events API)<\/strong> \u2014 \u0648\u0635\u0648\u0644 \u0628\u0631\u0645\u062c\u064a \u0625\u0644\u0649 \u0633\u062c\u0644\u0651\u0627\u062a \u062a\u063a\u064a\u064a\u0631 \u0625\u0639\u062f\u0627\u062f CI\/CD \u0644\u0644\u062a\u0643\u0627\u0645\u0644 \u0645\u0639 \u0645\u0646\u0635\u0651\u0627\u062a SIEM \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629.<\/li>\n<li><strong>\u0641\u062d\u0635 \u0627\u0644\u062a\u0628\u0639\u064a\u0627\u062a (Dependency Scanning)<\/strong> \u2014 \u064a\u062d\u062f\u0651\u062f \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0627\u0644\u0645\u0639\u0631\u0648\u0641\u0629 \u0641\u064a \u062a\u0628\u0639\u064a\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639. \u0627\u062c\u0645\u0639\u0647 \u0645\u0639 \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0644\u062a\u063a\u0637\u064a\u0629 \u0634\u0627\u0645\u0644\u0629 \u0644\u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f.<\/li>\n<li><strong>\u0641\u062d\u0635 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a (Container Scanning)<\/strong> \u2014 \u064a\u0641\u062d\u0635 \u0635\u0648\u0631 Docker \u0628\u062d\u062b\u0627\u064b \u0639\u0646 \u062b\u063a\u0631\u0627\u062a \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u0634\u063a\u064a\u0644 \u0648\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0644\u063a\u0629 \u0642\u0628\u0644 \u0648\u0635\u0648\u0644\u0647\u0627 \u0625\u0644\u0649 \u0633\u062c\u0644\u0651.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0623\u062f\u0648\u0627\u062a \u0627\u0644\u0637\u0631\u0641 \u0627\u0644\u062b\u0627\u0644\u062b \u0648\u0645\u0641\u062a\u0648\u062d\u0629 \u0627\u0644\u0645\u0635\u062f\u0631<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/github.com\/cider-security-research\/cimon\" rel=\"nofollow noopener\" target=\"_blank\">Cimon<\/a><\/strong> \u2014 \u0648\u0643\u064a\u0644 \u0623\u0645\u0627\u0646 \u0632\u0645\u0646 \u0627\u0644\u062a\u0634\u063a\u064a\u0644 \u0644\u0640 CI\/CD \u064a\u0631\u0627\u0642\u0628 \u0648\u064a\u0642\u064a\u0651\u062f \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0634\u0628\u0643\u064a \u0648\u0627\u0644\u0645\u0644\u0641\u0651\u064a \u0623\u062b\u0646\u0627\u0621 \u062a\u0646\u0641\u064a\u0630 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628.<\/li>\n<li><strong><a href=\"https:\/\/github.com\/step-security\/harden-runner\" rel=\"nofollow noopener\" target=\"_blank\">StepSecurity Harden-Runner<\/a><\/strong> \u2014 \u0646\u0634\u0623 \u0644\u0640 GitHub Actions\u060c \u0644\u0643\u0646 \u0645\u0641\u0627\u0647\u064a\u0645\u0647 (\u062a\u0631\u0634\u064a\u062d \u0627\u0644\u062e\u0631\u0648\u062c \u0627\u0644\u0634\u0628\u0643\u064a\u060c \u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a) \u062a\u0646\u0637\u0628\u0642 \u0639\u0644\u0649 runners \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 GitLab \u0623\u064a\u0636\u0627\u064b.<\/li>\n<li><strong><a href=\"https:\/\/www.vaultproject.io\/\" rel=\"nofollow noopener\" target=\"_blank\">HashiCorp Vault<\/a><\/strong> \u2014 \u0645\u062f\u064a\u0631 \u0623\u0633\u0631\u0627\u0631 \u0642\u064a\u0627\u0633\u064a \u0641\u064a \u0627\u0644\u0635\u0646\u0627\u0639\u0629 \u0645\u0639 \u062a\u0643\u0627\u0645\u0644 \u0623\u0635\u064a\u0644 \u0645\u0639 GitLab \u0639\u0628\u0631 \u0627\u0644\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0641\u062a\u0627\u062d\u064a\u0629 <code>vault<\/code> \u0641\u064a <code>.gitlab-ci.yml<\/code>.<\/li>\n<li><strong><a href=\"https:\/\/github.com\/sigstore\/cosign\" rel=\"nofollow noopener\" target=\"_blank\">Cosign<\/a><\/strong> \u2014 \u062a\u0648\u0642\u064a\u0639 \u0635\u0648\u0631 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0648\u0627\u0644\u062a\u062d\u0642\u0651\u0642 \u0645\u0646\u0647\u0627. \u0623\u062f\u0645\u0650\u062c\u0647 \u0641\u064a \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628\u0643 \u0644\u062a\u0648\u0642\u064a\u0639 \u0627\u0644\u0635\u0648\u0631 \u0628\u0639\u062f \u0627\u0644\u0628\u0646\u0627\u0621 \u0648\u0627\u0644\u062a\u062d\u0642\u0651\u0642 \u0645\u0646\u0647\u0627 \u0642\u0628\u0644 \u0627\u0644\u0646\u0634\u0631.<\/li>\n<li><strong><a href=\"https:\/\/trivy.dev\/\" rel=\"nofollow noopener\" target=\"_blank\">Trivy<\/a><\/strong> \u2014 \u0645\u0627\u0633\u062d \u062b\u063a\u0631\u0627\u062a \u0634\u0627\u0645\u0644 \u0644\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0648\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u0644\u0641\u0651\u0627\u062a \u0648\u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a Git. \u062e\u0641\u064a\u0641 \u0648\u0633\u0647\u0644 \u0627\u0644\u062f\u0645\u062c \u0641\u064a GitLab CI.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0648\u062b\u0627\u0626\u0642 \u0648\u0627\u0644\u0645\u0631\u0627\u062c\u0639<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.gitlab.com\/ee\/ci\/pipelines\/pipeline_security.html\" rel=\"nofollow noopener\" target=\"_blank\">\u0648\u062b\u0627\u0626\u0642 \u0623\u0645\u0627\u0646 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 GitLab CI\/CD<\/a><\/li>\n<li><a href=\"https:\/\/docs.gitlab.com\/ee\/ci\/runners\/\" rel=\"nofollow noopener\" target=\"_blank\">\u0648\u062b\u0627\u0626\u0642 GitLab Runner<\/a><\/li>\n<li><a href=\"https:\/\/docs.gitlab.com\/ee\/ci\/cloud_services\/\" rel=\"nofollow noopener\" target=\"_blank\">GitLab OIDC \u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0633\u062d\u0627\u0628\u0629<\/a><\/li>\n<li><a href=\"https:\/\/owasp.org\/www-project-top-10-ci-cd-security-risks\/\" rel=\"nofollow noopener\" target=\"_blank\">\u0645\u062e\u0627\u0637\u0631 \u0623\u0645\u0627\u0646 CI\/CD \u0627\u0644\u0639\u0634\u0631 \u0627\u0644\u0623\u0648\u0644\u0649 \u0648\u0641\u0642 OWASP<\/a><\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u062e\u0644\u0627\u0635\u0629<\/h2>\n\n<p class=\"wp-block-paragraph\">GitLab CI\/CD \u0645\u0646\u0635\u0629 DevSecOps \u0642\u0648\u064a\u0629 \u0648\u0645\u062a\u0643\u0627\u0645\u0644\u0629 \u2014 \u0644\u0643\u0646 \u0623\u0645\u0646\u0647\u0627 \u0644\u064a\u0633 \u0623\u0642\u0648\u0649 \u0645\u0646 \u0625\u0639\u062f\u0627\u062f\u0643. \u0627\u0644\u0636\u0648\u0627\u0628\u0637 \u0645\u0648\u062c\u0648\u062f\u0629: \u0627\u0644\u0645\u062a\u063a\u064a\u0651\u0631\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u064a\u0629\u060c \u0648\u062a\u062d\u062f\u064a\u062f \u0646\u0637\u0627\u0642 \u0627\u0644\u0640 runners\u060c \u0648\u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629\u060c \u0648\u0627\u062a\u062d\u0627\u062f \u0627\u0644\u0647\u0648\u064a\u0629 \u0639\u0628\u0631 OIDC\u060c \u0648\u0642\u064a\u0648\u062f CI_JOB_TOKEN\u060c \u0648\u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631\u060c \u0648\u0628\u0648\u0627\u0628\u0627\u062a \u0627\u0644\u0646\u0634\u0631. \u0627\u0644\u062a\u062d\u062f\u0651\u064a \u0647\u0648 \u062a\u0641\u0639\u064a\u0644\u0647\u0627 \u0628\u0627\u062a\u0633\u0627\u0642 \u0648\u0645\u0631\u0627\u0642\u0628\u062a\u0647\u0627 \u0628\u0627\u0633\u062a\u0645\u0631\u0627\u0631.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062f\u0623 \u0628\u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u0623\u0639\u0644\u0649 \u0623\u062b\u0631\u0627\u064b: \u0627\u062d\u0645\u0650 \u062c\u0645\u064a\u0639 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0648\u0623\u062e\u0641\u0650\u0647\u0627\u060c \u0648\u062d\u062f\u0651\u062f \u0646\u0637\u0627\u0642 runners\u060c \u0648\u0642\u064a\u0651\u062f \u0648\u0635\u0648\u0644 CI_JOB_TOKEN\u060c \u0648\u0641\u0639\u0651\u0644 \u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0641\u064a \u0643\u0644 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628. \u062b\u0645 \u0623\u0636\u0650\u0641 \u0637\u0628\u0642\u0629 OIDC \u0644\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0633\u062d\u0627\u0628\u064a\u0629\u060c \u0648\u0645\u0648\u0627\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0644\u0628\u064a\u0626\u0627\u062a \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u060c \u0648\u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0627\u0644\u0627\u0645\u062a\u062b\u0627\u0644 \u0644\u0644\u0641\u0631\u0636 \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0623\u0645\u0627\u0646 \u0644\u064a\u0633 \u0625\u0639\u062f\u0627\u062f\u0627\u064b \u064a\u064f\u062c\u0631\u0649 \u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629 \u2014 \u0625\u0646\u0647 \u0627\u0646\u0636\u0628\u0627\u0637 \u0645\u0633\u062a\u0645\u0631. \u0631\u0627\u062c\u0650\u0639 \u0648\u0636\u0639\u064a\u0629 \u0623\u0645\u0627\u0646 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628\u0643 \u0643\u0644 \u0631\u0628\u0639 \u0633\u0646\u0629\u060c \u0648\u062f\u0642\u0651\u0642 \u0641\u064a \u0636\u0648\u0627\u0628\u0637 \u0627\u0644\u0648\u0635\u0648\u0644\u060c \u0648\u062f\u0648\u0651\u0631 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f\u060c \u0648\u0627\u0628\u0642\u064e \u0645\u0648\u0627\u0643\u0628\u0627\u064b \u0644\u0645\u064a\u0632\u0627\u062a \u0627\u0644\u0623\u0645\u0627\u0646 \u0627\u0644\u0645\u062a\u0637\u0648\u0651\u0631\u0629 \u0641\u064a GitLab. \u0645\u0639 \u0627\u0644\u0645\u0645\u0627\u0631\u0633\u0627\u062a \u0627\u0644\u0648\u0627\u0631\u062f\u0629 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644\u060c \u0633\u062a\u062d\u0635\u0644 \u0639\u0644\u0649 \u0628\u064a\u0626\u0629 GitLab CI\/CD \u0644\u064a\u0633\u062a \u0633\u0631\u064a\u0639\u0629 \u0648\u0645\u064f\u0646\u062a\u0650\u062c\u0629 \u0641\u062d\u0633\u0628\u060c \u0628\u0644 \u0622\u0645\u0646\u0629 \u062d\u0642\u0627\u064b.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0647\u0644 \u0623\u0646\u062a \u0645\u0633\u062a\u0639\u062f\u0651 \u0644\u0648\u0636\u0639 \u0647\u0630\u0647 \u0627\u0644\u0645\u0641\u0627\u0647\u064a\u0645 \u0645\u0648\u0636\u0639 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u061f \u0627\u0628\u062f\u0623 \u0628\u0640<a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/gitlab-ci-security-cheat-sheet\/\">\u0648\u0631\u0642\u0629 \u0623\u0645\u0627\u0646 GitLab CI \u0627\u0644\u0645\u0631\u062c\u0639\u064a\u0629<\/a> \u0644\u0644\u0631\u062c\u0648\u0639 \u0627\u0644\u0633\u0631\u064a\u0639\u060c \u062b\u0645 \u0627\u0639\u0645\u0644 \u0639\u0628\u0631 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-securing-gitlab-ci-pipelines-protected-variables-runners-environments\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u064a<\/a> \u0644\u0628\u0646\u0627\u0621 \u0630\u0627\u0643\u0631\u0629 \u0639\u0636\u0644\u064a\u0629. \u0648\u0644\u0627\u0633\u062a\u064a\u0639\u0627\u0628 \u0627\u0644\u0633\u064a\u0627\u0642 \u0627\u0644\u0623\u0648\u0633\u0639 \u0644\u0625\u062f\u0627\u0631\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0639\u0628\u0631 \u062c\u0645\u064a\u0639 \u0645\u0646\u0635\u0651\u0627\u062a CI\/CD\u060c \u0627\u0633\u062a\u0643\u0634\u0650\u0641 \u062f\u0644\u064a\u0644\u0646\u0627 \u062d\u0648\u0644 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/short-lived-credentials-workload-identity-federation-ci-cd\/\">\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0642\u0635\u064a\u0631\u0629 \u0627\u0644\u0639\u0645\u0631 \u0648\u0627\u062a\u062d\u0627\u062f \u0647\u0648\u064a\u0629 \u0623\u062d\u0645\u0627\u0644 \u0627\u0644\u0639\u0645\u0644<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0623\u0635\u0628\u062d GitLab CI\/CD \u0627\u0644\u0639\u0645\u0648\u062f \u0627\u0644\u0641\u0642\u0631\u064a \u0644\u0645\u0645\u0627\u0631\u0633\u0627\u062a DevSecOps \u0627\u0644\u062d\u062f\u064a\u062b\u0629\u060c \u0625\u0630 \u064a\u0648\u0641\u0651\u0631 \u0645\u0646\u0635\u0629 \u0645\u062a\u0643\u0627\u0645\u0644\u0629 \u062a\u062c\u062a\u0645\u0639 \u0641\u064a\u0647\u0627 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0648\u062e\u0637\u0648\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 (pipelines) \u0648\u0627\u0644\u0641\u062d\u0635 \u0627\u0644\u0623\u0645\u0646\u064a \u0648\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0641\u064a \u0648\u0627\u062c\u0647\u0629 \u0648\u0627\u062d\u062f\u0629. \u0644\u0643\u0646 \u0647\u0630\u0627 \u0627\u0644\u062a\u0643\u0627\u0645\u0644 \u0627\u0644\u0639\u0645\u064a\u0642 \u0633\u0644\u0627\u062d \u0630\u0648 \u062d\u062f\u0651\u064a\u0646: \u0641\u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0645\u064f\u0639\u062f\u0651 \u0625\u0639\u062f\u0627\u062f\u0627\u064b \u062e\u0627\u0637\u0626\u0627\u064b \u0642\u062f \u064a\u0643\u0634\u0641 \u0627\u0644\u0623\u0633\u0631\u0627\u0631\u060c \u0623\u0648 \u064a\u0633\u0645\u062d \u0628\u0639\u0645\u0644\u064a\u0627\u062a \u0646\u0634\u0631 \u063a\u064a\u0631 \u0645\u0635\u0631\u0651\u062d \u0628\u0647\u0627\u060c \u0623\u0648 \u064a\u0645\u0646\u062d \u0627\u0644\u0645\u0647\u0627\u062c\u0645\u064a\u0646 \u0645\u0648\u0637\u0626 \u0642\u062f\u0645 \u0641\u064a \u0628\u0646\u064a\u062a\u0643 \u0627\u0644\u062a\u062d\u062a\u064a\u0629. &#8230; <a title=\"\u0623\u0645\u0627\u0646 GitLab CI\/CD: \u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0634\u0627\u0645\u0644\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/gitlab-ci-cd-security-definitive-guide\/\" aria-label=\"Read more about \u0623\u0645\u0627\u0646 GitLab CI\/CD: \u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0634\u0627\u0645\u0644\">\u0627\u0642\u0631\u0623 \u0627\u0644\u0645\u0632\u064a\u062f<\/a><\/p>\n","protected":false},"author":1,"featured_media":1426,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66,26,30,64],"tags":[],"post_folder":[],"class_list":["post-752","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ci-cd-security","category-gitlab-ci"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/comments?post=752"}],"version-history":[{"count":3,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/752\/revisions"}],"predecessor-version":[{"id":1569,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/752\/revisions\/1569"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/media\/1426"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/media?parent=752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/categories?post=752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/tags?post=752"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/post_folder?post=752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}