2017-02-17 1 views
4

J'ai un référentiel Github que nous partageons pour notre développement. Pour assurer l'intégrité, nous avons décidé de signer nos commits et tags avec GPG.Comment limiter l'opération push pour autoriser uniquement les validations qui sont signées avec GPG dans github

Maintenant, comment puis-je empêcher les développeurs de pousser commits non signés à notre référentiel dans Github et aussi les clés publiques liste blanche GPG pour permettre de pousser commits roussi avec les clés publiques de la liste blanche

j'ai vérifié une pré-poussée crochets mais n'a pas fonctionné comme je l'ai décrit ci-dessus et le voici.

remote="$1" 
url="$2" 

z40=0000000000000000000000000000000000000000 

IFS=' ' 
while read local_ref local_sha remote_ref remote_sha 
do 
    if [ "$local_sha" = $z40 ] 
    then 
    # Handle delete 
    else 
    if [ "$remote_sha" = $z40 ] 
    then 
     # New branch, examine all commits 
     range="$local_sha" 
    else 
     # Update to existing branch, examine new commits 
     range="$remote_sha..$local_sha" 
    fi 

    # Check for WIP commit 
    commit=`git rev-list -n 1 --grep '^WIP' "$range"` 
    if [ -n "$commit" ] 
    then 
     echo "Found WIP commit in $local_ref, not pushing" 
     exit 1 
    fi 
    fi 
done 
exit 0 

Comment puis-je faire cela? Toute notion ou exemple serait très apprécié.

+0

Vous recherchez tout commit 'git log --grep '^ WIP'' trouverait. Vous semblez demander à vérifier si un commit n'a pas de signature GPG - vous devrez donc écrire un test pour "a ou manque de signature GPG". Ensuite, vous devrez peut-être décider si vous voulez vérifier, s'il y a * une * signature, si elle est valide. Mais StackOverflow n'est pas un service "écrivez le code pour moi" ... – torek

+0

Vous pouvez autoriser la validation des validations mais ajouter une vérification de statut qui nécessite leur signature avant la fusion. – osowskit

Répondre

1

Il semblerait que vous soyez sur GitHub Enterprise et que vous essayiez d'identifier create a pre-receive hook script qui rejette tout commit non signé - correct? Si oui, voici an open source GPG script de GitHub. Si vous êtes sur GitHub.com, notez qu'ils ne prennent pas en charge les hooks pré-réception et que vous souhaitez plutôt configurer un protected branch with required status check pour rejeter les travaux non signés. Pour la configuration des clés, avez-vous extrait this article?