Concourse CI의 환경 구축 절차

개요



Concourse CI의 환경 구축 절차입니다.

관련 기사


  • Concourse CI에서 Rails 애플리케이션 배포
  • Concourse CI pipeline을 작성하는 방법

  • 환경


  • CentOS 7.2
  • kernel 4.12.4-1.el7.elrepo.x86_64
  • fly 3.3.4
  • docker 17.05.0-ce
  • docker-compose version 1.15.0

  • 요구사항



    다음과 같이 Concourse CI를 사용하려면 커널 버전이 v3.19 이상이어야 합니다.uname -r 명령으로 커널 버전을 확인하십시오.


    For Linux you'll need kernel v3.19 or later, with user namespace support enabled. Windows and Darwin don't really need anything special.

    만약 버전이 낮은 경우는 다음을 참고하여 업데이트해 주십시오.
    Vagrant의 CentOS7 커널 업데이트 (yum)

    추가
    커널을 업데이트하는 쉘 스크립트를 만들었습니다.
    여기를 실행하면 커널이 업데이트됩니다.
    CentOS7.2에서만 동작 검증하고 있습니다.
    htps : // 기주 b. 코 m / 에 s 푹신 / 케 r 네 루 p r r

    docker-compose 설치



    여기를 참조
    docker(docker-engine), docker-compose 설치

    docker-compose.yml 만들기



    원하는 곳에 docker-compose.yml을 만듭니다.

    docker-compose.yml
    version: '3'
    
    services:
      concourse-db:
        image: postgres:9.5
        environment:
          POSTGRES_DB: concourse
          POSTGRES_USER: "${CONCOURSE_POSTGRES_USER}"
          POSTGRES_PASSWORD: "${CONCOURSE_POSTGRES_PASSWORD}"
          PGDATA: /database
    
      concourse-web:
        image: concourse/concourse
        links: [concourse-db]
        command: web
        depends_on: [concourse-db]
        ports: ["8080:8080"]
        volumes: ["./keys/web:/concourse-keys"]
        restart: unless-stopped # required so that it retries until conocurse-db comes up
        environment:
          CONCOURSE_BASIC_AUTH_USERNAME: "${CONCOURSE_BASIC_AUTH_USERNAME}"
          CONCOURSE_BASIC_AUTH_PASSWORD: "${CONCOURSE_BASIC_AUTH_PASSWORD}"
          CONCOURSE_EXTERNAL_URL: "${CONCOURSE_EXTERNAL_URL}"
          CONCOURSE_POSTGRES_HOST: concourse-db
          CONCOURSE_POSTGRES_USER: "${CONCOURSE_POSTGRES_USER}"
          CONCOURSE_POSTGRES_PASSWORD: "${CONCOURSE_POSTGRES_PASSWORD}"
          CONCOURSE_POSTGRES_DATABASE: concourse
    
      concourse-worker:
        image: concourse/concourse
        privileged: true
        links: [concourse-web]
        depends_on: [concourse-web]
        command: worker
        volumes: ["./keys/worker:/concourse-keys"]
        environment:
          CONCOURSE_TSA_HOST: concourse-web
    

    .env 만들기


    CONCOURSE_EXTERNAL_URL 에 브라우저에서 액세스할 수 있는 URL을 설정합니다.
    127.0.0.1 or localhost에서는 안 됩니다.CONCOURSE_BASIC_AUTH_USERNAME , CONCOURSE_BASIC_AUTH_PASSWORDConcourseCI에 로그인할 계정을 설정합니다.CONCOURSE_POSTGRES_USER , CONCOURSE_POSTGRES_PASSWORD 는 postgres 계정을 설정합니다.

    다음과 같은 .env를 만듭니다.

    .env
    CONCOURSE_BASIC_AUTH_USERNAME=concourse
    CONCOURSE_BASIC_AUTH_PASSWORD=changeme
    CONCOURSE_EXTERNAL_URL=http://192.168.33.10:8080
    CONCOURSE_POSTGRES_USER=concourse
    CONCOURSE_POSTGRES_PASSWORD=changeme
    

    ssh-key 만들기



    웹과 작업자를위한 키를 만듭니다.
    docker-compose.yml과 동일한 계층 구조에서 실행합니다.
    $ mkdir -p keys/web keys/worker
    $ ssh-keygen -t rsa -f ./keys/web/tsa_host_key -N ''
    $ ssh-keygen -t rsa -f ./keys/web/session_signing_key -N ''
    $ ssh-keygen -t rsa -f ./keys/worker/worker_key -N ''
    $ cp ./keys/worker/worker_key.pub ./keys/web/authorized_worker_keys
    $ cp ./keys/web/tsa_host_key.pub ./keys/worker
    

    docker-compose


    $ docker-compose up -d --build
    

    브라우저로 액세스





    CLI 설치



    http://192.168.33.10:8080
    로 표시되는 페이지의 아래의 3개의 아이콘이 각각, mac, windows, linux용의 cli의 다운로드 링크가 되어 있으므로, 환경에 있던 것을 다운로드 하거나,



    이 링크의 Fly Binaries에서 다운로드합니다.
    htps // 이런 r세. 시/도 w응아 ds. HTML
    $ curl -L https://github.com/concourse/concourse/releases/download/v3.5.0/fly_linux_amd64 > /tmp/fly
    $ sudo mv /tmp/fly /usr/local/bin/fly
    $ sudo chmod 775 /usr/local/bin/fly
    

    login



    http://192.168.33.10:8080에 로그인합니다.
    계정은 .env에서 설정한 다음과 같습니다.

    .env
    CONCOURSE_BASIC_AUTH_USERNAME=concourse
    CONCOURSE_BASIC_AUTH_PASSWORD=changeme
    
    $ fly -t concourseci login -c http://192.168.33.10:8080
    

    login시에 다음과 같은 메시지가 나오면 최신 버전의 fly를 다시 설치하십시오.
    fly version (3.4.1) is out of sync with the target (3.5.0). to sync up, run the following:
    
        fly -t rails-sample sync
    

    htps : // 이렇게 r세. 해/fly-cぃ. HTML
    List the current targets
    $ fly targets
    name         url                        team  expiry
    concourseci  http://192.168.33.10:8080  main  Sat, 05 Aug 2017 03:46:25 UTC
    

    동작 확인



    파이프라인을 설정하여 동작을 확인합니다.

    flight-school 샘플을 사용하여 파이프 라인을 작성해보십시오.
    rails 응용 프로그램입니다.

    pipeline.yml
    ---
    resources:
    - name: flight-school
      type: git
      source:
        uri: https://github.com/concourse/flight-school
        branch: master
    
    jobs:
    - name: test
      plan:
      - get: flight-school
        # Resourceに変更があれば自動でジョブを実行するかどうか
        trigger: true
      - task: run-tests
        config:
          platform: linux
          image_resource:
            type: docker-image
            source:
              repository: ruby
          inputs:
          - name: flight-school
          run:
            path: /bin/bash
            args:
            - -c
            - |
              cd flight-school
              bundle install
              bundle exec rspec
    

    pipeline을 설정합니다.
    $ fly -t concourseci set-pipeline -c pipeline.yml -p flight-school
    resources:
      resource flight-school has been added:
        name: flight-school
        type: git
        source:
          branch: master
          uri: https://github.com/concourse/flight-school
    
    jobs:
      job test has been added:
        name: test
        plan:
        - get: flight-school
        - task: run-tests
          config:
            platform: linux
            image_resource:
              type: docker-image
              source:
                repository: ruby
              params: {}
            run:
              path: /bin/bash
              args:
              - -c
              - |
                cd flight-school
                bundle install
                bundle exec rspec
              dir: ""
            inputs:
            - name: flight-school
              path: ""
    
    apply configuration? [yN]: y
    pipeline created!
    you can view your pipeline here: http://192.168.33.10:8080/teams/main/pipelines/flight-school
    
    the pipeline is currently paused. to unpause, either:
      - run the unpause-pipeline command
      - click play next to the pipeline in the web ui
    

    파이프라인을 사용합니다.
    $ fly -t concourseci unpause-pipeline -p flight-school
    unpaused 'flight-school'
    

    job 실행



    명령줄에서 실행하는 경우


    $ fly -t concourseci trigger-job -j flight-school/test --watch
    

    웹 화면에서 실행하는 경우



    오른쪽 상단의 login을 클릭 -> 화면 중앙의 main을 클릭하고 아래 화면이 표시되면 .env에서 설정한 계정을 입력하십시오.

    .env
    CONCOURSE_BASIC_AUTH_USERNAME=concourse
    CONCOURSE_BASIC_AUTH_PASSWORD=changeme
    



    로그인하면 다음 화면이 표시되므로 test를 클릭하십시오.



    아래 화면이 나타나면 오른쪽 상단의 + 버튼을 클릭하십시오. 빌드가 시작됩니다.



    빌드가 시작되면 이런 느낌이 듭니다.



    성공적으로 완료되면 녹색으로 바뀝니다.



    오류가 발생하지 않고 완료되고 녹색이되면 성공합니다.

    이상

    참고


  • 도커 리포지토리
  • set-pipeline: Configuring Pipelines
  • BぉG. 다른 K. 아 M
  • Docker에서 Concourse CI를 움직여 보았습니다.
  • Concourse CI의 fly 명령 및 구성 파일 요약
  • an example Ruby app we are testing in Concourse called flight-school.
  • 좋은 웹페이지 즐겨찾기