Wercker로 Java 구축
나도 개인적으로 몇 가지 언어를 사용했는데, 여기서 나는 웹 페이지에 자바 프로그램을 구축하는 일련의 절차를 쓰고 싶다.
용례
여기에 아래의 용례에 따라 실제 설정례를 기술한다.
Workflows
이번에는 다음과 같다.
Pipeline: build
기본 pipeline이라서 그대로 남겼고 약간의 메시지만 보냈어요.실제로 후속 처리에 필요한 서류의 제작과 복사 등이 있다면 여기서 한다.
wercker.yml
box: busybox
build:
steps:
- script:
name: echo
code: |
echo " ${WERCKER_GIT_REPOSITORY}"
Pipeline: maven
마벤트를 실행합니다.자바와 마븐 명령을 사용할 수 있도록 박스에서 마븐을 지정했습니다.
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
이곳에서 집행하는 일에 관하여 요점을 발췌하다.java/maven step의 마벤트 실행 사용하기
wercker에서 마벤트 실행용 Step을 미리 정의했습니다. 마벤트를 실행할 때 step에서 자바/maven을 지정하면 마벤트의 실행 환경을 자동으로 구축합니다.
지정할 수 있는 옵션 등 자세한 내용은 아래 문서를 참고하십시오.
https://github.com/wercker/step-maven
환경 변수 사용
Worker에서 환경 변수를 사용할 수 있습니다.
http://devcenter.wercker.com/docs/environment-variables
Environment 클래스는 다음 세 가지 유형을 정의할 수 있습니다.필요에 따라 설정 범위를 조정합니다.
http://devcenter.wercker.com/docs/environment-variables/available-env-vars
$WERCKER_OUTPUT_DIR에 실행 결과 저장하기
wercker에서는 docker container에서 CI 프로세스를 수행하는 경우가 있으며, 서로 다른 Pipeline 사이에서는 파일을 계승할 수 없습니다.
후속 Pipeline에서도 파일을 사용할 수 있는 경우
${WERCKER_OUTPUT_DIR}
에 지정된 디렉토리에 파일을 배치해야 합니다.상기 예에서 후속적인 docker 이미지 생성 처리를 위해
${WERCKER_OUTPUT_DIR}
에 docker 이미지에 포함된 파일 그룹을 설정합니다.after-steps 기반 Slack 알림
after-steps를 사용하여 Piperline에서 올바른 이동과 부정확함 모두에 대해 수행해야 하는 Step을 정의할 수 있습니다.
위의 예에서 Slack-notifier step을 사용하여 Slack 알림을 수행합니다.
slack-notifier
notify_on: failed
라면 step 처리가fail로 바뀌었을 때만 알림을 보낼 수 있습니다.Pipeline: docker
Amazon ECR에서 docker image push를 만듭니다.
Wercker에서 인터넷/docker-push 이 step를 사용하면 임의의 docker 이미지 push를 docker repository에 저장할 수 있습니다.
wercker공식 문서에서 다음과 같은 docker repository에 대한 예를 기술하였다.
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
통용되는 말
wercker의 docker push에 따라 Docker file을 사용한 docker build의 정의를 기술할 수 없습니다.
다음 규칙으로 docker image를 만듭니다.
http://devcenter.wercker.com/docs/steps/internal-steps#docker-push
위와 같은 규격이기 때문에 운용에 있어 다음과 같은 사항을 주의해야 한다.
Amazon ECR 고유의 말
ECR push에 대해 다음 값을 설정합니다.
총괄적으로 말하면 사용자의 상황에 따라 자바의 빌딩에서 docker repository의push까지 진행할 수 있다.
기타 Tips
wercker-cli
워커의 압도적인 승리는 다른 CI 사아스에 비해 로컬환경에서 동작 확인을 위해 사용한 도구의 충실함이었다.
웹 페이지에서wercker-cli라는 명령행 도구를 제공하여 로컬 환경에서도 서버의 행동을 재현하고 실행할 수 있습니다.$ 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.)
또한 위커 서버에 대한 구축 지시 등도 후술한 API에서 동일하게 조작할 수 있다.
자세한 내용은 아래 사이트와 명령의 도움말 등을 참조하세요.
http://www.wercker.com/cli
또한 현재는 OSX 및 Linux 버전만 제공됩니다.
API
다음과 같은 API를 제공합니다.애플리케이션 설정, 빌딩 지시 등을 할 수 있다.
http://devcenter.wercker.com/docs/api/endpoints
Wercker Source IP
CI/CD 스트림 때문에 Wercker와 특정 사내 도구가 결합해서 사용해야 하는 상황이 발생할 수 있습니다.
이때 Wercker의 Source IP 주소를 지정하여 특정 IP 연결만 허용할 수 있습니다.
위커의 Source IP 주소가 다음과 같은 형태로 공개됐기 때문에 참조만 가능합니다.
https://s3.amazonaws.com/status.wercker.com/worker_ips/production/public.json
box에서 ECR에 등록된 docker image 사용
wercker.yml의box가 지정한 곳은 다음과 같습니다. 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}
Reference
이 문제에 관하여(Wercker로 Java 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/moaikids/items/d770eace281010724072
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ 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.)
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}
Reference
이 문제에 관하여(Wercker로 Java 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/moaikids/items/d770eace281010724072텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)