http://www.wercker.com/
Wercker est un outil de CI basé sur le cloud populaire de nos jours.Il est intuitif et facile à comprendre que CI peut être exécuté sur l'image docker, et je suis personnellement reconnaissant qu'il puisse également fonctionner gratuitement avec le référentiel privé de github. est.
Je l'utilise personnellement dans plusieurs langues, mais j'écrirai ici une série d'étapes pour construire un programme Java sur wercker.
Ici, l'exemple de configuration réel est décrit en fonction des cas d'utilisation suivants.
Workflows
Cette fois, c'est comme suit.
Pipeline: build Comme il s'agit du pipeline par défaut, je le laisse tel quel et envoie juste un petit message. En fait, s'il y a une création de fichier ou une copie requise pour le traitement ultérieur, cela se fera ici.
wercker.yml
box: busybox
build:
steps:
- script:
name: echo
code: |
echo " ${WERCKER_GIT_REPOSITORY}"
Pipeline: maven Exécutez maven. maven est spécifié pour box afin que les commandes java et maven puissent être utilisées.
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
Voici un aperçu de ce que vous faites.
L'étape d'exécution de maven est définie à l'avance dans wercker, et si vous spécifiez java / maven pour l'étape lors de l'exécution de maven, l'environnement d'exécution de maven sera construit automatiquement.
Veuillez vous référer aux documents suivants pour plus de détails tels que les options qui peuvent être spécifiées. https://github.com/wercker/step-maven
Vous pouvez utiliser des variables d'environnement dans worcker. http://devcenter.wercker.com/docs/environment-variables
Les trois types de niveaux d'environnement suivants peuvent être définis. La portée des paramètres sera ajustée selon les besoins.
Les variables d'environnement prises en charge par wercker en standard sont les suivantes. http://devcenter.wercker.com/docs/environment-variables/available-env-vars
Dans wercker, le processus CI est également effectué sur le conteneur docker, de sorte que les fichiers ne sont généralement pas hérités entre différents pipelines.
Si vous voulez que le fichier soit disponible dans les pipelines suivants, vous devez placer le fichier dans le répertoire spécifié par $ {WERCKER_OUTPUT_DIR}
.
Dans l'exemple ci-dessus, les fichiers à inclure dans l'image docker sont définis dans $ {WERCKER_OUTPUT_DIR}
pour le processus de génération d'image docker suivant.
Les étapes suivantes vous permettent de définir les étapes qui seront toujours exécutées, que le traitement dans le pipeline fonctionne correctement ou non. Dans l'exemple ci-dessus, l'étape Slack-notifier est utilisée pour notifier Slack.
Dans le cas de slack-notifier, si vous écrivez notify_on: failed
, vous pouvez envoyer une notification uniquement lorsque le processus de l'étape échoue.
Pipeline: docker Poussez l'image docker vers Amazon ECR. Wercker vous permet de pousser n'importe quelle image docker vers le référentiel docker en utilisant l'étape internal / docker-push.
La documentation officielle de Wercker (http://devcenter.wercker.com/docs/containers/pushing-containers) fournit un exemple du référentiel docker suivant:
Voici un exemple de la façon de pousser vers ECR.
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 ne peut pas décrire la définition de la construction de docker à l'aide de Dockerfile. Une image docker est créée avec les règles suivantes.
--L'image du docker spécifiée comme boîte devient l'image de base
Voir ci-dessous pour plus de détails sur les options que vous pouvez spécifier. http://devcenter.wercker.com/docs/steps/internal-steps#docker-push
Étant donné que les spécifications sont telles que décrites ci-dessus, il est nécessaire de prendre en compte les éléments suivants en fonctionnement.
Si vous souhaitez pousser vers ECR, définissez les valeurs suivantes.
Nous ne voulons pas écrire les informations d'identification directement dans wercker.yml, nous allons donc les définir dans la variable d'environnement wercker.
Vous devriez maintenant être en mesure de créer Java et de le pousser vers le référentiel docker selon votre cas d'utilisation.
wercker-cli
Ce que je pense que Wercker est extrêmement supérieur aux autres SaaS CI, c'est la richesse des outils qui peuvent être utilisés pour vérifier le fonctionnement dans l'environnement local.
Wercker fournit un outil de ligne de commande appelé wercker-cli, qui vous permet de reproduire et d'exécuter le comportement sur le serveur même dans l'environnement local.
$ 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.)
Vous pouvez également faire les mêmes choses que vous pouvez faire avec les API décrites ci-dessous, telles que les instructions de construction sur le serveur Wercker. Pour plus de détails, reportez-vous aux sites suivants et à l'aide sur les commandes. http://www.wercker.com/cli
Actuellement, seules les versions OSX et Linux sont disponibles.
API
Les API suivantes sont fournies. Vous pouvez définir l'application et donner des instructions pour la construction. http://devcenter.wercker.com/docs/api/endpoints
Wercker Source IP
En raison du flux CI / CD, il peut y avoir des cas où Wercker et certains outils internes doivent être combinés et utilisés. Dans ce cas, il est possible de spécifier l'adresse IP source de Wercker et d'autoriser la connexion uniquement pour une IP spécifique.
L'adresse IP source de Wercker est publiée dans le format suivant, donc pour référence. https://s3.amazonaws.com/status.wercker.com/worker_ips/production/public.json
Écrivez comme suit dans la zone spécifiée une partie de 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