2017-09-11 3 views
0

Das ist ein wiederkehrendes Problem und ich bin nicht qualifiziert, es zu reparieren, aber ich brauche es behoben, so dass ich lernen muss. Siehe this question für eine veraltete/nicht machbare Lösung, und for a similar question without answer.Sphinx-Dokumentation privat machen

Grundproblem, ich brauche Dokumentation für ein privates Python-Modul. Das Projekt wird auf Gitlab gehostet und ich verwende das CI, um die Dokumente zu generieren. Sie sind für die Welt sichtbar und das ist nicht ideal. Dies ist ein known issue und gitlab kann schließlich eine Lösung bieten. Ich kann nicht so lange warten. Mein Plan war, dieses Projekt (crypto-js) Code zu verwenden und es in den Docker Runner einzuschließen. Leider habe ich keine Ahnung, wie ich vorgehen soll oder ob das überhaupt möglich ist.

Mein ci.yml ist:

image: tsgkadot/sphinx-plantuml 

stages: 
    - build 
pages: 
    stage: build 
    script: 
    #- pip install -r requirements.txt -U 
    - sphinx-build -b html ./doc public 
    artifacts: 
    paths: 
     - public 
    tags: 
    - docker 

Soweit ich arbeiten können Krypto js mit Schnittstelle ist wie folgt:

var unencrypted = document.getElementById('unencrypted_html').value; 
var passphrase = document.getElementById('passphrase').value; 
var encrypted = CryptoJS.AES.encrypt(unencrypted, passphrase); 
var hmac = CryptoJS.HmacSHA256(encrypted.toString(), CryptoJS.SHA256(passphrase)).toString(); 
var encryptedMsg = hmac + encrypted; 

wo die erzeugte HTML-Datei (en) von Sphinx haben würde an die js übergeben werden und die Ausgabe ersetzen die Dateien. Alternativ lese ich auf SO, dass es möglich ist, js in Sphinx einzuschließen, aber ich sehe nicht, wie eine Datei sich selbst verschlüsseln könnte. Es macht mir nichts aus, ein einziges Passwort zu verwenden, um die gesamte Dokumentation zu verschlüsseln und dann das Passwort an die entsprechenden Parteien weiterzugeben.

Ich habe diese Ideen auch mit gitlab zum relevanten Thema gepostet, aber es scheint dort wenig Fortschritte zu geben, da sie nach einer vollständigeren Lösung suchen.

Wenn es einen Git-Hosting-Service wie gitlab gibt, der so etwas wie Seiten bietet, die privat für private Repositories sind, würde ich mich auch freuen, darauf zu wechseln. Irgendwelche Ideen oder Hinweise, wie man das umsetzt?

+0

Wie wird es mit dem Kunden geteilt? Sehen sie es online oder klonen und sehen sie lokal? –

+0

Das Modul ist Code für mich und meine Mitarbeiter, also die Idee ist es, die Dokumente online verfügbar (gitlab Seiten), der Code selbst ist geklont und lief auf lokalen Maschinen. Aus verschiedenen Gründen ist ein Self-Hosting-Git auf einem internen Server derzeit nicht möglich. –

+0

Es gab einen interessanten Vorschlag zu: [GitLab Diskussion] (https://gitlab.com/gitlab-org/gitlab-ce/issues/33422#note_40554673) –

Antwort

1

Also habe ich eine rudimentäre fix gemacht, die jetzt funktioniert:

Diese Gitlab Repo here ein Arbeitsbeispiel zeigt.

Es verwendet static password protection und wird auch in diesem issue diskutiert.