2015-09-07 11 views
11

ich für eine einfache und saubere Art und Weise suchen Artefakte mit Gitlab CI auf Artifactory bauen zu veröffentlichen.Wie man Builds von GitLab CI in Artifactory veröffentlicht?

Ich konnte https://gitlab.com/gitlab-org/omnibus/blob/af8af9552966348a15dc1bf488efb29a8ca27111/lib/omnibus/publishers/artifactory_publisher.rb sehen, aber ich war nicht in der Lage, irgendeine Dokumentation darüber zu finden, wie ich es konfigurieren soll, damit es funktioniert.

Anmerkung: Ich bin für einen gitlab_ci.yaml Ansatz suchen, nicht in sie extern zu implementieren.

+2

Haben Sie Fortschritte dabei gemacht? – user319862

Antwort

3

Auf einer grundlegenden Ebene kann dies mit den JFrog CLI Tool durchgeführt werden. Es sei denn, Sie Konfiguration in Ihrer .gitlab-ci.yml einbetten möchten (ich nicht) werden Sie zuerst ausführen müssen (auf dem Läufer):

jfrog rt c 

Dies fordert für Ihre Artifactory URL und einen API-Schlüssel standardmäßig. Nachdem diese Elemente eingegeben haben, werden Sie feststellen, ~/.jfrog/jfrog-cli.conf JSON enthält etwa so:

{ 
     "artifactory": { 
     "url": "http://artifactory.localdomain:8081/artifactory/", 
     "apiKey": "AKCp2V77EgrbwK8NB8z3LdvCkeBPq2axeF3MeVK1GFYhbeN5cfaWf8xJXLKkuqTCs5obpzxzu" 
     } 
    } 

Sie diese Datei in das Home-Verzeichnis Gitlab Läufer kopieren - in meinem Fall /home/gitlab-runner/.jfrog/jfrog-cli.conf

Sobald dies geschehen ist, den Läufer wird mit Artifactory mit dieser Konfiguration authentifiziert. Es gibt eine Reihe weiterer Möglichkeiten zur Authentifizierung, wenn Sie keine API-Schlüssel verwenden möchten - überprüfen Sie die JFrog-CLI-Dokumente.

Bevor sie sicher, dass die ‚JFrog‘ ausführbare Datei in einem bekannten Ort ist, mit Berechtigungen für den Gitlab-runner Benutzer ausführen. Von hier aus können Sie das Dienstprogramm in Ihrem .gitlab-ci.yml nennen - hier ist ein minimales Beispiel für eine node.js App, die den Git-Tag als Artefakt Version passieren:

stages: 
    - build-package 
build-package: 
    stage: build-package 
    script: 
    - npm install 
    - tar -czf test-project.tar.gz * 
    - /usr/local/bin/jfrog rt u --build-name="Test Project" --build-number="${CI_BUILD_TAG}" test-project.tar.gz test-repo 
0

Ich weiß, das genau Ihre Frage nicht beantworten, aber Ich habe diese Frage von einer verwandten Suche, so dass ich dachte, dass es auch für andere relevant sein könnte:

Ich landete mit einem mvn deploy Job, der an die deploy Bühne für gitlab gebunden war.

Hier ist der relevante Auftrag Teil:

deploy:jdk8: 
    stage: test 
    script: 
    - 'mvn $MAVEN_CLI_OPTS deploy site site:stage' 
    only: 
    - master 
    # Archive up the built documentation site. 
    artifacts: 
    paths: 
    - target/staging 
    image: maven:3.3.9-jdk-8 
2

Wenn Sie mit Maven Gebäude sind dies, wie ich meine tun verwaltet: Sie müssen Ihre artifactory Anmeldeinformationen (:

Hinweis Benutzer und pass) bereit.

  1. Erstellen Sie ein Hauptkennwort und generieren Sie daraus ein verschlüsseltes Kennwort. Das Verfahren, wie man einen Masterpass erstellen here

  2. In Ihrer Pipeline Einstellungen in Gitlab, erstellen 2 geheime Variablen, einen für die Benutzername und das anderes für Ihr verschlüsseltes Passwort gefunden werden.

  3. Aktualisieren oder erstellen Sie eine settings.xml Datei in .m2 Verzeichnis für Maven-Builds.Ihre settings.xml sollte wie folgt aussehen:

    <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
        <servers> 
        <server> 
         <id>central</id> 
         <username>${env.ARTIFACTORY_USER}</username> 
         <password>${env.ENCRYPTED_PASS}</password> 
        </server> 
        </servers> 
    </settings> 
    
  4. In Ihrer .gitlab-ci.yml Datei, müssen Sie diesen settings.xml wie folgt verwenden:

    image: maven:latest 
    
    variables: 
        MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode" 
        MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" 
    
    cache: 
        paths: 
        - .m2/repository/ 
        - target/ 
    
    build: 
        stage: build 
        script: 
        - mvn $MAVEN_CLI_OPTS compile 
    

und das ist es. Das sollte funktionieren. Sie können here besuchen, um mehr über die Verwendung von Artefakte mit maven zu erfahren.