linux-tutorial/linux/soft/gitlab-ops.html
Travis CI User e3e645a29a deploy
2021-05-13 17:44:54 +08:00

123 lines
33 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Gitlab 运维 | LINUX-TUTORIAL</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/linux-tutorial/favicon.ico">
<meta name="description" content="数据库教程">
<link rel="preload" href="/linux-tutorial/assets/css/0.styles.45d9d031.css" as="style"><link rel="preload" href="/linux-tutorial/assets/js/app.79a38eea.js" as="script"><link rel="preload" href="/linux-tutorial/assets/js/4.fb6e0f89.js" as="script"><link rel="preload" href="/linux-tutorial/assets/js/56.832958c9.js" as="script"><link rel="preload" href="/linux-tutorial/assets/js/5.cb43ecfb.js" as="script"><link rel="prefetch" href="/linux-tutorial/assets/js/10.7933187b.js"><link rel="prefetch" href="/linux-tutorial/assets/js/11.b9b41530.js"><link rel="prefetch" href="/linux-tutorial/assets/js/12.70a5dba8.js"><link rel="prefetch" href="/linux-tutorial/assets/js/13.857dcc43.js"><link rel="prefetch" href="/linux-tutorial/assets/js/14.5a603a55.js"><link rel="prefetch" href="/linux-tutorial/assets/js/15.d217acb7.js"><link rel="prefetch" href="/linux-tutorial/assets/js/16.ad565eae.js"><link rel="prefetch" href="/linux-tutorial/assets/js/17.d43e9f56.js"><link rel="prefetch" href="/linux-tutorial/assets/js/18.aa00ff43.js"><link rel="prefetch" href="/linux-tutorial/assets/js/19.43ce44b3.js"><link rel="prefetch" href="/linux-tutorial/assets/js/20.5618e1ff.js"><link rel="prefetch" href="/linux-tutorial/assets/js/21.1c5a41d7.js"><link rel="prefetch" href="/linux-tutorial/assets/js/22.fbe9fdf1.js"><link rel="prefetch" href="/linux-tutorial/assets/js/23.a4fb0e74.js"><link rel="prefetch" href="/linux-tutorial/assets/js/24.e3a23b69.js"><link rel="prefetch" href="/linux-tutorial/assets/js/25.9896afe9.js"><link rel="prefetch" href="/linux-tutorial/assets/js/26.96164082.js"><link rel="prefetch" href="/linux-tutorial/assets/js/27.391033bb.js"><link rel="prefetch" href="/linux-tutorial/assets/js/28.703f74c2.js"><link rel="prefetch" href="/linux-tutorial/assets/js/29.02a952cb.js"><link rel="prefetch" href="/linux-tutorial/assets/js/30.7e13628f.js"><link rel="prefetch" href="/linux-tutorial/assets/js/31.c4652f75.js"><link rel="prefetch" href="/linux-tutorial/assets/js/32.05d2cbec.js"><link rel="prefetch" href="/linux-tutorial/assets/js/33.3b265df8.js"><link rel="prefetch" href="/linux-tutorial/assets/js/34.26330a03.js"><link rel="prefetch" href="/linux-tutorial/assets/js/35.417d706d.js"><link rel="prefetch" href="/linux-tutorial/assets/js/36.0ed775e0.js"><link rel="prefetch" href="/linux-tutorial/assets/js/37.34430c74.js"><link rel="prefetch" href="/linux-tutorial/assets/js/38.87d5e0ff.js"><link rel="prefetch" href="/linux-tutorial/assets/js/39.7b648b3e.js"><link rel="prefetch" href="/linux-tutorial/assets/js/40.3b7a219e.js"><link rel="prefetch" href="/linux-tutorial/assets/js/41.e727eee9.js"><link rel="prefetch" href="/linux-tutorial/assets/js/42.0134c187.js"><link rel="prefetch" href="/linux-tutorial/assets/js/43.175e982f.js"><link rel="prefetch" href="/linux-tutorial/assets/js/44.72d90888.js"><link rel="prefetch" href="/linux-tutorial/assets/js/45.d49955bd.js"><link rel="prefetch" href="/linux-tutorial/assets/js/46.a9c290ec.js"><link rel="prefetch" href="/linux-tutorial/assets/js/47.cc639f04.js"><link rel="prefetch" href="/linux-tutorial/assets/js/48.98c78321.js"><link rel="prefetch" href="/linux-tutorial/assets/js/49.a7c3afed.js"><link rel="prefetch" href="/linux-tutorial/assets/js/50.22d8c542.js"><link rel="prefetch" href="/linux-tutorial/assets/js/51.28055fcd.js"><link rel="prefetch" href="/linux-tutorial/assets/js/52.f8103df5.js"><link rel="prefetch" href="/linux-tutorial/assets/js/53.76541550.js"><link rel="prefetch" href="/linux-tutorial/assets/js/54.e78d2776.js"><link rel="prefetch" href="/linux-tutorial/assets/js/55.3ce3079c.js"><link rel="prefetch" href="/linux-tutorial/assets/js/57.961ce896.js"><link rel="prefetch" href="/linux-tutorial/assets/js/58.6d6fbc82.js"><link rel="prefetch" href="/linux-tutorial/assets/js/59.d5e48112.js"><link rel="prefetch" href="/linux-tutorial/assets/js/6.c8f4721c.js"><link rel="prefetch" href="/linux-tutorial/assets/js/60.7927b23b.js"><link rel="prefetch" href="/linux-tutorial/assets/js/61.ee233f24.js"><link rel="prefetch" href="/linux-tutorial/assets/js/62.6ba50cc7.js"><link rel="prefetch" href="/linux-tutorial/assets/js/63.9cbf9f2b.js"><link rel="prefetch" href="/linux-tutorial/assets/js/64.0be148a4.js"><link rel="prefetch" href="/linux-tutorial/assets/js/65.c520257e.js"><link rel="prefetch" href="/linux-tutorial/assets/js/66.f2335390.js"><link rel="prefetch" href="/linux-tutorial/assets/js/67.e5737218.js"><link rel="prefetch" href="/linux-tutorial/assets/js/68.46427a01.js"><link rel="prefetch" href="/linux-tutorial/assets/js/69.450417bb.js"><link rel="prefetch" href="/linux-tutorial/assets/js/7.046e5a1b.js"><link rel="prefetch" href="/linux-tutorial/assets/js/70.072034d2.js"><link rel="prefetch" href="/linux-tutorial/assets/js/8.77fb8967.js"><link rel="prefetch" href="/linux-tutorial/assets/js/9.ebfa537e.js"><link rel="prefetch" href="/linux-tutorial/assets/js/vendors~flowchart.20a64d45.js"><link rel="prefetch" href="/linux-tutorial/assets/js/vendors~notification.ea176280.js">
<link rel="stylesheet" href="/linux-tutorial/assets/css/0.styles.45d9d031.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/linux-tutorial/" class="home-link router-link-active"><img src="images/dunwu-logo-100.png" alt="LINUX-TUTORIAL" class="logo"> <span class="site-name can-hide">LINUX-TUTORIAL</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/linux-tutorial/linux/cli/" class="nav-link">
Linux 命令
</a></div><div class="nav-item"><a href="/linux-tutorial/linux/ops/" class="nav-link">
Linux 运维
</a></div><div class="nav-item"><a href="/linux-tutorial/linux/soft/" class="nav-link router-link-active">
Linux 软件运维
</a></div><div class="nav-item"><a href="/linux-tutorial/docker/" class="nav-link">
Docker 教程
</a></div><div class="nav-item"><a href="https://github.com/dunwu/blog" target="_blank" rel="noopener noreferrer" class="nav-link external">
🎯 博客
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <a href="https://github.com/dunwu/linux-tutorial" target="_blank" rel="noopener noreferrer" class="repo-link">
Github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/linux-tutorial/linux/cli/" class="nav-link">
Linux 命令
</a></div><div class="nav-item"><a href="/linux-tutorial/linux/ops/" class="nav-link">
Linux 运维
</a></div><div class="nav-item"><a href="/linux-tutorial/linux/soft/" class="nav-link router-link-active">
Linux 软件运维
</a></div><div class="nav-item"><a href="/linux-tutorial/docker/" class="nav-link">
Docker 教程
</a></div><div class="nav-item"><a href="https://github.com/dunwu/blog" target="_blank" rel="noopener noreferrer" class="nav-link external">
🎯 博客
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <a href="https://github.com/dunwu/linux-tutorial" target="_blank" rel="noopener noreferrer" class="repo-link">
Github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>Gitlab 运维</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/linux-tutorial/linux/soft/gitlab-ops.html#一、gitlab-安装" class="sidebar-link">一、gitlab 安装</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#gitlab-的普通安装" class="sidebar-link">Gitlab 的普通安装</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#gitlab-的-docker-安装" class="sidebar-link">Gitlab 的 Docker 安装</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#自签名证书" class="sidebar-link">自签名证书</a></li></ul></li><li><a href="/linux-tutorial/linux/soft/gitlab-ops.html#二、gitlab-ci-multi-runner-安装" class="sidebar-link">二、gitlab-ci-multi-runner 安装</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#常规安装-gitlab-ci-multi-runner" class="sidebar-link">常规安装 gitlab-ci-multi-runner</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#docker-安装-gitlab-ci-multi-runner" class="sidebar-link">Docker 安装 gitlab-ci-multi-runner</a></li></ul></li><li><a href="/linux-tutorial/linux/soft/gitlab-ops.html#三、gitlab-配置" class="sidebar-link">三、gitlab 配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#基本配置" class="sidebar-link">基本配置</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#创建你的-ssh-key" class="sidebar-link">创建你的 SSH key</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#创建项目" class="sidebar-link">创建项目</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#克隆项目到本地" class="sidebar-link">克隆项目到本地</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#创建-issue" class="sidebar-link">创建 Issue</a></li></ul></li><li><a href="/linux-tutorial/linux/soft/gitlab-ops.html#四、gitlab-权限配置" class="sidebar-link">四、gitlab 权限配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#用户组的权限" class="sidebar-link">用户组的权限</a></li></ul></li><li><a href="/linux-tutorial/linux/soft/gitlab-ops.html#五、备份-迁移-升级" class="sidebar-link">五、备份/迁移/升级</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#备份" class="sidebar-link">备份</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#定时自动备份" class="sidebar-link">定时自动备份</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#迁移" class="sidebar-link">迁移</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/gitlab-ops.html#升级" class="sidebar-link">升级</a></li></ul></li><li><a href="/linux-tutorial/linux/soft/gitlab-ops.html#参考资料" class="sidebar-link">参考资料</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="gitlab-运维"><a href="#gitlab-运维" class="header-anchor">#</a> Gitlab 运维</h1> <h2 id="一、gitlab-安装"><a href="#一、gitlab-安装" class="header-anchor">#</a> 一、gitlab 安装</h2> <h3 id="gitlab-的普通安装"><a href="#gitlab-的普通安装" class="header-anchor">#</a> Gitlab 的普通安装</h3> <h4 id="下载"><a href="#下载" class="header-anchor">#</a> 下载</h4> <p>进入官方下载地址https://about.gitlab.com/install/ ,如下图,选择合适的版本。</p> <p><img src="https://raw.githubusercontent.com/dunwu/images/dev/snap/20190129155838.png" alt="img"></p> <p>以 CentOS7 为例:</p> <h4 id="安装和配置必要依赖"><a href="#安装和配置必要依赖" class="header-anchor">#</a> 安装和配置必要依赖</h4> <p>在系统防火墙中启用 HTTP 和 SSH</p> <div class="language- extra-class"><pre class="language-text"><code>sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
</code></pre></div><p>安装 Postfix ,使得 Gitlab 可以发送通知邮件</p> <div class="language- extra-class"><pre class="language-text"><code>sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
</code></pre></div><h4 id="添加-gitlab-yum-仓库并安装包"><a href="#添加-gitlab-yum-仓库并安装包" class="header-anchor">#</a> 添加 Gitlab yum 仓库并安装包</h4> <p>添加 Gitlab yum 仓库</p> <div class="language- extra-class"><pre class="language-text"><code>curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
</code></pre></div><p>通过 yum 安装 gitlab-ce</p> <div class="language- extra-class"><pre class="language-text"><code>sudo EXTERNAL_URL=&quot;http://gitlab.example.com&quot; yum install -y gitlab-ce
</code></pre></div><p>安装完成后,即可通过默认的 root 账户进行登录。更多细节可以参考:<a href="https://docs.gitlab.com/omnibus/README.html#installation-and-configuration-using-omnibus-package" target="_blank" rel="noopener noreferrer">documentation for detailed instructions on installing and configuration<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <h3 id="gitlab-的-docker-安装"><a href="#gitlab-的-docker-安装" class="header-anchor">#</a> Gitlab 的 Docker 安装</h3> <p>拉取镜像</p> <div class="language- extra-class"><pre class="language-text"><code>docker pull docker.io/gitlab/gitlab-ce
</code></pre></div><p>启动</p> <div class="language- extra-class"><pre class="language-text"><code>docker run -d \
--hostname gitlab.zp.io \
--publish 8443:443 --publish 80:80 --publish 2222:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce
</code></pre></div><p><img src="https://raw.githubusercontent.com/dunwu/images/dev/snap/20190131150515.png" alt="img"></p> <h3 id="自签名证书"><a href="#自签名证书" class="header-anchor">#</a> 自签名证书</h3> <p>首先,创建认证目录</p> <div class="language- extra-class"><pre class="language-text"><code>sudo mkdir -p /etc/gitlab/ssl
sudo chmod 700 /etc/gitlab/ssl
</code></pre></div><p>1创建 Private Key</p> <div class="language- extra-class"><pre class="language-text"><code>sudo openssl genrsa -des3 -out /etc/gitlab/ssl/gitlab.domain.com.key 2048
</code></pre></div><p>会提示输入密码,请记住</p> <p>2生成 Certificate Request</p> <div class="language- extra-class"><pre class="language-text"><code>sudo openssl req -new -key /etc/gitlab/ssl/gitlab.domain.com.key -out /etc/gitlab/ssl/gitlab.domain.com.csr
</code></pre></div><p>根据提示,输入信息</p> <div class="language- extra-class"><pre class="language-text"><code>Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:JS
Locality Name (eg, city) [Default City]:NJ
Organization Name (eg, company) [Default Company Ltd]:xxxxx
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:gitlab.xxxx.io
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
</code></pre></div><p>3移除 Private Key 中的密码短语</p> <div class="language- extra-class"><pre class="language-text"><code>sudo cp -v /etc/gitlab/ssl/gitlab.domain.com.{key,original}
sudo openssl rsa -in /etc/gitlab/ssl/gitlab.domain.com.original -out /etc/gitlab/ssl/gitlab.domain.com.key
sudo rm -v /etc/gitlab/ssl/gitlab.domain.com.original
</code></pre></div><p>4设置文件权限</p> <div class="language- extra-class"><pre class="language-text"><code>sudo chmod 600 /etc/gitlab/ssl/gitlab.domain.com.*
</code></pre></div><h2 id="二、gitlab-ci-multi-runner-安装"><a href="#二、gitlab-ci-multi-runner-安装" class="header-anchor">#</a> 二、gitlab-ci-multi-runner 安装</h2> <blockquote><p>参考https://docs.gitlab.com/runner/install/</p></blockquote> <h3 id="常规安装-gitlab-ci-multi-runner"><a href="#常规安装-gitlab-ci-multi-runner" class="header-anchor">#</a> 常规安装 gitlab-ci-multi-runner</h3> <h4 id="下载-2"><a href="#下载-2" class="header-anchor">#</a> 下载</h4> <div class="language- extra-class"><pre class="language-text"><code>sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
</code></pre></div><h4 id="配置执行权限"><a href="#配置执行权限" class="header-anchor">#</a> 配置执行权限</h4> <div class="language- extra-class"><pre class="language-text"><code>sudo chmod +x /usr/local/bin/gitlab-runner
</code></pre></div><h4 id="如果想使用-docker-安装-docker-可选的"><a href="#如果想使用-docker-安装-docker-可选的" class="header-anchor">#</a> 如果想使用 Docker安装 Docker可选的</h4> <div class="language- extra-class"><pre class="language-text"><code>curl -sSL https://get.docker.com/ | sh
</code></pre></div><h4 id="创建-ci-用户"><a href="#创建-ci-用户" class="header-anchor">#</a> 创建 CI 用户</h4> <div class="language- extra-class"><pre class="language-text"><code>sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
</code></pre></div><h4 id="安装并启动服务"><a href="#安装并启动服务" class="header-anchor">#</a> 安装并启动服务</h4> <div class="language- extra-class"><pre class="language-text"><code>sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
</code></pre></div><h4 id="注册-runner"><a href="#注册-runner" class="header-anchor">#</a> 注册 Runner</h4> <p>1执行命令</p> <div class="language- extra-class"><pre class="language-text"><code>sudo gitlab-runner register
</code></pre></div><p>2输入 Gitlab URL 和 令牌</p> <p>URL 和令牌信息在 Gitlab 的 Runner 管理页面获取:</p> <p><img src="https://raw.githubusercontent.com/dunwu/images/dev/snap/20190129163100.png" alt="img"></p> <div class="language- extra-class"><pre class="language-text"><code>Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com
Please enter the gitlab-ci token for this runner
xxx
</code></pre></div><p>3输入 Runner 的描述</p> <div class="language- extra-class"><pre class="language-text"><code> Please enter the gitlab-ci description for this runner
[hostame] my-runner
</code></pre></div><p>4输入 Runner 相关的标签</p> <div class="language- extra-class"><pre class="language-text"><code> Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag
</code></pre></div><p>5输入 Runner 执行器</p> <div class="language- extra-class"><pre class="language-text"><code> Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
</code></pre></div><p>如果想选择 Docker 作为执行器,你需要指定默认镜像( <code>.gitlab-ci.yml</code> 中没有此配置)</p> <div class="language- extra-class"><pre class="language-text"><code> Please enter the Docker image (eg. ruby:2.1):
alpine:latest
</code></pre></div><h3 id="docker-安装-gitlab-ci-multi-runner"><a href="#docker-安装-gitlab-ci-multi-runner" class="header-anchor">#</a> Docker 安装 gitlab-ci-multi-runner</h3> <p>拉取镜像</p> <div class="language- extra-class"><pre class="language-text"><code>docker pull docker.io/gitlab/gitlab-runner
</code></pre></div><p>启动</p> <div class="language- extra-class"><pre class="language-text"><code>docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
</code></pre></div><h2 id="三、gitlab-配置"><a href="#三、gitlab-配置" class="header-anchor">#</a> 三、gitlab 配置</h2> <h3 id="基本配置"><a href="#基本配置" class="header-anchor">#</a> 基本配置</h3> <div class="language- extra-class"><pre class="language-text"><code>sudo vim /etc/gitlab/gitlab.rb
external_url 'https://gitlab.domain.com'
</code></pre></div><h4 id="gitlab-网站-https"><a href="#gitlab-网站-https" class="header-anchor">#</a> gitlab 网站 https</h4> <div class="language- extra-class"><pre class="language-text"><code>nginx['redirect_http_to_https'] = true
</code></pre></div><h4 id="gitlab-ci-网站-https"><a href="#gitlab-ci-网站-https" class="header-anchor">#</a> gitlab ci 网站 https</h4> <div class="language- extra-class"><pre class="language-text"><code>ci_nginx['redirect_http_to_https'] = true
</code></pre></div><h4 id="复制证书到-gitlab-目录"><a href="#复制证书到-gitlab-目录" class="header-anchor">#</a> 复制证书到 gitlab 目录:</h4> <div class="language- extra-class"><pre class="language-text"><code>sudo cp /etc/gitlab/ssl/gitlab.domain.com.crt /etc/gitlab/trusted-certs/
</code></pre></div><h4 id="gitlab-重新配置-更新"><a href="#gitlab-重新配置-更新" class="header-anchor">#</a> gitlab 重新配置+更新:</h4> <div class="language- extra-class"><pre class="language-text"><code>sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
</code></pre></div><h3 id="创建你的-ssh-key"><a href="#创建你的-ssh-key" class="header-anchor">#</a> 创建你的 SSH key</h3> <ol><li><p>使用 Gitlab 的第一步是生成你自己的 SSH 密钥对Github 也类似)。</p></li> <li><p>登录 Gitlab</p></li> <li><p>打开 <strong>Profile settings</strong>.</p></li></ol> <p><img src="https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings.png" alt="img"></p> <ol start="4"><li>跳转到 <strong>SSH keys</strong> tab 页</li></ol> <p><img src="https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys.png" alt="img"></p> <ol start="5"><li>黏贴你的 SSH 公钥内容到 Key 文本框</li></ol> <p><img src="https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_paste_pub.png" alt="img"></p> <ol start="6"><li>为了便于识别,你可以为其命名</li></ol> <p><img src="https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_title.png" alt="img"></p> <ol start="7"><li>点击 <strong>Add key</strong> 将 SSH 公钥添加到 GitLab</li></ol> <p><img src="https://docs.gitlab.com/ce/gitlab-basics/img/profile_settings_ssh_keys_single_key.png" alt="img"></p> <h3 id="创建项目"><a href="#创建项目" class="header-anchor">#</a> 创建项目</h3> <p><img src="https://raw.githubusercontent.com/dunwu/images/dev/snap/20190131150658.png" alt="img"></p> <p>输入项目信息,点击 Create project 按钮,在 Gitlab 创建项目。</p> <p><img src="https://raw.githubusercontent.com/dunwu/images/dev/snap/20190131150759.png" alt="img"></p> <h3 id="克隆项目到本地"><a href="#克隆项目到本地" class="header-anchor">#</a> 克隆项目到本地</h3> <p>可以选择 SSH 或 HTTPS 方式克隆项目到本地(推荐 SSH</p> <p>拷贝项目地址,然后在本地执行 <code>git clone &lt;url&gt;</code></p> <h3 id="创建-issue"><a href="#创建-issue" class="header-anchor">#</a> 创建 Issue</h3> <p>依次点击 <strong>Projects Dashboard</strong> &gt; <strong>Issues</strong> &gt; <strong>New Issue</strong> 可以新建 Issue</p> <p><img src="https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_tracker_list.png" alt="img"></p> <p>在项目中直接添加 issue</p> <p><img src="https://docs.gitlab.com/ce/user/project/issues/img/new_issue.png" alt="img"></p> <p>在未关闭 issue 中,点击 <strong>New Issue</strong> 添加 issue</p> <p><img src="https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_open_issue.png" alt="img"></p> <p>通过项目面板添加 issue</p> <p><img src="https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_projects_dashboard.png" alt="img"></p> <p>通过 issue 面板添加 issue</p> <p><img src="https://docs.gitlab.com/ce/user/project/issues/img/new_issue_from_issue_board.png" alt="img"></p> <h2 id="四、gitlab-权限配置"><a href="#四、gitlab-权限配置" class="header-anchor">#</a> 四、gitlab 权限配置</h2> <h3 id="用户组的权限"><a href="#用户组的权限" class="header-anchor">#</a> 用户组的权限</h3> <ul><li>用户组有这几种权限的概念:<code>Guest、Reporter、Developer、Master、Owner</code></li> <li>这个概念在设置用户组的时候会遇到,叫做:<code>Add user(s) to the group</code>,比如链接:<code>https://&lt;gitlab_host&gt;/&lt;group&gt;</code></li></ul> <table><thead><tr><th>行为</th> <th>Guest</th> <th>Reporter</th> <th>Developer</th> <th>Master</th> <th>Owner</th></tr></thead> <tbody><tr><td>浏览组</td> <td></td> <td></td> <td></td> <td></td> <td></td></tr> <tr><td>编辑组</td> <td></td> <td></td> <td></td> <td></td> <td></td></tr> <tr><td>创建项目</td> <td></td> <td></td> <td></td> <td></td> <td></td></tr> <tr><td>管理组成员</td> <td></td> <td></td> <td></td> <td></td> <td></td></tr> <tr><td>移除组</td> <td></td> <td></td> <td></td> <td></td> <td></td></tr></tbody></table> <h2 id="五、备份-迁移-升级"><a href="#五、备份-迁移-升级" class="header-anchor">#</a> 五、备份/迁移/升级</h2> <h3 id="备份"><a href="#备份" class="header-anchor">#</a> 备份</h3> <h4 id="手动备份"><a href="#手动备份" class="header-anchor">#</a> 手动备份</h4> <p>执行 <code>gitlab-rake gitlab:backup:create</code> 开始备份全量数据,成功后,会在 <code>/var/opt/gitlab/backups</code> 下生产一个名称类似 <code>1585910556_2020_04_03_11.3.0_gitlab_backup.tar</code> 的压缩包。</p> <h3 id="定时自动备份"><a href="#定时自动备份" class="header-anchor">#</a> 定时自动备份</h3> <p>可以利用 crontab 来定时执行备份命令。</p> <p>执行 <code>vim /etc/crontab</code><code>crontab -e</code> 手动编辑定时任务。</p> <h3 id="迁移"><a href="#迁移" class="header-anchor">#</a> 迁移</h3> <blockquote><p>迁移前,需要确保新老机器的 Gitlab 版本号一致。</p></blockquote> <p>将备份的压缩包拷贝到新机器的备份路径下(默认为 <code>/var/opt/gitlab/backups</code>)。</p> <p>1将备份文件权限修改为 777不然可能恢复的时候会出现权限不够不能解压的问题</p> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">chmod</span> <span class="token number">777</span> 1585910556_2020_04_03_11.3.0_gitlab_backup.tar
</code></pre></div><p>2停止相关数据连接服务</p> <div class="language-shell extra-class"><pre class="language-shell"><code>gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
</code></pre></div><p>3从备份文件中恢复 Gitlab</p> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token comment"># gitlab-rake gitlab:backup:restore BACKUP=备份文件编号</span>
gitlab-rake gitlab:backup:restore <span class="token assign-left variable">BACKUP</span><span class="token operator">=</span>1585910556_2020_04_03_11.3.0
</code></pre></div><h3 id="升级"><a href="#升级" class="header-anchor">#</a> 升级</h3> <p>升级前,一定要做好备份,记录当前 gitlab 的版本号。</p> <p>第一步还是使用官方命令进行升级。</p> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">sudo</span> yum <span class="token function">install</span> -y gitlab-ce
</code></pre></div><p>如果下载速度理想,就无需手动升级安装。不理想就需要<code>停止自动更新</code>,并手动下载安装包</p> <p>访问官方地址,下载对应<code>版本</code>,对应<code>系统</code>的安装包。</p> <p>注:可以根据<code>自动升级时下载的版本</code>,选择对应文件。</p> <div class="language-http extra-class"><pre class="language-http"><code><span class="token header-name keyword">https:</span>//packages.gitlab.com/gitlab/gitlab-ce
</code></pre></div><p>安装包手动上传至服务器,并<code>替换</code>下载未完成的安装包。下面是升级缓存地址:</p> <div class="language- extra-class"><pre class="language-text"><code>/var/cache/yum/x86_64/7/gitlab_gitlab-ce/packages/
</code></pre></div><p>再次执行官方升级命令即可完成自动安装。</p> <h2 id="参考资料"><a href="#参考资料" class="header-anchor">#</a> 参考资料</h2> <ul><li>官网https://about.gitlab.com/</li> <li>中文网https://www.gitlab.com.cn/</li> <li>官网下载https://about.gitlab.com/downloads/</li> <li>官网安装说明https://about.gitlab.com/installation/#centos-7</li> <li><a href="https://github.com/dunwu/OS" target="_blank" rel="noopener noreferrer">操作系统、运维部署总结系列<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/dunwu/linux-tutorial/edit/master/docs/linux/soft/gitlab-ops.md" target="_blank" rel="noopener noreferrer">帮助我们改善此页面!</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <div class="last-updated"><span class="prefix">上次更新:</span> <span class="time">19 minutes ago</span></div></footer> <!----> </main></div><div class="global-ui"><!----><!----></div></div>
<script src="/linux-tutorial/assets/js/app.79a38eea.js" defer></script><script src="/linux-tutorial/assets/js/4.fb6e0f89.js" defer></script><script src="/linux-tutorial/assets/js/56.832958c9.js" defer></script><script src="/linux-tutorial/assets/js/5.cb43ecfb.js" defer></script>
</body>
</html>