webentwicklung-frage-antwort-db.com.de

Wie kann ich einen Edelstein angeben, der aus einem privaten Github-Repository abgerufen werden soll?

Ich habe ein privates Repository auf Github, das ich verwenden möchte. Ich setze meine App bei Heroku ein. Wie kann ich ein privates Repository als Quelle in meiner gemfile angeben? Ich kann mir vorstellen, dass es nicht ausreicht, einfach zu sagen

gem "mygem", :git=>"my github address" 
58
picardo

Gemäß dem technischen Support von Heroku ist dies der einfachste Weg, indem Sie den Benutzernamen und das Kennwort in die URL eingeben, wie in Basic HTTP Auth, z.

gem 'my_gem', :git => 'https://my_username:[email protected]/my_github_account/my_repo.git', :ref => 'revision_no'

Das hat für uns funktioniert. Dies ist immer noch etwas unbefriedigend, da wir ein Passwort in das Gemfile eingeben mussten. Wir behandelten dies, indem wir ein neues github-Benutzerkonto hinzufügten und dieses Konto als Mitbearbeiter für das gem-Projekt hinzufügen. Immer noch keine narrensichere Sicherheit, aber die Auswirkungen sind enger.

Andere Optionen, über die ich gelesen habe, sind Ihren eigenen Gem-Server einrichten oder Hersteller des Gems .

Update 16.05.2012: Eine andere Möglichkeit, das Kennwort in die Variable Gemfile zu setzen, besteht darin, das Kennwort in eine Umgebungsvariable zu setzen. Auf Heroku tun Sie dies mit heroku config:add VAR=value, und dann würden Sie in der Gemfile diese Variable verwenden, z.

gem 'my_gem',
  :git => "https://#{ENV['var_private_gem_username']}:#{ENV['var_private_gem_password']}@github.com/my_github_account.git",
  :ref => 'rev'

Dies ist der Standard bei Heroku, um zu vermeiden, dass Kennwörter, API-Schlüssel und Anmeldeinformationen in den Code eingefügt werden. Für lokale Entwicklung/Test können Sie diese Umgebungsvariablen festlegen. Vorausgesetzt, Ihr Entwicklungscomputer ist für den SSH-Zugriff auf github eingerichtet, benötigen Sie keine Anmeldeinformationen für die lokale Entwicklung (die SSH-Anmeldeinformationen sind bereits in Kraft). Sie könnten also eine bedingte Logik aufstellen:

private_repo_credentials = %w(var_private_gem_username var_private_gem_password).
  map { |var| ENV[var] }.compact.join(':')
private_repo_credentials << '@' unless private_repo_credentials.empty?
# private_repo_credentials will be "" if neither var is set
# private_repo_credentials will be "username:[email protected]" if they are set
gem 'my_gem',
  :git => "https://#{private_repo_credentials}github.com/my_github_account.git",
  :ref => 'rev'

Ich habe diesen letzten Teil nicht getestet. Bitte geben Sie Feedback.

45
Wolfram Arnold

Der beste Weg, einen Edelstein aus einem privaten Repo zu implementieren, ist die Verwendung von GitHubs OAuth-Zugriff . Um dies zu tun:

  1. Erstellen Sie einen GitHub-Benutzer mit Zugriff auf das betreffende Repo (am besten für Teams. Wenn Sie Ihre persönlichen Zugriffstoken offenlegen möchten, können Sie einfach Ihr eigenes Konto verwenden).

  2. Erstellen Sie ein GitHub-OAuth-Token für den Benutzer. Es ist sehr einfach, dies über die GitHub-API zu tun, nur mit curl; Siehe die OAuth-API für mehr.

  3. Fügen Sie das Token zur git-URL in Ihrem Gemfile hinzu. Beispiel:

gem 'mygem', git: 'https://xxx123abc:[email protected]/user_or_team/mygem.git'

Ich verwende diese Methode derzeit bei Heroku und es funktioniert großartig. Das Schöne daran ist, dass Sie Ihre persönlichen Daten nicht preisgeben müssen. Sie können das Token jederzeit wieder widerrufen oder neu erstellen, wenn etwas gefährdet ist.

110
Seth Bro

Ich habe festgestellt, dass ich, wenn ich von meinem Terminal aus Zugriff auf github habe ( durch Hochladen eines ssh-Schlüssels zu github ), einfach Folgendes tun kann:

gem 'my_gem', :git => '[email protected]:my_user/my_repo.git', :ref => 'revision_no'

ohne meinen Code mit meinem git-Benutzernamen oder Passwort zu verschmutzen

2
gardenofwine
1
itsnikolay

Neben der Antwort von @ seth-bro können wir auch bundle config verwenden, um die Anmeldeinformationen mithilfe des Bundlers zu konfigurieren, sodass das oAuth-Token nicht in der Gemfile verfügbar gemacht werden muss. 

Syntax: bundle config github.com <your_github_oauth_token>

Siehe: https://Gist.github.com/sebboh/f1dfe4f096746c45f3e9ea06a09743a0https://bundler.io/v1.16/bundle_config.html

1
Virtual

Hoffentlich auch 2015 relevant, können Sie https://github.com/siassaj/heroku-buildpack-git-deploy-keys mit einem deploy-Schlüssel von github verwenden.

Auf diese Weise vermeiden Sie die Eingabe des Benutzernamens und die Weitergabe in Gemfile, was als einfacher Text im Gemfile.lock enden wird

0
sia