Skip to content
git-merge

GitHub Action

Mirror Repository Action

v1.0.0 Latest version

Mirror Repository Action

git-merge

Mirror Repository Action

Mirror Git Repository to Remote Host

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Mirror Repository Action

uses: cssnr/mirror-repository-action@v1.0.0

Learn more about this action in cssnr/mirror-repository-action

Choose a version

Tags Test Quality Gate Status GitHub Release Version GitHub Last Commit Codeberg Last Commit GitHub Top Language GitHub Org Stars Discord

Mirror Repository Action

Mirror Git Repository to Remote Host.

Inputs

input required default description
url Not w/ host - * Full URL to Mirror, overrides: host/owner/repo
host Not w/ url - * Full Host to Mirror, example: https://codeberg.org
owner No Repo Owner * Repository Owner of Mirror (if different from source)
repo No Repo Name * Repository Name of Mirror (if different from source)
create No - * Set to true to attempt to Create the Mirror Repo
username No Repo Owner Username for Authentication to Mirror
password Yes - Token or Password for Authentication to Mirror

url/host - You must provide either a full repository url or a host value.

owner/repo - If different from source, you must specify these values.

create - Tested with codeberg but should also work with gitea/forgejo. Do not set or leave empty to disable.

  1. Create a Token for Mirror to use as a Password for Pushing Commits, or Creating Repositories.

  2. Create Remote Repository to Mirror, or set create to true, for example: https://codeberg.org

  3. Go to the settings for your source repository on GitHub and add the CODEBERG_TOKEN secret.

    • For organizations, you can add the token one time at the Organization level.
  4. Add the following file to source repository on GitHub: .github/workflows/mirror.yaml

    • The owner is automatically set to the GitHub Organization or Username if personal. Set to override.
    • The repo is automatically set to the GitHub Repository Name. This should only be set to rename repo.
    • For Codeberg, use the host below and set the username to your Codeberg username.

The below yaml is available in this file: .github/workflows/mirror.yaml

name: 'Mirror'

on:
  workflow_dispatch:
  release:
    types: ['published']
  push:
    branches: ['**']
    tags: ['**']

jobs:
  mirror:
    name: 'Mirror'
    runs-on: ubuntu-latest
    timeout-minutes: 5

    steps:
      - name: 'Checkout'
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: 'Mirror to Codeberg'
        uses: cssnr/mirror-repository-action@master
        with:
          #url: https://codeberg.org/cssnr/mirror-repository-action
          host: https://codeberg.org
          #owner: cssnr
          #repo: mirror-repository-action
          create: true
          username: shaner
          password: ${{ secrets.CODEBERG_TOKEN }}

Important

Checkout with: fetch-depth: 0 is necessary!

Support

For general help or to request a feature, see:

If you are experiencing an issue/bug or getting unexpected results, you can:

Contributing

Currently, the best way to contribute to this project is to star this project on GitHub.

Additionally, you can support other GitHub Actions I have published:

For a full list of current projects to support visit: https://cssnr.github.io/

Development

  1. Install act: https://nektosact.com/installation/index.html
  2. List Workflows: act -l
  3. Run a Workflow: act -j test

If you need files from .gitignore use: --use-gitignore=false

For advanced using with things like secrets, variables and context see: https://nektosact.com/usage/index.html

You should also review the options from act --help

Note, the .env, .secrets and .vars files are automatically sourced with no extra options. To source event.json you need to run act with act -e event.json