Github与Coding的双向同步

s

使用 GitHub Actions 将代码自动同步到 CODING

GitHub Actions 有一个特别好的功能是:有一个 GitHub Marketplace,目前有 7000 多个 Action,开发者可以从中挑选适合自己的 Action。

开发者也可以定义自己的 Action,也可以将自己的 Action 发布到 GitHub Marketplace。

这里定制了一个 Action 用于同步代码到 CODING: https://github.com/marketplace/actions/sync-repo-to-coding

每个仓库可以配置多个 workflow,在 GitHub 仓库的 .github/workflows 下添加用来定义 workflow 的 YAML 文件即可。

同步代码到 CODING 的 workflow 的 YAML 文件内容如下:

name: Sync Repo to CODING
on:
  push:
  schedule:
    # 每天北京时间0点同步
    - cron:  '0 16 * * *'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Sync Repo to CODING
      uses: serverlesslife-cn/sync-repo-to-coding@master
      env:
          # 在 GitHub Settings->Secrets 配置 CODING_PRIVATE_KEY
          SSH_PRIVATE_KEY: ${{ secrets.CODING_PRIVATE_KEY }}
      with:
          # 注意替换为你的 GitHub 源仓库地址git@github.com:dragoncqh/PaaS.Device.Portal.Plugins.git
          github-repo: "git@github.com:dragoncqh/PaaS.Device.Portal.Plugins.git"
          # 注意替换为你的 CODING 目标仓库地址
          coding-repo: "git@e.coding.net:sdjq/paas_hardware/paasplugins.gitt"

生成新SSH密钥

生成新 SSH 密钥

 

打开 Git Bash。

 

粘贴下面的文本(替换为您的GitHub 电子邮件地址)。

ssh-keygen -t rsa -C "dragoncqh@live.com"

 

如果使用新的Ed25519 算法:$ ssh-keygen -t ed25519 -C dragoncqh@live.com,不能PUSH进CODING

 

这将创建以所提供的电子邮件地址为标签的新 SSH 密钥。

 

Generating public/private ed25519 key pair.

 

提示您“Enter a file in which to save the key(输入要保存密钥的文件)”时,按 Enter 键。 这将接受默认文件位置。

 

Enter a file in which to save the key (/c/Users/you/.ssh/id_ed25519):[Press enter]

 

在提示时输入安全密码。 如不想使用密码可以连按回车两次。

实际命令如下:

Administrator@John-PC MINGW64 ~/.ssh
$ ssh-keygen -t rsa -C "dragoncqh@live.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa
Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:MBSPMFM8Dk3zOSgX0iJpEPQHKY1fWi8Egnqa0h5rvC0 dragoncqh@live.com
The key's randomart image is:
+---[RSA 3072]----+
|==o+B*B.         |
|.o*o+X=B .       |
|..oo*=B.=        |
|. .o.+.+ .       |
| =    . S        |
|+ o              |
|.o o             |
|  E.             |
| ..o.            |
+----[SHA256]-----+

Administrator@John-PC MINGW64 ~/.ssh
$

TotoriseGit使用SSH_KEY

GitHub2Coding脚本启用Token认证连结github仓库

github仓库开始启用Token认证,用户名密码模式将在2021年8月停止使用,所以要尽快停止使用用户名密码模式=>github仓库开始启用Token认证。

pipeline {
  agent any
  stages {
    stage('检出 GitHub') {
      steps {
        checkout([
          $class: 'GitSCM',
          branches: [[name: env.GIT_BUILD_REF]], 
          userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
        ])
      }
    }
    stage('推送到 CODING') {
      steps {
        sh "git push https://${PROJECT_TOKEN_GK}:${PROJECT_TOKEN}@e.coding.net/sdjq/paas_hardware/paasplugins.git HEAD:master"
      }
    }
  }
}

改为:

pipeline {
  agent any
  stages {
    stage('检出 GitHub') {
      steps {
        checkout([
          $class: 'GitSCM', 
          branches: [[name: env.GIT_BUILD_REF]], 
          userRemoteConfigs: [[url: 'https://dragoncqh:4a55c870d8c451204c7092d5bc2123e0d108505d@github.com/dragoncqh/PaaS.Device.Portal.Plugins.git']]
        ])
      }
    }
    stage('推送到 CODING') {
      steps {
        sh "git push https://${PROJECT_TOKEN_GK}:${PROJECT_TOKEN}@e.coding.net/sdjq/paas_hardware/paasplugins.git HEAD:master"
      }
    }
  }
}

参见

  1. 使用 CODING DevOps 部署 Serverless 应用

  2. 使用Coding的构建(持续集成CI)功能实现coding仓库和github的同步

  3. gitee-pages-action:GitHub Action 自动部署 Gitee Pages

  4. 通过GitHub Actions 实现私有仓库的免费Github Pages 部署

  5. 使用github actions,将私有仓库的构建文件发布到另一个公开仓库,并同步到gitee

  6. GitHub 私有仓库免费开启GitHub Pages 的可行性方案