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.
Hier wird das tatsächliche Einstellungsbeispiel anhand der folgenden Anwendungsfälle beschrieben.
Workflows
Diesmal ist es wie folgt.
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.
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
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
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.
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.
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
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
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.
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
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