Concerse CI에서 작성한 결과를 S3 호환 개체 스토리지 서버 Minio에 업로드

10287 단어 Concourseminio
브라우저에서 볼 수 있도록 Concourse CI에 작성된 결과에 대한 보고서 등을 어딘가에 업로드하고자 합니다.그러나 S3 등을 사용하는 환경이 아니어서 S3와 API가 호환되는Minio에 업로드해 봤다.
미니오도 브라우저를 통해 다음 파일을 확인할 수 있지만 HTML 출력으로 된 보고서를 보고 싶어 아파치로 웹 서버를 별도로 설정했다.

환경 구조
Concerse CI 및 Minio, Apache가 docker-compose에서 시작됩니다.
Minio에 파일이 저장된 디렉토리와 Apache의 문서 경로를 동일한 디렉토리volumes에 설치하면 Apache 측면에 액세스하여 업로드된 파일을 브라우저에서 볼 수 있습니다.
$ git clone https://github.com/tenten0213/s3-resource-simple
$ cd s3-resource-simple
# Concourseの鍵の生成などしてから
$ docker-compose up -d
docker-compose.yml
concourse-db:
  image: postgres:9.5
  environment:
    POSTGRES_DB: concourse
    POSTGRES_USER: concourse
    POSTGRES_PASSWORD: changeme
    PGDATA: /database

concourse-web:
  image: concourse/concourse
  links: [concourse-db]
  command: web
  ports: ["8080:8080", "2222:2222"]
  volumes: ["./keys/web:/concourse-keys"]
  environment:
    CONCOURSE_BASIC_AUTH_USERNAME: concourse
    CONCOURSE_BASIC_AUTH_PASSWORD: changeme
    CONCOURSE_EXTERNAL_URL: http://localhsot:8080
    CONCOURSE_POSTGRES_DATA_SOURCE: |-
      postgres://concourse:changeme@concourse-db:5432/concourse?sslmode=disable

concourse-worker:
  image: concourse/concourse
  privileged: true
  links: [concourse-web]
  command: worker
  volumes: ["./keys/worker:/concourse-keys"]
  environment:
    CONCOURSE_TSA_HOST: concourse-web

minio:
  image: minio/minio:RELEASE.2017-05-05T01-14-51Z
  volumes: ["./minio-data:/export"]
  ports: ["9000:9000"]
  environment:
    MINIO_ACCESS_KEY: minio
    MINIO_SECRET_KEY: minio123
  command: server /export

httpd:
  image: httpd:2.4
  ports: ["8000:80"]
  volumes: ["./minio-data:/usr/local/apache2/htdocs"]
파이프 설정
Concerse CI의 파이프라인은 다음과 같습니다.
제목에 빌딩이 쓰여 있는데 이번에는 GiitHub에서 가져온 파일만 올릴 뿐이다.
pipeline.yml
# Pipeline that clones this repository, then uploads it to S3. Local usage:
#
#   fly set-pipeline -t lite -n -c test/pipeline.yml -p s3-resource-simple-test -v aws-access-key=minio -v aws-secret-key=minio123 -v aws-bucket=report -v aws-s3-endpoint=http://localhost:9000/
#
resource_types:
- name: s3-upload
  type: docker-image
  source:
    repository: making/s3-resource-simple
resources:
- name: files
  type: git
  source:
    uri: https://github.com/tenten0213/s3-resource-simple.git
    branch: master
- name: s3-bucket
  type: s3-upload
  source:
    access_key_id: {{aws-access-key}}
    secret_access_key: {{aws-secret-key}}
    bucket: {{aws-bucket}}
    endpoint: {{aws-s3-endpoint}}
    disable_ssl: true
    use_v4: true
jobs:
- name: custom-resource-example
  plan:
  - get: files
  - put: s3-bucket
파이프라인을 설정할 때access 키와 시크릿 키를 줍니다.
변수 이름은 aws-로 미니오의access 키와 시크릿 키를 전달합니다.bucket 동명 버킷을 미니오로 먼저 제작한다.
$ fly set-pipeline -t lite -n -c test/pipeline.yml -p s3-resource-simple-test -v aws-access-key=minio -v aws-secret-key=minio123 -v aws-bucket=html -v aws-s3-endpoint=http://192.168.11.6:9000/
파이프라인을 설정한 후 브라우저를 통해 다음과 같이 파이프라인을 확인할 수 있습니다.

파이프 실행
파이프라인을 실행하면 시작 이미지와 같이 파일이 Minio에 업로드됩니다.

아파치 쪽에 방문하면 이런 느낌이에요.

HTML도 표시됩니다.

총결산
미니오를 처음 사용하는 건데 S3와 같은 API로 처리할 수 있어서 샘플 등이 많이 도와줬어요.
이렇게 되면 테스트와 정적 해석 결과의 보고서의 업로드 목적지와 조회의 구조가 완성됩니다. 다음에 보고서 출력에서 이번 구조와 연결된 곳을 시도해 보고 싶습니다.
시험해 본 모형은 아래에 놓아라.
  • https://github.com/tenten0213/s3-resource-simple
  • 좋은 웹페이지 즐겨찾기