Files
ssh-checkout/action.yml
T
2026-06-16 09:20:44 +00:00

68 lines
1.8 KiB
YAML

name: 'Gitea SSH Checkout'
description: 'Clones a repository via SSH on a custom port.'
inputs:
ssh-key:
description: 'Private SSH Key'
required: true
ref:
description: 'Branch, tag, or commit SHA to checkout'
required: false
default: ''
repository:
description: 'Repository to clone (e.g., owner/repo)'
required: false
default: ${{ github.repository }}
host:
description: 'Git server hostname'
required: false
default: 'git.mmquack.nl'
port:
description: 'SSH port'
required: false
default: '2222'
runs:
using: "composite"
steps:
- name: Run SSH Clone
shell: bash # Required for composite actions
env:
SSH_KEY: ${{ inputs.ssh-key }}
REF: ${{ inputs.ref }}
REPO: ${{ inputs.repository }}
HOST: ${{ inputs.host }}
PORT: ${{ inputs.port }}
run: |
# 1. Setup the SSH directory
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 2. Decode the Base64 secret back into a properly formatted file
echo "$SSH_KEY" | base64 --decode > ~/.ssh/gitea_key
chmod 600 ~/.ssh/gitea_key
# 3. Configure SSH for the custom port and bypass host key prompt
cat >> ~/.ssh/config <<EOF
Host $HOST
Port $PORT
User git
IdentityFile ~/.ssh/gitea_key
StrictHostKeyChecking no
EOF
# 4. Ensure workspace is empty before cloning
cd $GITHUB_WORKSPACE
find . -mindepth 1 -delete
# 5. Clone the repository
echo "Cloning $REPO..."
git clone ssh://git@$HOST:$PORT/$REPO.git .
# 6. Checkout the specific ref
if [ -n "$REF" ]; then
echo "Checking out ref: $REF"
git checkout "$REF"
else
echo "No Ref provided to checkout!"
fi