Concourse용 Hello World 리소스 유형 생성
6879 단어 concoursehelloworlddocker
콘코스란?
Concourse is an open-source continuous thing-doer.
Concourse는 간단한 YAML 파일로 구성 가능한 CI/CD 도구입니다.
연습
전제 조건
Fly & Concourse를 설치하려면 https://concourse-ci.org/의 단계를 따르십시오.
Concourse를 처음 확인하는 경우 게시한 자습서 및 문서를 검토하는 것이 좋습니다.
기본 리소스 유형 탐색
또는 (fork my repo)[ https://github.com/thehandsomezebra/concourse-resourcetype-helloworld ]를 사용하여 따라할 수 있습니다.
콩코스
resource_type
는 최소 4개의 파일을 사용하여 잘 작동합니다.+-- resource
| +-- check
| +-- in
| +-- out
+-- Dockerfile
각 스크립트는 실행 결과를 json 적절한 형식으로 출력해야 합니다.
높은 수준에서 각 파일을 살펴보고 모든 것을 설정해 봅시다!
확인하다
검사 파일은 새 버전을 검사할 것입니다.
확인 스크립트는 Hello World 메시지를 다시 보고합니다.
#!/bin/bash
set -eu
set -o pipefail
echo '[{ "revision": "N/A", "message": "The check script says Hello World!" }]'
안에
이것은 주어진 리소스를 가져옵니다.
In 스크립트의 경우 일부 메타데이터를 추가해 보겠습니다. 이 메타데이터는 파이프라인의 일부 위치에서 볼 수 있습니다.
#!/bin/bash
set -eu
set -o pipefail
echo '{ "version": { "revision": "N/A", "message": "The in script version message says Hello World" }, "metadata": [{ "name": "message", "value": "The in script metadata message says Hello World." }] }'
밖으로
Out 스크립트의 경우 조금 더 복잡해집니다. 우리는 파이프라인에서 변수
greeting
를 가져와 에코 아웃하겠습니다.jq를 사용하여 파이프라인을 통해 전달되는 매개변수에서 가져올 것입니다.
#!/bin/bash
echo '{ "version": { "revision": "N/A", "message": "The out script version message says Hello World" }, "metadata": [{ "name": "message", "value": "The out script metadata message says Hello World." }] }'
set -e -u
exec 3>&1 # make stdout available as fd 3 for the result
exec 1>&2 # redirect all output to stderr for logging
echo "Echo says hi from the out script!" >&2
source=$1
if [[ -z "$source" ]]; then
echo "usage: $0 <path/to/source>"
exit 1
fi
# for jq
PATH=/usr/local/bin:$PATH
export TMPDIR=${TMPDIR:-/tmp/rclone}
mkdir -p "${TMPDIR}"
payload=$(mktemp "$TMPDIR/resource-request.XXXXXX")
cat > "$payload" <&0
greeting=$(jq -r '.params.greeting // ""' < "$payload")
echo "Param greeting says: $greeting" >&2
도커파일
이 Dockerfile은 짧고 간단합니다.
FROM alpine:3.13
RUN apk add --update --upgrade --no-cache bash
RUN apk update \
&& apk upgrade \
&& apk add --update bash curl unzip jq
ADD resource/ /opt/resource/
RUN chmod +x /opt/resource/*
WORKDIR /
ENTRYPOINT ["/bin/bash"]
실행하기 위한 마지막 파일: 파이프라인 yaml 파일
이 파일은 도커에 있을 필요는 없지만 내 저장소에 포함되어 있으므로 따라갈 수 있습니다.
hello-pipeline.yml이라는 파일을 만듭니다.
resource_types:
- name: helloworld
type: docker-image
source:
# set repo of your helloworld resource
#repository: Your-Docker-Acct/Your-Docker-Repository
## or use my helloworld resource
repository: thehandsomezebra/concourse-test
resources:
- name: helloworld
type: helloworld
jobs:
- name: hello-job
plan:
- get: helloworld
- put: put-helloworld
resource: helloworld
inputs:
- helloworld
params:
greeting: "Hey y'all!"
이것은
get
in
및 put
out
가 될 hello-job이라는 새로운 파이프라인을 생성할 것입니다.실행하기
위의 단계에 따라 github 저장소( or fork mine )를 만들고 도커 허브 저장소를 만듭니다. github 저장소를 도커에 연결하고 자동 빌드로 설정하는 것도 빠릅니다( learn more about that here )).
Docker Hub에서 리포지토리가 준비되면 이 라인을 사용하여 콩코스 파이프라인을 시작하겠습니다.
Hello World 파이프라인을 시작하겠습니다!
터미널에서 다음을 실행합니다.
fly -t ci set-pipeline -c hello-pipeline.yml -p hello-world
ci
는 대상의 이름입니다(튜토리얼을 따랐다면 이름이 tutorial
또는 example
일 수 있음)
파이프라인 다이어그램을 보면 파선(종속성 - 트리거)이 있는 상자에서 check
단계의 결과도 볼 수 있습니다.
작업을 확인하면 각 단계에서 메시지를 볼 수 있습니다.
콩코스에 대한 고유한 리소스 유형을 생성할 수 있는 작업이 많이 있습니다. check out the Resource Types catalog , contribute to the community 에서 지원을 받고(또는 이미 답변된 질문을 통해 잠복) Discord in the #resource-types channel .
참고: 저는 Concourse와 관련이 없습니다. 저는 계속해서 일을 계속하는 일에 매료된 괴짜일 뿐입니다.
출처:
fly -t ci set-pipeline -c hello-pipeline.yml -p hello-world
Reference
이 문제에 관하여(Concourse용 Hello World 리소스 유형 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thehandsomezebra/creating-a-hello-world-resource-type-for-concourse-di7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)