I made this workflow to push changes from my private
github repo to push it to another private
repo on another platform
name: Push to repo
on:
workflow_dispatch:
BRANCH:
description: 'Branch to use'
required: true
default: 'production'
type: choice
options:
- production
- develop
jobs:
push-to-ccfe:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup SSH Keys and known_hosts
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
mkdir -p ~/.ssh
ssh-keyscan git.something >> ~/.ssh/known_hosts
ssh-agent -a ${{ env.SSH_AUTH_SOCK }} > /dev/null
ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}"
- name: setup git and push to remote
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "${{ secrets.GH_MAIL }}"
git remote add newremote git@git.something
- name: Check branch and push
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
git fetch origin -a
git push newremote ${{ inputs.BRANCH }}:${{ inputs.BRANCH }}
it's all good up until I actually try to push
where I first get a warning:
warning: no common commits
and then the actual error:
! [rejected] develop -> develop (non-fast-forward)
error: failed to push some refs to 'git.something'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
I don't understand if I try from the terminal and push I get no errors.
p.s. the point of this workflow is to avoid using the terminal, I want to put a cronjob so that changes to this repo are pushed in another remote.
apparently the solution was to change the checkout
command at the beginning.
this gets me what I needed
name: Push to repo
on:
workflow_dispatch:
inputs:
BRANCH:
description: 'Branch to use'
required: true
jobs:
push-to-domainXXX:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup SSH Keys and known_hosts
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
mkdir -p ~/.ssh
ssh-keyscan git.domainXXX >> ~/.ssh/known_hosts
ssh-agent -a ${{ env.SSH_AUTH_SOCK }} > /dev/null
ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}"
- name: setup git and push to remote
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "${{ secrets.GH_MAIL }}"
git remote add second_origin git@domainXXX:myusername/repo_name
- name: Check branch and push
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
git push second_origin ${{ inputs.BRANCH }}