Skip to content

cssnr/mirror-repository-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Tag Major GitHub Tag Minor GitHub Release Version Release Test Lint Quality Gate Status 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 or host - * Full URL to Mirror, overrides: host/owner/repo
host or url - * Full Host to Mirror, example: https://codeberg.org
owner - Repo Owner * Repository Owner of Mirror (if different from source)
repo - Repo Name * Repository Name of Mirror (if different from source)
create - - * Set to true to attempt to Create the Mirror Repo
username - 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 (overridden by url).

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

Setup Instructions

  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 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 to https://codeberg.org and set the username to your Codeberg username.

Tip

This process has been automated with a Web Extension.
However, currently requires manual installation: cssnr/github-extension

Example

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

name: 'Mirror'

on:
  workflow_dispatch:
  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@v1
        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!

Tags

The following rolling tags are maintained.

Tag Example Target Bugs Feat. Description
GitHub Tag vN vN.x.x Includes new features but is always backwards compatible.
GitHub Tag vN.N vN.N.x Only receives bug fixes. This is the most stable tag.
GitHub Release vN.N.N vN.N.N Not a rolling tag. Not recommended.

You can view the release notes for each version on the releases page.

Support

For general help or to request a feature, see:

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

For more information, see the CSSNR SUPPORT.md.

Contributing

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

For more information, see the CSSNR CONTRIBUTING.md.

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

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