[DOCKER] Erstellen Sie Java mit Wercker

http://www.wercker.com/

Wercker ist heutzutage ein beliebtes Cloud-basiertes CI-Tool. Es ist intuitiv und leicht zu verstehen, dass CI auf dem Docker-Image ausgeführt werden kann. Ich persönlich bin dankbar, dass es auch kostenlos mit dem privaten Repository von github zusammenarbeiten kann. ist.

Ich persönlich benutze es in mehreren Sprachen, aber hier werde ich eine Reihe von Schritten schreiben, um ein Java-Programm auf wercker zu erstellen.

Anwendungsfall

Hier wird das tatsächliche Einstellungsbeispiel anhand der folgenden Anwendungsfälle beschrieben.

Workflows

Diesmal ist es wie folgt.

  1. build
  1. maven
  1. Docker (nur Master)

image.png

Pipeline: build Da es sich um die Standard-Pipeline handelt, lasse ich sie unverändert und sende nur eine kleine Nachricht. Wenn für die nachfolgende Verarbeitung eine Dateierstellung oder -kopie erforderlich ist, erfolgt dies tatsächlich hier.

wercker.yml


box: busybox
build:
  steps:
    - script:
        name: echo
        code: |
          echo " ${WERCKER_GIT_REPOSITORY}"

Pipeline: maven Maven ausführen. maven ist für box angegeben, damit die Befehle java und maven verwendet werden können.

wercker.yml


maven:
  box: maven:3.5.2-jdk-8-alpine
  steps:
    - java/maven:
        goals: clean package
        cache_repo: true
    - java/maven:
        goals: sonar:sonar
        maven_opts: -Dsonar.host.url=${SONAR_URL} -Dsonar.login=${SONAR_LOGIN_KEY}
        cache_repo: true
    - script:
        name: copy to output
        code: |
          cp target/sada4j-*.jar $WERCKER_OUTPUT_DIR/sada4j.jar
  after-steps:
    - slack-notifier:
        url: ${SLACK_WEBHOOK_URL_NOTIFY}
        channel: ${SLACK_ROOM_NOTIFY}
        notify_on: failed
        username: wercker maven notify

Hier ist ein kurzer Blick darauf, was Sie tun.

Ausführen von Maven mit Java / Maven-Schritt

Der Schritt zum Ausführen von Maven wird im Voraus in wercker definiert. Wenn Sie beim Ausführen von Maven Java / Maven für den Schritt angeben, wird die Ausführungsumgebung von Maven automatisch erstellt.

Weitere Informationen zu den Optionen, die angegeben werden können, finden Sie in den folgenden Dokumenten. https://github.com/wercker/step-maven

Verwendung von Umgebungsvariablen

Sie können Umgebungsvariablen in Worcker verwenden. http://devcenter.wercker.com/docs/environment-variables

Die folgenden drei Arten von Umgebungsebenen können definiert werden. Der Umfang der Einstellungen wird nach Bedarf angepasst.

Die von wercker standardmäßig unterstützten Umgebungsvariablen lauten wie folgt. http://devcenter.wercker.com/docs/environment-variables/available-env-vars

Speichern der Ausführungsergebnisse in $ WERCKER_OUTPUT_DIR

In wercker wird der CI-Prozess auch für den Docker-Container ausgeführt, sodass Dateien normalerweise nicht zwischen verschiedenen Pipelines vererbt werden.

Wenn die Datei in nachfolgenden Pipelines verfügbar sein soll, müssen Sie sie in das durch $ {WERCKER_OUTPUT_DIR} angegebene Verzeichnis legen. Im obigen Beispiel werden die Dateien, die in das Docker-Image aufgenommen werden sollen, für den nachfolgenden Docker-Image-Generierungsprozess in "$ {WERCKER_OUTPUT_DIR}" festgelegt.

Slack-Benachrichtigung durch Nachschritte

Mit After-Steps können Sie Schritte definieren, die immer ausgeführt werden, unabhängig davon, ob die Verarbeitung in der Pipeline ordnungsgemäß funktioniert oder nicht. Im obigen Beispiel wird der Slack-Notifier-Schritt verwendet, um Slack zu benachrichtigen.

image.png

Wenn Sie im Fall von Slack-Notifier "notify_on: failed" schreiben, können Sie eine Benachrichtigung nur senden, wenn der Prozess des Schritts fehlschlägt.

Pipeline: docker Schieben Sie das Docker-Image zu Amazon ECR. Mit Wercker können Sie jedes Docker-Image mithilfe des Schritts intern / Docker-Push in das Docker-Repository verschieben.

