A plugin for synchronizing code between different Git platforms. Supports code synchronization to other Git hosting platforms via HTTPS or SSH.
For example, syncing from CNB to GitHub.
The plugin supports two sync modes: Push mode (default) and Rebase mode.
Please refer to the parameter list below for specific parameters.
Directly pushes source repository content to the target repository.
When using push mode in CNB, it is recommended to store sensitive information like GIT_USERNAME, GIT_PASSWORD in the key repository, then use imports to reference variables for enhanced security.
main:
push:
- stages:
- name: sync to github
image: tencentcom/git-sync
settings:
target_url: https://github.com/username/repo.git
auth_type: https
username: ${GIT_USERNAME}
password: ${GIT_ACCESS_TOKEN}
When using push mode in GitHub Actions, note that you need to use GitHub Secrets to securely store sensitive information
name: Sync to CNB
on: [push]
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Sync to CNB Repository
run: |
docker run --rm \
-v ${{ github.workspace }}:${{ github.workspace }} \
-w ${{ github.workspace }} \
-e PLUGIN_TARGET_URL="https://cnb.cool/username/repo.git" \
-e PLUGIN_AUTH_TYPE="https" \
-e PLUGIN_USERNAME="cnb" \
-e PLUGIN_PASSWORD=${{ secrets.GIT_PASSWORD }} \
-e PLUGIN_FORCE="true" \
tencentcom/git-sync
Synchronizes code using rebase method, preserving specific files in the target repository (such as platform-specific
configuration files). Suitable for scenarios like keeping .cnb.yml when syncing from GitHub to CNB.
Using rebase mode in CNB:
main:
push:
- stages:
- name: sync to github with rebase
image: tencentcom/git-sync
settings:
target_url: https://github.com/username/repo.git
auth_type: https
username: ${GIT_USERNAME}
password: ${GIT_ACCESS_TOKEN}
sync_mode: rebase
Using rebase mode in GitHub Actions:
name: Sync to CNB
on: [push]
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Sync to CNB Repository
run: |
docker run --rm \
-v ${{ github.workspace }}:${{ github.workspace }} \
-w ${{ github.workspace }} \
-e PLUGIN_TARGET_URL="https://cnb.cool/username/repo.git" \
-e PLUGIN_AUTH_TYPE="https" \
-e PLUGIN_USERNAME="cnb" \
-e PLUGIN_PASSWORD=${{ secrets.GIT_PASSWORD }} \
-e PLUGIN_SYNC_MODE="rebase" \
tencentcom/git-sync
docker run --rm \
-e PLUGIN_TARGET_URL="https://github.com/username/repo.git" \
-e PLUGIN_AUTH_TYPE="https" \
-e PLUGIN_USERNAME="your-username" \
-e PLUGIN_PASSWORD="your-access-token" \
-e PLUGIN_BRANCH="main" \
-v $(pwd):$(pwd) \
-w $(pwd) \
tencentcom/git-sync
| Parameter | Required | Default | Description |
|---|---|---|---|
| target_url | Yes | - | Target repository URL, supports HTTPS or SSH format |
| auth_type | No | https | Authentication type, options: https or ssh |
| username | No* | - | Username for HTTPS auth (*required when using HTTPS) |
| password | No* | - | Password or access token for HTTPS (*required when using HTTPS) |
| ssh_key | No* | - | SSH private key content (*required when using SSH) |
| branch | No | - | Target branch to push. Pushes all branches if not specified |
| force | No | false | Enable force push (--force option). Default true in rebase |
| push_tags | No | false | Whether to push tags |
| git_user | No | Git Sync Plugin | Username used for Git commits |
| git_email | No | git-sync@plugin.local | Email used for Git commits |
| git_host | No | - | Custom Git server domain |
| sync_mode | No | push | Sync mode, options: push or rebase |
HTTPS Authentication Failure
Push Failure
force: true if encountering conflictsCustom Git Server
git_host parameter is set correctly