配置gitee ssh免密拉取代码-唯一客服系统文档中心

Posted 唯一在线客服系统-开发技术笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置gitee ssh免密拉取代码-唯一客服系统文档中心相关的知识,希望对你有一定的参考价值。

Gitee

我们的客服系统代码托管于Gitee私有仓库
默认情况下只用于开发者自我代码管理,不对外公布。
如果你也是放在私有仓库进行托管,可以如下配置免密操作。

部署公钥免密拉取代码

部署公钥允许以只读的方式访问仓库,主要用于仓库在生产服务器的部署上,免去HTTP方式每次操作都要输入密码和普通SSH方式担心不小心修改仓库代码的麻烦。

部署公钥配置后的机器,只支持clone与pull等只读操作。

下面是单个仓库中的配置位置

如果是全部仓库都可使用是下面设置

注意:使用免密ssh拉取的方式时,我们的远程仓库地址要使用ssh的形式,不能是https的形式

切换https形式为ssh形式

1.查看当前仓库url地址

git remote -v

2.复制项目的ssh地址,然后使用命令git remote set-url 来重新设置url

git remote set-url origin git@gitee.com:someaccount/someproject.git

3.用命令 git remote -v 查看一下,url是否已经变成了ssh地址

git remote -v

生成/添加SSH公钥

Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。

你可以按如下命令来生成 sshkey:

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  
# Generating public/private ed25519 key pair...

注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。
现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。

按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_ed25519.pub 文件内容,获取到你的 public key

cat ~/.ssh/id_ed25519.pub
# ssh-ed25519 AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,添加生成的 public key 添加到仓库中。

添加后,在终端(Terminal)中输入

ssh -T git@gitee.com

首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You\'ve successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。

添加成功后,就可以使用SSH协议对仓库进行操作了。

仓库公钥和可部署公钥

为了便于用户在多个项目仓库下使用一套公钥,免于重复部署和管理的繁琐,Gitee 推出了「可部署公钥」功能,支持在一个仓库空间下使用当前账户名下/参与的另一个仓库空间的部署公钥,实现公钥共用。

GitHub + circleCI 自动构建/自动部署 应用

 GitHub + circleCI 自动构建/自动部署, 这里略过了单元测试,以部署 laravel 应用为例子

 比起 gitlab + ansible + genkins 操作起来节省了很多硬件资源,感谢 微软 免费了 GitHub 私有仓库


1、GitHub 相关

  a、创建 github 仓库(现在可以免费创建私有仓库了,个人项目能满足了)

  b、配置 SSH 公钥,可以走 SSH 渠道免密 拉取代码

2、circleCI 相关

  a、github 登陆 https://circleci.com ,创建一个任务,直接关联 github 的某个仓库

  b、配置此任务构建时 从 GitHub checkout 代码时 的 SSH 凭证,从github 配置的ssh key中选一个即可

  c、配置此任务部署时需要部署的 一对SSH的密钥(随便在哪里生成都行)中的 SSH rsa 私钥,******* 注意 : 将远程服务器需要在 ~/.ssh/authorized_keys 把在circleCI上部署的死要对应的公钥(id_rsa.pub)另起一行追加进去

 

3、整合代码

  代码中加入.circleci文件夹,并添加配置信息,就简单的实现自动构建和自动部署了

 

 

 

 

 

部署后的站点

技术图片

 

创建一个仓库并配置部署key

技术图片

 

circlrCI 任务后台配置 代码检出需要用到的 github ssh key,直接选一个即可技术图片

 

 

circleCI 配置能用SSH 私钥登陆远程服务器的 key

技术图片

 

circlrCI 配置任务信息

技术图片

 


circlrCI 配置任务执行过程中可以执行的脚本

技术图片

 

 circlrCI 后台能看见任务列表

技术图片

 

 具体的 构建/部署任务 详情

技术图片

 

 对于个人站点来说,节省了不少手动操作时间

 最后,附上 .circleci 的配置和相关脚本

config.yml

version: 2
jobs:
  build:
    docker:
      - image: circleci/php:7.1-browsers
    working_directory: /tmp/workspace
    steps:
      - run: echo "====================构建开始=============================="
      - checkout
      - restore_cache:
            keys:
            - v1-dependencies-{{ checksum "composer.json" }}
            # 如果没有匹配的缓存则使用最新的缓存
            - v1-dependencies-
      - run: composer install -n --prefer-dist
      # 运行单元测试
#      - run: phpunit
      - persist_to_workspace:
          root: .
          paths:
          - ./*
      - run: echo "====================构建完毕=============================="
  deploy:
    machine:
      timezone:
        Asia/Shanghai # 设置上海时区
      enabled: true
    working_directory: /tmp/workspace
    steps:
      - run: echo "====================部署开始=============================="
      - attach_workspace:
          at: /tmp/workspace
      - run: pwd && ls -al
      - run:
          name: Deploy Over SSH
          command: ./.circleci/deploy-master.sh
      - run: echo "====================部署完毕=============================="

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: master

 

 deploy-master.sh

#!/usr/bin/env bash

user=root
host=xxx.xxx.xxx.xxx
src=`pwd`"/"
des=/data/www/api.www.zjj7.com/
now=`date +"%Y-%m-%d %H:%M:%S"`

rsync -vzrc --delete  --exclude ".git"  --exclude ".env"   --exclude ".circleci"   $src  [email protected]$host:$des

ssh [email protected]$host "sudo chown -R www:www $des"

ssh [email protected]$host "chmod -R 775 $des/bootstrap/cache && chmod -R 775 $des/storage && cd $des && pwd && ls -al"

echo "$now update $host $des code"

 

以上是关于配置gitee ssh免密拉取代码-唯一客服系统文档中心的主要内容,如果未能解决你的问题,请参考以下文章

git免密拉取代码

Gitee之SSH与HTTPS免密(权限)配置

GitHub + circleCI 自动构建/自动部署 应用

GitHub + circleCI 自动构建/自动部署 应用

Git配置免密登录及常用操作的详细教程(基于Gitee平台)

git + idea 配置 github设置ssh免登陆方式提交拉取代码