Die offizielle Dokumentation von Wercker (http://devcenter.wercker.com/docs/containers/pushing-containers) enthält ein Beispiel für das folgende Docker-Repository:

Hier ist ein Beispiel, wie Sie auf ECR umstellen können.

wercker.yml


docker:
  box: openjdk:8-jdk-alpine
  steps:
    - internal/docker-push:
        aws-access-key: ${AWS_ACCESS_KEY_ID}
        aws-secret-key: ${AWS_SECRET_ACCESS_KEY}
        aws-region: ${AWS_REGION}
        aws-registry-id: ${AWS_REGISTRY_ID}
        aws-strict-auth: false
        repository: sada4j
        tag: latest
        ports: 8080
        working-dir: ${WERCKER_SOURCE_DIR}
        entrypoint: java -jar sada4j.jar

Allzweckgeschichte

Docker Push by Wercker kann die Definition des Docker-Builds mit Dockerfile nicht beschreiben. Ein Docker-Image wird mit den folgenden Regeln erstellt.

Im Folgenden finden Sie Details zu den Optionen, die Sie angeben können. http://devcenter.wercker.com/docs/steps/internal-steps#docker-push

Da die Spezifikationen wie oben beschrieben sind, muss im Betrieb Folgendes berücksichtigt werden.

--Entfernen Sie nicht benötigte Dateien auf der Box

Amazon ECR spezifische Geschichte

Wenn Sie auf ECR drücken möchten, stellen Sie die folgenden Werte ein.

Wir möchten die Anmeldeinformationen nicht direkt in wercker.yml schreiben, daher legen wir sie in der Wercker-Umgebungsvariablen fest.

Jetzt sollten Sie in der Lage sein, Java zu erstellen und gemäß Ihrem Anwendungsfall in das Docker-Repository zu pushen.

Andere Tipps

wercker-cli

Was meiner Meinung nach Wercker anderen CI SaaS überwältigend überlegen ist, ist die Fülle an Tools, mit denen der Betrieb in der lokalen Umgebung überprüft werden kann.

Wercker bietet ein Befehlszeilentool namens wercker-cli, mit dem Sie das Verhalten auf dem Server auch in der lokalen Umgebung reproduzieren und ausführen können.

$ wercker build --pipeline maven
--> No Docker host specified, checking: /var/run/docker.sock
--> Executing pipeline
--> Running step: setup environment
Pulling from library/openjdk: latest
Digest: sha256:9745ed74401b23fb845b4eb7ae07ecb7dc2d40bece6bdb089975a20f76766401
Status: Image is up to date for openjdk:latest
--> Copying source to container
--> Running step: wercker-init
--> Running step: maven
02:19:34:  Hello from the Maven Wercker Step
(snip.)

Sie können dieselben Funktionen wie mit den unten beschriebenen APIs ausführen, z. B. Anweisungen zum Erstellen des Wercker-Servers. Weitere Informationen finden Sie auf den folgenden Websites und in der Befehlshilfe. http://www.wercker.com/cli

Derzeit sind nur OSX- und Linux-Versionen verfügbar.

API

Die folgenden APIs werden bereitgestellt. Sie können die Anwendung einstellen und Anweisungen zum Erstellen geben. http://devcenter.wercker.com/docs/api/endpoints

Wercker Source IP

Aufgrund des CI / CD-Flusses kann es Fälle geben, in denen Wercker und bestimmte interne Tools kombiniert und verwendet werden müssen. In diesem Fall ist es möglich, die Quell-IP-Adresse von Wercker anzugeben und die Verbindung nur für eine bestimmte IP zuzulassen.

Werckers Quell-IP-Adresse wird als Referenz im folgenden Format veröffentlicht. https://s3.amazonaws.com/status.wercker.com/worker_ips/production/public.json

Verwenden Sie das in ECR in der Box registrierte Docker-Image

Schreiben Sie wie folgt in das Feld wercker.yml.

  box:
    id: <docker image name>
    aws-access-key: ${AWS_ACCESS_KEY_ID}
    aws-secret-key: ${AWS_SECRET_ACCESS_KEY}
    aws-region: ${AWS_REGION}
    repository: <docker image name>
    aws-registry-id: ${AWS_REGISTRY_ID}

Recommended Posts

Erstellen Sie Java mit Wercker
Erstellen und testen Sie Java + Gradle-Anwendungen mit Wercker
Vagabund Java bauen
CICS-Java-Anwendung ausführen- (3) Build-Management mit Gradle
CICS-Java-Anwendung ausführen- (2) Build-Management mit Maven
Erstellen Sie OpenCV mit Java Wrapper unter Ubuntu 18.04
Installieren Sie Java mit Homebrew
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Baue Doma1 mit Ant
Java baut ein Dreieck
Erster Gradle Build (Java)
Erstellen Sie eine E2E-Testumgebung mit Selenium (Java).
Schalten Sie Java mit direnv
Erstellen Sie mit Gradle mit VSCode Java → Ausführen
Baue Growai mit Centos7
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Bazel mit Alpen bauen
Endian-Konvertierung mit JAVA
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code auf dem Mac
Überprüfen Sie die Abdeckung mit Codecov in der Java + Gradle + Wercker-Konfiguration
Erstellen Sie eine Java-Programmentwicklungsumgebung mit Visual Studio Code
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erstellen Sie GitLab / Mattermost mit DockerForWindows
Java-Konfiguration mit Spring MVC
Experimentieren wir mit der Java-Inline-Erweiterung
Erstellen Sie mit Centos7 ein Softether-VPN.
[Vorlage] MySQL-Verbindung mit Java
Schreiben Sie Java Try-Catch mit Optional neu
Installieren Sie Java 7 mit Homebrew (Fass)
[Java] JSON-Kommunikation mit Jackson
Java zum Spielen mit Function
Versuchen Sie eine DB-Verbindung mit Java
Aktivieren Sie Java EE mit NetBeans 9
[Java] JavaConfig mit statischer innerer Klasse
Versuchen Sie gRPC mit Java, Maven
Lassen Sie uns Excel mit Java betreiben! !!
Java-Versionsverwaltung mit SDKMAN
RSA-Verschlüsselung / Entschlüsselung mit Java 8
Sortieren Sie Zeichenfolgen als charakteristische Funktion mit Java
Objektorientiert mit Strike Gundam (Java)
[Java] Inhaltserfassung mit HttpCliient
Java-Versionsverwaltung mit jenv
Optimieren Sie Java-Tests mit Spock
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Fehler beim Spielen mit Java
Verwenden von Mapper mit Java (Spring)
Java Study Memo 2 mit Progate
Erste Schritte mit Java Basics
Ninja-Build mit Smart Differential Build
Erstellen Sie AWS Lambda mit Quarkus
Saisonale Anzeige mit Java-Schalter
Verwenden Sie SpatiaLite mit Java / JDBC