Ops工具
Helm
Helm 包管理工具
Helm进阶
Ansible
Ansible入门
Ansible 常用模块指令
Ansible playbook详解
Vdbench
vdbench基础使用指南
vdbench在ARM服务器上出现共享库aarch64.so问题
GitLab
Gitlab自定义机器人
Gitlab安装和使用
CosBench
Cosbench测试
s3curl
s3curl常用命令大全
S3curl测试
FIO
FIO安装和使用方法
本文档使用 MrDoc 发布
-
+
首页
Gitlab安装和使用
GitLab是一个开源的Git仓库管理工具,用于版本控制、代码审查、问题跟踪和持续集成等。它提供了一个集成的开发环境,使团队成员可以在一个平台上协同开发和管理项目。本文介绍如何在Ubuntu或RHEl上安装GitLab,及其常见的使用教程。 GItlab 提供企业版(Gitlab EE)和社区版(Gitlab CE)。在这篇文章中,我们将介绍社区版。 ## 准备工作 - 运行Ubuntu或RHEl且具有 SSH 访问权限的虚拟或专用服务器。 - 具有管理员权限的 Sudo 用户 - 4核或更多的CPU(建议的最小内核数为 4 个,最多支持 500 个用户) - 4G及以上的内存(4 GB RAM 是所需的最小内存大小,最多支持 500 个用户) 官方推荐:https://docs.gitlab.com/ee/install/requirements.html ## 安装GitLab 本文介绍以下两种方式,安装方式差异说明如下,您可以根据需要选择其中一种方式: | **差异** | **Linux安装包** | **Docker Engine** | | ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | 安装方式 | 可以在Linux系统中直接运行安装包进行安装。 | 通过在Docker Engine上运行GitLab容器来实现安装。 | | 系统依赖性 | 依赖于特定的系统运行库和依赖项,需要根据操作系统版本和配置进行相应的安装和配置。 | 不需要考虑Docker所在实例系统的依赖性,所有的依赖关系都被包含在Docker镜像中。 | | 灵活性和可移植性 | 提供了更多的灵活性和自定义选项,可以根据需求进行自定义配置和调整。但是,可能需要更多的系统管理和维护工作。 | 提供了更高的可移植性和一致性,可以在不同的环境中轻松部署和运行GitLab容器。 | | 版本管理 | 通常需要手动管理和升级GitLab的版本,需要下载更新的安装包并进行相应的升级操作。 | 可以通过拉取更新的Docker镜像来实现版本管理,只需简单地重新运行容器即可。 | | 系统资源利用 | 运行在虚拟机或主机上,会占用一定的系统资源。 | 将GitLab作为一个容器运行,可以更有效地利用系统资源,并且容器之间相互隔离,不会对宿主机产生影响。 | ### 使用Linux安装包安装GitLab **安装GitLab所需的依赖包** ```bash # Ubuntu 20.04 and 22.04 $ sudo apt-get update $ sudo apt-get install -y curl openssh-server ca-certificates tzdata perl # Postfix用于GitLab发送电子邮件通知。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器。具体操作,请参见配置外部 SMTP 服务器:https://docs.gitlab.cn/omnibus/settings/smtp.html。 $ sudo dnf install postfix $ sudo systemctl enable postfix $ sudo systemctl start postfix # AlmaLinux and RedHat versions 8 and 9 $ sudo dnf install -y curl policycoreutils openssh-server perl # 启动ssh并设置开机自启 $ sudo systemctl enable sshd $ sudo systemctl start sshd # 打开防火墙 $ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https $ sudo systemctl reload firewalld ``` **添加GitLab软件包仓库** ```bash # ubuntu $ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash # RHEl $ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash ``` **安装Gitlab** ```bash # ubuntu $ sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ce # RHEL $ sudo EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee ``` EXTERNAL_URL可以填写ip也可以填写域名 ### 使用Docker安装GitLab **安装docker** ```bash # ubuntu # step 1: 安装必要的一些系统工具 $ sudo apt-get update $ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # step 2: 安装GPG证书 $ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # Step 3: 写入软件源信息 $ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # Step 4: 更新并安装Docker-CE $ sudo apt-get -y update $ sudo apt-get -y install docker-ce # RHEL # step 1: 安装必要的一些系统工具 $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 $ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3 $ sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo # Step 4: 更新并安装Docker-CE $ sudo yum makecache fast $ sudo yum -y install docker-ce # Step 4: 开启Docker服务 $ sudo service docker start ``` **启动Docker服务,并设置开机自启动** ```bash $ sudo systemctl start docker $ sudo systemctl enable docker ``` **创建Docker容器的挂载数据目录** ```bash $ sudo mkdir -p /srv/gitlab ``` GitLab 容器使用主机挂载的卷来存储持久化数据: | 本地路径 | 容器路径 | 作用 | | :------------------- | :---------------- | :------------------------- | | `/srv/gitlab/data` | `/var/opt/gitlab` | 用于存储应用程序数据。 | | `/srv/gitlab/logs` | `/var/log/gitlab` | 用于存储日志。 | | `/srv/gitlab/config` | `/etc/gitlab` | 用于存储 GitLab 配置文件。 | **安装GitLab容器镜像** ```shell sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 8080:80 --publish 5000:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ --shm-size 256m \ gitlab/gitlab-ce:latest ``` HTTP端口:8080 HTTPS端口:443 SSH端口:5000 冒号前是映射到宿主机的端口,冒号后是容器使用的端口 **查看容器状态** ```bash sudo docker ps -a ``` 初始化过程可能需要很长时间。您可以通过以下方式跟踪此过程: ```bash $ sudo docker logs -f gitlab ``` ## 使用Gitlab **获取GitLab的登录密码** - Linux安装包方式:`sudo cat /etc/gitlab/initial_root_password` - Docker Engine安装方式:`sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password` > 出于安全原因,24小时后,该文件会被自动删除,建议您安装成功,首次登录之后,立即修改初始密码。 **登录GitLab** - Linux安装包方式:在浏览器的地址栏中,输入`http://主机IP`即可进入GitLab的登录界面。 - Docker安装方式:在浏览器的地址栏中,输入`http://主机IP:8080`即可进入GitLab的登录界面。 首次登录使用用户名`root`,密码为步骤1获取的密码。  **创建项目** 1、在GitLab的主页中,单击**Create a project**。  2、单击**Create blank project**,设置**Project name**和**Project URL**,然后单击**Create project**。 本文以mywork项目为例进行说明。  配置免密pull/push(也可以选择使用账号密码) ```bash # 安装Git工具。 $ sudo yum install git # 生成密钥对文件id_rsa。 $ ssh-keygen # 查看并复制公钥文件id_rsa.pub中的内容,便于后续步骤使用。 $ cat ~/.ssh/id_rsa.pub ``` 添加SSH key 在当前**project**页面,单击**Add SSH key**。  将公钥文件`id_rsa.pub`中的内容粘贴到`Key`所在的文本框中。  单击**Add key**。 SSH Key添加完成后,如下图所示。  复制Clone链接,该链接在进行克隆操作时需要使用。  1. 配置使用Git仓库的人员信息。 1. 配置使用Git仓库的人员姓名。 ```shell git config --global user.name "testname" ``` 2. 配置使用Git仓库的人员邮箱。 ```shell git config --global user.email "abc@example.com" ``` 2. 克隆已创建的项目到本地。 ```shell git clone git@101.132.XX.XX:root/mywork.git ```  3. 上传文件到GitLab服务器。 a. 进入到项目目录。 ```shell cd mywork/ ``` b. 创建需要上传到GitLab中的目标文件。 ```shell echo "test" > /home/test/test.sh ``` c. 将目标文件或者目录复制到项目目录下。 ```shell cp /home/test/test.sh ./ ``` d. 将`test.sh`文件加入到索引中。 ```shell git add test.sh ``` e. 将`test.sh`提交到本地仓库。 ```shell git commit -m "test.sh" ``` f. 将文件同步到GitLab服务器上。 ```shell git push -u origin main ```  在网页中查看上传的`test.sh`文件已经同步到GitLab服务器中。  如果您想了解更多的Gitlab操作,例如GitLab常用命令、数据备份、配置选项、用户管理、与其他服务集成、故障排除等,请参见[GitLab官方文档](https://docs.gitlab.com/)。 ## Gitlab配置 **配置访问域名** ```bash $ vim /srv/gitlab/config/gitlab.rb # 顶部附近是external_url配置线。更新它以匹配您的域。更改http为https以便GitLab会自动将用户重定向到受Let's加密证书保护的站点: external_url 'https://example.com' # 接下来,查找letsencrypt['contact_emails']设置。此设置定义了一个电子邮件地址列表,如果您的域存在问题,Let的加密项目可以用来与您联系。取消注释并填写此内容是一个好主意,以便您知道任何问题: letsencrypt['contact_emails'] = ['sammy@example.com'] ``` **配置SMTP** ```bash $ vim /srv/gitlab/config/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.exmail.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "xxxx@xx.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com' gitlab_rails['smtp_domain'] = "exmail.qq.com" ``` **使用自定义证书** 可使用自签名证书或 Let's Encrypt 为 GitLab 实例配置 HTTPS,这里我们配置自定义证书 ```bash # 将你的ssl证书放入/srv/gitlab/config/ssl/ # 修改gitlab配置文件 sudo vim /srv/gitlab/config/gitlab.rb external_url 'https://域名' nginx['enable'] = true nginx['redirect_http_to_https'] = true # 访问http自动跳转https nginx['ssl_certificate'] = "/etc/gitlab/ssl/域名的ssl证书.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/域名的ssl证书.key" ``` 证书可以通过域名服务商获取也可以使用自签名证书,以下是自签名证书步骤 ```bash $ sudo mkdir /srv/gitlab/ssl $ sudo chmod 755 /srv/gitlab/ssl $ sudo openssl genrsa -des3 -out /srv/gitlab/ssl/域名.key 2048 # 输入密码并记住它。 # 使用以下命令创建 CSR: $ sudo openssl req -new -key /srv/gitlab/ssl/域名.key -out /srv/gitlab/ssl/域名.csr # 从密钥中删除密码串,依次执行以下命令: $ sudo cp -v /srv/gitlab/ssl/域名.{key,original} $ sudo openssl rsa -in //srv/gitlab/ssl/域名.original -out /srv/gitlab/ssl/域名.key $ sudo rm -v /srv/gitlab/ssl/域名.original # 创建证书文件 $ sudo openssl x509 -req -days 1460 -in /srv/gitlab/ssl/域名.csr -signkey /srv/gitlab/ssl/域名.key -out /srv/gitlab/ssl/域名.crt # 使用下面的 rm 命令删除 CSR 文件: $ sudo rm -v /srv/gitlab/ssl/域名.csr # 设置密钥和证书文件的权限: $ sudo chmod 600 /srv/gitlab/ssl/域名.key $ sudo chmod 600 /srv/gitlab/ssl/域名.crt ``` **相关命令** ```bash # 当配置文件修改后,必须重新加载才能生效 # 当使用docker安装gitlab时,执行命令需要先进入容器: docker exec -it gitlab /bin/bash # 或者在外部直接执行: docker exec -it gitlab gitlab-ctl status # 检查配置 gitlab-ctl check-config # 重启服务 gitlab-ctl restart # 启动服务 gitlab-ctl start # 查看服务状态 gitlab-ctl status # 停止服务 gitlab-ctl stop # 查看服务列表 gitlab-ctl service-list # 查看日志 gitlab-ctl tail # 重新加载配置 gitlab-ctl reconfigure ``` ## gitlab 自带Nginx与原Nginx冲突的解决方案 ### 修改gitlab.rb ``` vim /etc/gitlab/gitlab.rb nginx['enable'] = false gitlab_workhorse['listen_network'] = "tcp" gitlab_workhorse['listen_addr'] = "127.0.0.1:8088" nginx['listen_port'] = 8088 nginx['listen_https'] = true web_server['external_users'] = ['www'] web_server['username'] = 'www' gitlab_workhorse['listen_network'] = "tcp" gitlab_workhorse['listen_addr'] = "127.0.0.1:8088" ``` ### 修改nginx默认配置文件 ``` vim /etc/local/nginx/conf/nginx.conf user www www; worker_processes auto; worker_cpu_affinity auto; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; multi_accept off; accept_mutex off; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; sendfile_max_chunk 512k; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\."; #limit_conn_zone $binary_remote_addr zone=perip:10m; ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section. include /opt/gitlab/embedded/conf/mime.types; proxy_cache_path proxy_cache keys_zone=gitlab:10m max_size=1g levels=1:2; proxy_cache gitlab; map $http_upgrade $connection_upgrade { default upgrade; '' close; } # Remove private_token from the request URI # In: /foo?private_token=unfiltered&authenticity_token=unfiltered&rss_token=unfiltered&... # Out: /foo?private_token=[FILTERED]&authenticity_token=unfiltered&rss_token=unfiltered&... map $request_uri $temp_request_uri_1 { default $request_uri; ~(?i)^(?<start>.*)(?<temp>[\?&]private[\-_]token)=[^&]*(?<rest>.*)$ "$start$temp=[FILTERED]$rest"; } # Remove authenticity_token from the request URI # In: /foo?private_token=[FILTERED]&authenticity_token=unfiltered&rss_token=unfiltered&... # Out: /foo?private_token=[FILTERED]&authenticity_token=[FILTERED]&rss_token=unfiltered&... map $temp_request_uri_1 $temp_request_uri_2 { default $temp_request_uri_1; ~(?i)^(?<start>.*)(?<temp>[\?&]authenticity[\-_]token)=[^&]*(?<rest>.*)$ "$start$temp=[FILTERED]$rest"; } # Remove rss_token from the request URI # In: /foo?private_token=[FILTERED]&authenticity_token=[FILTERED]&rss_token=unfiltered&... # Out: /foo?private_token=[FILTERED]&authenticity_token=[FILTERED]&rss_token=[FILTERED]&... map $temp_request_uri_2 $filtered_request_uri { default $temp_request_uri_2; ~(?i)^(?<start>.*)(?<temp>[\?&]rss[\-_]token)=[^&]*(?<rest>.*)$ "$start$temp=[FILTERED]$rest"; } # A version of the referer without the query string map $http_referer $filtered_http_referer { default $http_referer; ~^(?<temp>.*)\? $temp; } upstream gitlab-workhorse { server 127.0.0.1:8088; } server_tokens off; access_log off; server { listen 80 default_server reuseport; #listen [::]:80 default_server ipv6only=on; server_name _; index index.html index.htm index.php; root /home/wwwroot/default; #error_page 404 /404.html; # Deny access to PHP files in specific directory #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; } include enable-php.conf; location /nginx_status { stub_status on; access_log off; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /home/wwwlogs/access.log; } include vhost/*.conf; } ``` ### 修改gitlab网页配置 ``` vim /usr/local/nginx/conf/vhost/gitlab.zhoumx.net.conf server { listen *:80; server_name gitlab.zhoumx.net; server_tokens off; ## Don't show the nginx version number, a security best practice location / { return 301 https://gitlab.zhoumx.net:443$request_uri; } # health checks configuration include /var/opt/gitlab/nginx/conf/gitlab-health.conf; access_log /var/log/gitlab/nginx/gitlab_access.log; error_log /var/log/gitlab/nginx/gitlab_error.log; } server { listen *:443 ssl http2; server_name gitlab.zhoumx.net; server_tokens off; ## Don't show the nginx version number, a security best practice ## Increase this if you want to upload large attachments ## Or if you want to accept large git objects over http client_max_body_size 250m; ## Strong SSL Security ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/ ssl_certificate /opt/certs/gitlab/gitlab.crt; ssl_certificate_key /opt/certs/gitlab/gitlab.key; # GitLab needs backwards compatible ciphers to retain compatibility with Java IDEs ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:AES256-GCM-SHA384'; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_session_timeout 1d; ## Real IP Module Config ## http://nginx.org/en/docs/http/ngx_http_realip_module.html ## HSTS Config ## https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/ add_header Strict-Transport-Security "max-age=63072000"; # Rails sets a default policy of strict-origin-when-cross-origin, so # hide that and just send the one we've configured for nginx proxy_hide_header Referrer-Policy; add_header Referrer-Policy strict-origin-when-cross-origin; ## Individual nginx logs for this GitLab vhost access_log /var/log/gitlab/nginx/gitlab_access.log; error_log /var/log/gitlab/nginx/gitlab_error.log; if ($http_host = "") { set $http_host_with_default "gitlab.zhoumx.net"; } if ($http_host != "") { set $http_host_with_default $http_host; } gzip on; gzip_static on; gzip_comp_level 2; gzip_http_version 1.1; gzip_vary on; gzip_disable "msie6"; gzip_min_length 250; gzip_proxied no-cache no-store private expired auth; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json; ## https://github.com/gitlabhq/gitlabhq/issues/694 ## Some requests take more than 30 seconds. proxy_read_timeout 3600; proxy_connect_timeout 300; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host_with_default; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Ssl on; location ~ (/api/v\d/jobs/\d+/artifacts$|\.git/git-receive-pack$|\.git/gitlab-lfs/objects|\.git/info/lfs/objects/batch$) { proxy_cache off; proxy_pass http://gitlab-workhorse; proxy_request_buffering off; } location /-/grafana/ { proxy_pass http://localhost:3000/; } # health checks configuration include /var/opt/gitlab/nginx/conf/gitlab-health.conf; location / { proxy_cache off; proxy_pass http://gitlab-workhorse; } location /assets { add_header X-Content-Type-Options nosniff; proxy_cache gitlab; proxy_pass http://gitlab-workhorse; } error_page 404 /404.html; error_page 500 /500.html; error_page 502 /502.html; location ~ ^/(404|500|502)(-custom)?\.html$ { root /opt/gitlab/embedded/service/gitlab-rails/public; internal; } } ``` ``` # 生效配置文件 gitlab-ctl reconfigure # 重启nginx服务 systemctl restart nginx ``` ## gitlab头像不显示 使用以下命令更改GitLab默认使用的头像引用URL: ``` vim /var/opt/gitlab/gitlab-rails/etc/gitlab.yml plain_url: http://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon ssl_url: https://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon # 重新启动gitlab gitlab-ctl restart ``` 这种方法重新配置后会失效,建议使用下面这一种 ``` vim /etc/gitlab/gitlab.rb ### Gravatar Settings gitlab_rails['gravatar_plain_url'] = 'http://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon' gitlab_rails['gravatar_ssl_url'] = 'https://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon' # 重新配置gitlab gitlab-ctl reconfigure # 重启gitlab gitlab-ctl restart ``` # Gitlab Runner部署 ## 添加官方Gitlab库 For Debian/Ubuntu/Mint: ``` curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash ``` For RHEL/CentOS/Fedora: ``` curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash ``` ## 安装最新版Gitlab Runner For Debian/Ubuntu/Mint: ``` sudo apt-get install gitlab-runner ``` For RHEL/CentOS/Fedora: ``` yum install gitlab-runner ``` ## To register a runner under Linux ``` gitlab-runner register ``` 查看运行状态 ``` gitlab-runner status ``` # Blog流水线部署配置文件 ```yaml vim .gitlab-ci.yml # 定义执行的各个阶段及顺序 stages: - prebuild - build - deploy # 克隆代码库并安装依赖 run1: tags: - ssh - local stage: prebuild script: - npm install hexo-cli -g - cd /opt - git clone https://$username:$gitlab_deploy@gitlab.zhoumx.net/root/blog.git - cd /opt/blog - npm install # 生成静态网页内容并上传到OSS run2: tags: - ssh - local stage: build script: - cd /opt/blog - hexo clean all - hexo generate - cp -rf /opt/blog/public/* /opt/web_file - cp -rf /opt/blog/robots.txt /opt/web_file - rm -rf /opt/blog # 从OSS下载静态网页内容并重载nginx run3: tags: - ssh - local stage: deploy script: - ssh -t -p 21259 root@10.0.1.30 "cp -rf /opt/web_file/* /home/wwwroot/zhoumx/; cp -rf /opt/web_file/robots.txt /home/wwwroot/zhoumx/; nginx -s reload" ```
阿星
2024年1月21日 21:16
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码