{"id":3399,"date":"2023-05-06T10:48:11","date_gmt":"2023-05-06T02:48:11","guid":{"rendered":"http:\/\/www.yuguoxy.com\/geekhome\/?p=3399"},"modified":"2026-08-18T12:35:36","modified_gmt":"2026-08-18T04:35:36","slug":"gitlab%e7%ae%80%e4%bb%8b%e4%b8%8e%e5%ae%89%e8%a3%85","status":"publish","type":"post","link":"https:\/\/ai.zhousir.top\/?p=3399","title":{"rendered":"GitLab\u7b80\u4ecb\u4e0e\u5b89\u88c5"},"content":{"rendered":"<section id=\"wenyan\" style=\"font-family: system-ui, 'Apple Color Emoji', 'Segoe UI', 'Segoe UI Symbol', 'Noto Sans', Roboto, sans-serif; line-height: 1.75; font-size: 16px; color: #000000; caret-color: #000000;\" data-provider=\"WenYan\">\n<p style=\"margin: 1em 0px;\"><strong style=\"color: #4870ac;\">GitLab<\/strong> \u662f\u4e00\u4e2a\u7528\u4e8e<a href=\"https:\/\/baike.baidu.com\/item\/%E4%BB%93%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F\/438926?fromModule=lemma_inlink\">\u4ed3\u5e93\u7ba1\u7406\u7cfb\u7edf<\/a>\u7684<a href=\"https:\/\/baike.baidu.com\/item\/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE\/3406069?fromModule=lemma_inlink\">\u5f00\u6e90\u9879\u76ee<\/a>\uff0c\u4f7f\u7528<a href=\"https:\/\/baike.baidu.com\/item\/Git?fromModule=lemma_inlink\">Git<\/a>\u4f5c\u4e3a\u4ee3\u7801<a href=\"https:\/\/baike.baidu.com\/item\/%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7\/9143974?fromModule=lemma_inlink\">\u7ba1\u7406\u5de5\u5177<\/a>\uff0c\u5e76\u5728\u6b64\u57fa\u7840\u4e0a\u642d\u5efa\u8d77\u6765\u7684<a href=\"https:\/\/baike.baidu.com\/item\/Web%E6%9C%8D%E5%8A%A1\/2837593?fromModule=lemma_inlink\">Web\u670d\u52a1<\/a>\u3002\u4f01\u4e1a\u7528\u6765\u642d\u79c1\u6709\u4ee3\u7801\u6258\u7ba1\uff0c\u76f8\u5bf9 GitHub\u3001Gitee \u66f4\u5b89\u5168\u3002\u5b83\u8fd8\u63d0\u4f9b CI\/CD\uff0c\u662f DevOps \u751f\u547d\u5468\u671f\u91cc\u7684\u91cd\u8981\u4e00\u73af\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u7b80\u4ecb\u53c2\u8003 <a href=\"https:\/\/www.yiibai.com\/gitlab\/gitlab_introduction.html\">GitLab\u7b80\u4ecb<\/a>\u3002<\/p>\n<h2 style=\"padding: 1px 12.5px; color: #ffffff; margin: 1.2em 0px 1em; border-radius: 4px; display: inline-block; background-color: #4870ac; font-size: 1.3em;\">\u4e00\u3001GitLab \u7b80\u4ecb<\/h2>\n<p style=\"margin: 1em 0px;\">\u5b98\u65b9\u7f51\u7ad9\uff1a<a href=\"https:\/\/link.zhihu.com\/?target=https%3A\/\/about.gitlab.com\/\">https:\/\/about.gitlab.com\/<\/a><\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695952744881.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3401\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695952744881.png\" alt=\"1695952744881\" width=\"785\" height=\"442\" \/><\/a><\/p>\n<h2 style=\"padding: 1px 12.5px; color: #ffffff; margin: 1.2em 0px 1em; border-radius: 4px; display: inline-block; background-color: #4870ac; font-size: 1.3em;\">\u4e8c\u3001\u4f7f\u7528\u5b98\u65b9 GitLab<\/h2>\n<p><a class=\"md-header-anchor \" name=\"header-n15\"><\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u53ef\u76f4\u63a5\u6ce8\u518c\u5b98\u7f51\u4f7f\u7528\u3002\u7f3a\u70b9\uff1a\u4ee3\u7801\u5728\u522b\u4eba\u670d\u52a1\u5668\u4e0a\uff0c\u5b89\u5168\u6027\u53d6\u51b3\u4e8e\u5bf9\u65b9\u3002<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695953057339.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3402\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695953057339.png\" alt=\"1695953057339\" width=\"814\" height=\"347\" \/><\/a><\/p>\n<h2 style=\"padding: 1px 12.5px; color: #ffffff; margin: 1.2em 0px 1em; border-radius: 4px; display: inline-block; background-color: #4870ac; font-size: 1.3em;\">\u4e09\u3001\u81ea\u5efa\u524d\u7684\u51c6\u5907<\/h2>\n<p style=\"margin: 1em 0px;\">\u5b9e\u4f8b\u5efa\u8bae\u81f3\u5c11 2 vCPU\u30014GiB \u5185\u5b58\uff0c\u5df2\u88c5 CentOS 7\uff0c\u5e76\u653e\u884c\u5b89\u5168\u7ec4\uff1a<\/p>\n<table style=\"display: table; text-align: left; overflow: auto; border-collapse: collapse; margin: 1.4em auto; max-width: 100%; table-layout: fixed; overflow-wrap: break-word; word-break: break-all;\" width=\"800\">\n<thead>\n<tr>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u65b9\u5411<\/th>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u534f\u8bae\/\u5e94\u7528<\/th>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u7aef\u53e3\/\u8303\u56f4<\/th>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u6e90\u5730\u5740<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u5165\u65b9\u5411<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">HTTP(80)<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">80<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">0.0.0.0\/0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"margin: 1em 0px;\">\u5b89\u88c5\u65b9\u5f0f\uff1a\u624b\u52a8\u90e8\u7f72\u3001\u955c\u50cf\u90e8\u7f72\u3001\u5b9d\u5854\u5b89\u88c5\u3002<\/p>\n<h2 style=\"padding: 1px 12.5px; color: #ffffff; margin: 1.2em 0px 1em; border-radius: 4px; display: inline-block; background-color: #4870ac; font-size: 1.3em;\">\u56db\u3001\u624b\u52a8\u90e8\u7f72<\/h2>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">1. \u4f9d\u8d56\u3001HTTP \u4e0e SSH<\/h3>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">sudo yum install -y curl policycoreutils-python openssh-server\nsudo systemctl enable sshd\nsudo systemctl start sshd\nsudo firewall-cmd --permanent --add-service=http\nsudo systemctl reload firewalld<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">2. \u5b89\u88c5\u8f6f\u4ef6\u5305<\/h3>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">curl -sS https:\/\/packages.gitlab.com\/install\/repositories\/gitlab\/gitlab-ce\/script.rpm.sh | sudo bash\nsudo yum install gitlab-ce<\/code><\/pre>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695954007613.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3403\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695954007613.png\" alt=\"1695954007613\" width=\"762\" height=\"388\" \/><\/a><\/p>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">3. \u521d\u59cb\u5316\u4e0e\u542f\u505c<\/h3>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">sudo gitlab-ctl reconfigure<\/code><\/p>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">gitlab-ctl start<\/code><\/p>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">gitlab-ctl stop<\/code><\/p>\n<h2 style=\"padding: 1px 12.5px; color: #ffffff; margin: 1.2em 0px 1em; border-radius: 4px; display: inline-block; background-color: #4870ac; font-size: 1.3em;\">\u4e94\u3001\u5b9d\u5854\u5b89\u88c5<\/h2>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">\u5b89\u88c5\u5b9d\u5854<\/h3>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">yum install -y wget &amp;&amp; wget -O install.sh https:\/\/download.bt.cn\/install\/install_6.0.sh &amp;&amp; sh install.sh ed8484bec<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u542f\u52a8\u5b9d\u5854\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695954509775.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3404\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695954509775.png\" alt=\"1695954509775\" width=\"854\" height=\"420\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u5b89\u88c5 GitLab\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695954597353.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3405\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695954597353.png\" alt=\"1695954597353\" width=\"816\" height=\"295\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695954723803.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3406\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695954723803.png\" alt=\"1695954723803\" width=\"802\" height=\"561\" \/><\/a><\/p>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">Nginx \u51b2\u7a81<\/h3>\n<p style=\"margin: 1em 0px;\">\u5b9d\u5854\u628a GitLab \u7684 nginx \u542f\u52a8\u6587\u4ef6\u6539\u6210 gitlab-web\uff0c\u914d\u7f6e\u91cc\u5374\u6ca1\u6539\u3002\u6539\u542f\u52a8\u811a\u672c\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">$ vi \/opt\/gitlab\/sv\/nginx\/run\nexec chpst -P \/opt\/gitlab\/embedded\/sbin\/nginx -p \/var\/opt\/gitlab\/nginx\n\u6539\u4e3a\nexec chpst -P \/opt\/gitlab\/embedded\/sbin\/gitlab-web -p \/var\/opt\/gitlab\/nginx<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u91cd\u542f\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">gitlab-ctl start<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">\u4fee\u6539\u8bbf\u95ee\u5730\u5740<\/h3>\n<p style=\"margin: 1em 0px;\">\u6ca1\u7528\u4e91\u670d\u52a1\u5668\u65f6\uff0c\u628a\u5916\u7f51\u5730\u5740\u6539\u6210\u5185\u7f51\u3002\u7f16\u8f91 gitlab.yml\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">$vi \/var\/opt\/gitlab\/gitlab-rails\/etc\/gitlab.yml<\/code><\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">host: localhost\nport: 80\nhttps: false\n\u4fee\u6539host\u503c\u4e3a\u4f60\u60f3\u4f7f\u7528\u7684\u5916\u7f51\u57df\u540d\u6216\u670d\u52a1\u5668IP\u5730\u5740\u5373\u53ef\uff0c\u4fdd\u5b58\u9000\u51fa\u3002<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u91cd\u542f\u7528 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">gitlab-ctl restart<\/code>\uff0c\u4e0d\u8981\u7528 <code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">reconfigure<\/code>\uff08\u4f1a\u6309 \/etc\/gitlab\/gitlab.rb \u91cd\u751f\u914d\u7f6e\uff0c\u6539\u52a8\u88ab\u8986\u76d6\uff09\u3002<\/p>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">\u4e2d\u6587\u652f\u6301<\/h3>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695955727354.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3407\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695955727354.png\" alt=\"1695955727354\" width=\"835\" height=\"239\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695955828549.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3408\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695955828549.png\" alt=\"1695955828549\" width=\"823\" height=\"530\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695955908735.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3409\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695955908735.png\" alt=\"1695955908735\" width=\"793\" height=\"566\" srcset=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695955908735.png 2172w, https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695955908735-140x100.png 140w\" sizes=\"(max-width: 793px) 100vw, 793px\" \/><\/a><\/p>\n<h2 style=\"padding: 1px 12.5px; color: #ffffff; margin: 1.2em 0px 1em; border-radius: 4px; display: inline-block; background-color: #4870ac; font-size: 1.3em;\">\u516d\u3001GitLab Runner<\/h2>\n<p style=\"margin: 1em 0px;\">Runner \u5f00\u6e90\uff0c\u7528\u6765\u8dd1\u4f5c\u4e1a\u5e76\u628a\u7ed3\u679c\u9001\u56de GitLab\uff0c\u914d\u5408 GitLab CI \u505a\u6301\u7eed\u96c6\u6210\u3002\u4ecb\u7ecd\u89c1 <a href=\"https:\/\/www.jianshu.com\/p\/3ebbed238c74\">GitRunner<\/a>\u3002<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695956558926.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3411\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695956558926.png\" alt=\"1695956558926\" width=\"831\" height=\"700\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u6d41\u7a0b\uff1a<\/p>\n<ul style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: disc;\">\n<li>\n<section>Runner POST \/api\/v4\/runners\uff0c\u5e26\u6ce8\u518c Token<\/section>\n<\/li>\n<li>\n<section>\u6210\u529f\u8fd4\u56de runner_token<\/section>\n<\/li>\n<li>\n<section>\u5faa\u73af POST \/api\/v4\/request\uff0c\u5e26 runner_token<\/section>\n<\/li>\n<li>\n<section>\u901a\u8fc7\u540e\u62ff\u5230\u4efb\u52a1 payload \u548c job_token<\/section>\n<\/li>\n<li>\n<section>\u6267\u884c\u5668\u7528 job_token \u514b\u9686\u4ee3\u7801\u3001\u4e0b\u8f7d\u914d\u7f6e\u3001\u8dd1\u4efb\u52a1<\/section>\n<\/li>\n<li>\n<section>Runner \u628a\u8f93\u51fa\u3001\u72b6\u6001\u548c job_token \u56de\u7ed9 GitLab<\/section>\n<\/li>\n<\/ul>\n<h2 style=\"padding: 1px 12.5px; color: #ffffff; margin: 1.2em 0px 1em; border-radius: 4px; display: inline-block; background-color: #4870ac; font-size: 1.3em;\">\u4e03\u3001\u5b89\u88c5 GitLab Runner<\/h2>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">Docker \u5b89\u88c5<\/h3>\n<p style=\"margin: 1em 0px;\">\u5b98\u7f51\uff1a<a href=\"https:\/\/link.zhihu.com\/?target=https%3A\/\/docs.gitlab.com\/runner\/install\/\">https:\/\/docs.gitlab.com\/runner\/install\/<\/a><\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">$ mkdir -p \/data\/gitlab-runner\/config\n$ docker run -itd --restart=always --name gitlab-runner \\\n-v \/data\/gitlab-runner\/config:\/etc\/gitlab-runner \\\n-v \/var\/run\/docker.sock:\/var\/run\/docker.sock  gitlab\/gitlab-runner:latest\n$ docker exec -it gitlab-runner bash\nroot@24dc60abee0b:\/# gitlab-runner -v\nVersion: \u00a0 \u00a0  13.8.0\nGit revision: 775dd39d\nGit branch: \u00a0 13-8-stable\nGO version: \u00a0 go1.13.8\nBuilt: \u00a0 \u00a0 \u00a0  2021-01-20T13:32:47+0000\nOS\/Arch: \u00a0 \u00a0  linux\/amd64<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">CentOS 7 \u7528 rpm<\/h3>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/blog.csdn.net\/u013595395\/article\/details\/129286534\"><strong>2. centos7\u4e0b\u8f7drpm\u5305\u5feb\u901f\u5b89\u88c5<\/strong><\/a><\/p>\n<p style=\"margin: 1em 0px;\">1. \u4e0b\u8f7d rpm\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/mirrors.tuna.tsinghua.edu.cn\/gitlab-runner\/yum\/el7\/\">Index of \/gitlab-runner\/yum\/el7\/ | \u6e05\u534e\u5927\u5b66\u5f00\u6e90\u8f6f\u4ef6\u955c\u50cf\u7ad9 | Tsinghua Open Source Mirror<\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u9009\u548c GitLab \u63a5\u8fd1\u7684\u7248\u672c\uff08<a href=\"https:\/\/so.csdn.net\/so\/search?q=gitlab&amp;spm=1001.2101.3001.7020\">gitlab<\/a>\uff09\u3002gitlab-runner-13.8.0-1.x86_64.rpm\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/wwtm.lanzoum.com\/iorgb0oybsfi\">gitlab-runner-13.8.0-1.x86_64.rar &#8211; \u84dd\u594f\u4e91<\/a><\/p>\n<p style=\"margin: 1em 0px;\">2. \u5b89\u88c5\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">rpm -ivh gitlab-runner-13.8.0-1.x86_64.rpm<\/code><\/p>\n<p style=\"margin: 1em 0px;\">3. \u670d\u52a1\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">systemctl enable gitlab-runner --\u5f00\u673a\u81ea\u542f\nsystemctl status gitlab-runner --\u67e5\u770b\u72b6\u6001\nsystemctl start gitlab-runner --\u542f\u52a8<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">4. \u6ce8\u518c runner<\/h3>\n<p style=\"margin: 1em 0px;\"><code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">gitlab-runner register<\/code><\/p>\n<ul style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: disc;\">\n<li>\n<section>Enter the GitLab instance URL\uff1a\u586b GitLab \u5730\u5740\uff08<a href=\"https:\/\/gitlab.com\/%29:\">https:\/\/gitlab.com\/):<\/a>\uff09<\/section>\n<\/li>\n<li>\n<section>Enter the registration token\uff1aGitLab \u4e0a\u63d0\u793a\u7684 token<\/section>\n<\/li>\n<li>\n<section>Enter a description\uff1a\u53ef\u7a7a<\/section>\n<\/li>\n<li>\n<section>Enter tags\uff1a\u540e\u9762 CI \u8981\u7528\uff0c\u4e00\u822c\u8ddf\u9879\u76ee\u540d\u4e00\u81f4<\/section>\n<\/li>\n<li>\n<section>Enter optional maintenance note\uff1a\u53ef\u7a7a<\/section>\n<\/li>\n<li>\n<section>Enter an executor\uff1a\u4e00\u822c\u4e3a shell\uff08\u4e5f\u53ef docker \u7b49\uff09<\/section>\n<\/li>\n<\/ul>\n<p style=\"margin: 1em 0px;\">\u5230 GitLab \u7f51\u7ad9\u521b\u5efa Runner\uff0c\u62ff URL \u548c token \u6ce8\u518c\uff1a<\/p>\n<ol style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem;\">\n<li>\n<section>\u8fdb\u5165 CI\/CD<\/section>\n<\/li>\n<\/ol>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957605068.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3412\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957605068.png\" alt=\"1695957605068\" width=\"838\" height=\"549\" srcset=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957605068.png 1965w, https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957605068-90x60.png 90w\" sizes=\"(max-width: 838px) 100vw, 838px\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957666855.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3413\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957666855.png\" alt=\"1695957666855\" width=\"843\" height=\"565\" srcset=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957666855.png 1965w, https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957666855-90x60.png 90w\" sizes=\"(max-width: 843px) 100vw, 843px\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u521b\u5efa Runner\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957803804.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3414\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957803804.png\" alt=\"1695957803804\" width=\"847\" height=\"632\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u751f\u6210 URL \u548c token\uff0c\u6ce8\u518c runner\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957928761.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3415\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957928761.png\" alt=\"1695957928761\" width=\"829\" height=\"557\" srcset=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957928761.png 2069w, https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695957928761-90x60.png 90w\" sizes=\"(max-width: 829px) 100vw, 829px\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u5b89\u88c5\u6c47\u667a\u5728\u7ebf\u9879\u76ee\u9700\u8981\u7684 node\u3001npm\u3001git\uff1a<\/p>\n<ul style=\"padding-left: 1rem; margin-left: 1rem; font-size: 0.9rem; list-style-type: disc;\">\n<li>\n<section>\u9632\u6b62\u9ed8\u8ba4\u88c5\u4e0a git 1.x\uff1a<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">sudo yum install https:\/\/packages.endpointdev.com\/rhel\/7\/os\/x86_64\/endpoint-repo.x86_64.rpm -y<\/code><\/section>\n<\/li>\n<li>\n<section>\u5b89\u88c5\uff1a<code style=\"font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; color: #4870ac; font-size: 0.9em; font-weight: normal; overflow-wrap: break-word; padding: 2px 4px; border-radius: 3px; margin: 2px; background-color: #f6f8fa; word-break: break-all;\">yum install nodejs npm git -y<\/code><\/section>\n<\/li>\n<\/ul>\n<p style=\"margin: 1em 0px;\">\u542f\u7528 Runner\uff1a<\/p>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695958538642.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3410\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695958538642.png\" alt=\"1695958538642\" width=\"872\" height=\"474\" \/><\/a><\/p>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">5. gitlab-runner \u7528\u6237\u6743\u9650<\/h3>\n<p style=\"margin: 1em 0px;\">\u8fc1\u670d\u52a1\u91cd\u914d CI \u65f6\uff0c\u82e5\u6ca1\u628a runner \u7528\u6237\u6539\u6210 root\uff0c\u6d41\u6c34\u7ebf\u53ef\u80fd\u6ca1\u6743\u9650\u3002\u81ea\u52a8\u5316\u90e8\u7f72\u76f8\u5173\u68c0\u7d22\uff1a<a href=\"https:\/\/so.csdn.net\/so\/search?q=%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2&amp;spm=1001.2101.3001.7020\">\u81ea\u52a8\u5316\u90e8\u7f72<\/a>\u3002\u53ef\u7528\u8d4b\u6743\u6216\u6539\u7528 root\u3002\u65b9\u5f0f\u4e00\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">1\u3001\u67e5\u770bgitlab-runner\u8fdb\u7a0b\nps aux|grep gitlab-runner\n2\u3001\u5378\u8f7dgitlab-runner\u9ed8\u8ba4\u7528\u6237\nsudo gitlab-runner uninstall\n3\u3001\u5c06\u7528\u6237\u8bbe\u7f6e\u4e3aroot\ngitlab-runner install --working-directory \/home\/gitlab-runner --user root\n4\u3001\u91cd\u542f\u670d\u52a1\nsystemctl restart gitlab-runner.service\n5\u3001\u518d\u6b21\u67e5\u770bgitlab-runner\u8fdb\u7a0b\nps aux|grep gitlab-runner<\/code><\/pre>\n<p style=\"margin: 1em 0px;\"><a href=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695981538780.png\" rel=\"fancybox\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3416\" src=\"https:\/\/ai.zhousir.top\/wp-content\/uploads\/2023\/10\/1695981538780.png\" alt=\"1695981538780\" width=\"853\" height=\"203\" \/><\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u53c2\u8003\uff1a<a class=\"url\" href=\"https:\/\/blog.csdn.net\/hzblucky1314\/article\/details\/125966138\" target=\"_blank\">https:\/\/blog.csdn.net\/hzblucky1314\/article\/details\/125966138<\/a><\/p>\n<p style=\"margin: 1em 0px;\">\u65b9\u5f0f\u4e8c\u540c\u6837\u662f\u6539 root \u6743\u9650\uff1a<\/p>\n<p style=\"margin: 1em 0px;\">\u53c2\u8003\uff1a<a class=\"url\" href=\"https:\/\/blog.csdn.net\/m0_67403240\/article\/details\/126644282\" target=\"_blank\">https:\/\/blog.csdn.net\/m0_67403240\/article\/details\/126644282<\/a><\/p>\n<table style=\"display: table; text-align: left; overflow: auto; border-collapse: collapse; margin: 1.4em auto; max-width: 100%; table-layout: fixed; overflow-wrap: break-word; word-break: break-all;\" width=\"800\">\n<thead>\n<tr>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u6b65\u9aa4<\/th>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u547d\u4ee4\/\u6ce8\u610f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u624b\u52a8\u88c5 GitLab<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">yum \u4f9d\u8d56 \u2192 \u5b98\u65b9 CE \u6e90 \u2192 reconfigure<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u5b9d\u5854<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u6539 nginx \u542f\u52a8\u540d gitlab-web\uff0c\u6539\u5730\u5740\u7528 restart \u4e0d\u662f reconfigure<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">Runner<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">docker \u6216 rpm\uff0cregister \u540e tags \u4e0e\u9879\u76ee\u5bf9\u9f50<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u6743\u9650<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">install &#8211;user root \u540e\u91cd\u542f\u670d\u52a1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a class=\"md-header-anchor \" name=\"header-n27\"><\/a><a class=\"md-header-anchor \" name=\"header-n66\"><\/a><a class=\"md-header-anchor \" name=\"header-n95\"><\/a><a class=\"md-header-anchor \" name=\"header-n157\"><\/a><a class=\"md-header-anchor \" name=\"header-n196\"><\/a><a class=\"md-header-anchor \" name=\"header-n204\"><\/a><a class=\"md-header-anchor \" name=\"header-n211\"><\/a><a class=\"md-header-anchor \" name=\"header-n214\"><\/a><a class=\"md-header-anchor \" name=\"header-n221\"><\/a><a class=\"md-header-anchor \" name=\"header-n294\"><\/a><\/p>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\">\n<p style=\"margin: 1em 0px;\"><strong style=\"color: #4870ac;\">\u4e00\u53e5\u8bdd\u603b\u7ed3\uff1a\u79c1\u6709 GitLab \u5148\u4fdd\u8bc1\u673a\u5668\u89c4\u683c\u548c 80 \u7aef\u53e3\uff0c\u518d\u9009\u624b\u52a8\u6216\u5b9d\u5854\u5b89\u88c5\uff1bCI \u9760 Runner \u6ce8\u518c\u62ff token\uff0c\u6743\u9650\u4e0d\u591f\u5c31\u628a runner \u7528\u6237\u6539\u6210 root\u3002<\/strong><\/p>\n<\/blockquote>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>GitLab \u662f\u4e00\u4e2a\u7528\u4e8e\u4ed3\u5e93\u7ba1\u7406\u7cfb\u7edf\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u4f7f\u7528Git\u4f5c\u4e3a\u4ee3\u7801\u7ba1\u7406\u5de5\u5177\uff0c\u5e76\u5728\u6b64\u57fa\u7840\u4e0a\u642d\u5efa\u8d77\u6765\u7684Web\u670d\u52a1\u3002 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[105],"tags":[88,162],"_links":{"self":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/3399"}],"collection":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3399"}],"version-history":[{"count":3,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/3399\/revisions"}],"predecessor-version":[{"id":3460,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/3399\/revisions\/3460"}],"wp:attachment":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}