JeffDeCola/control-fpga-via-raspi-and-webserver

View on GitHub
ci/pipeline.yml

Summary

Maintainability
Test Coverage
# control-fpga-via-raspi-and-webserver pipeline.yml

#------------------------------------------------------------------------------------------
jobs:

#**********************************************
- name: job-readme-github-pages
#**********************************************
  plan:

    # GET REPO FROM GITHUB
    - get: control-fpga-via-raspi-and-webserver
      trigger: true
    # SEND SLACK ALERT  
    - put: resource-slack-alert
      params:
        channel: '#jeff-builds'
        text: "From control-fpga-via-raspi-and-webserver: STARTED job-readme-github-pages in concourse ci."
    # SEND GITHUB STATUS
    - put: resource-repo-status
      params: { state: "pending", description: "STARTED job-readme-github-pages in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }    
    
    # RUN TASK IN REPO USING ALPINE DOCKER IMAGE
    - task: task-readme-github-pages
      file: control-fpga-via-raspi-and-webserver/ci/tasks/task-readme-github-pages.yml
      
      # TASK SUCCESS
      on_success:
        do:
          # PUSH NEW REPO TO GITHUB
          - put: control-fpga-via-raspi-and-webserver
            params:
              repository: control-fpga-via-raspi-and-webserver-updated  
          # SEND SLACK ALERT  
          - put: resource-slack-alert
            params:
              channel: '#jeff-builds'
              text: "From control-fpga-via-raspi-and-webserver: PASSED job-readme-github-pages in concourse ci."
          # SEND GITHUB STATUS
          - put: resource-repo-status
            params: { state: "success", description: "PASSED job-readme-github-pages in concourse ci", commit: "control-fpga-via-raspi-and-webserver" }
      
      # TASK FAILURE   
      on_failure:
        do:
          # SEND SLACK ALERT  
          - put: resource-slack-alert
            params:
              channel: '#jeff-builds'
              text: "From control-fpga-via-raspi-and-webserver: FAILED job-readme-github-pages in concourse ci."
          # SEND GITHUB STATUS
          - put: resource-repo-status
            params: { state: "failure", description: "FAILED job-readme-github-pages in concourse ci", commit: "control-fpga-via-raspi-and-webserver" }

#**********************************************
- name: job-unit-tests
#**********************************************
  plan:

    # GET REPO FROM GITHUB
    - get: control-fpga-via-raspi-and-webserver
      trigger: true
      passed: [job-readme-github-pages]
    # SEND SLACK ALERT  
    - put: resource-slack-alert
      params:
        channel: '#jeff-builds'
        text: "From control-fpga-via-raspi-and-webserver: STARTED job-unit-tests in concourse ci."
    # SEND GITHUB STATUS
    - put: resource-repo-status
      params: { state: "pending", description: "STARTED job-unit-tests in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }

    # RUN TASK IN REPO USING ALPINE DOCKER IMAGE 
    - task: task-unit-tests
      file: control-fpga-via-raspi-and-webserver/ci/tasks/task-unit-tests.yml

      # TASK SUCCESS
      on_success:
        do:
          # PUSH NEW REPO TO GITHUB
          - put: control-fpga-via-raspi-and-webserver
            params:
              repository: control-fpga-via-raspi-and-webserver  
          # SEND SLACK ALERT  
          - put: resource-slack-alert
            params:
              channel: '#jeff-builds'
              text_file: coverage-results/test_coverage.txt
              text: |
                From control-fpga-via-raspi-and-webserver: PASSED job-unit-tests in concourse ci. 
                $TEXT_FILE_CONTENT
          # SEND GITHUB STATUS
          - put: resource-repo-status
            params: { state: "success", description: "PASSED job-unit-tests in concourse ci", commit: "control-fpga-via-raspi-and-webserver" }
      
      # TASK FAILURE
      on_failure:
        do:
          # SEND SLACK ALERT  
          - put: resource-slack-alert
            params:
              channel: '#jeff-builds'
              text: "From control-fpga-via-raspi-and-webserver: FAILED job-unit-tests in concourse ci."
          # SEND GITHUB STATUS
          - put: resource-repo-status
            params: { state: "failure", description: "FAILED job-unit-tests in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }

#**********************************************
- name: job-build-push
#**********************************************
  plan:

    # GET REPO FROM GITHUB
    - get: control-fpga-via-raspi-and-webserver
      trigger: true
      passed: [job-unit-tests]
    # SEND SLACK ALERT  
    - put: resource-slack-alert
      params:
        channel: '#jeff-builds'
        text: "From control-fpga-via-raspi-and-webserver: STARTED job-build-push in concourse ci."
    # SEND GITHUB STATUS
    - put: resource-repo-status
      params: { state: "pending", description: "STARTED job-build-push in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }

    # RUN TASK IN REPO USING ALPINE DOCKER IMAGE 
    - task: task-build-push
      file: control-fpga-via-raspi-and-webserver/ci/tasks/task-build-push.yml

    # PUSH DOCKER IMAGE TO DOCKERHUB  
    - put: resource-dump-to-dockerhub
      params:
        build: "dist"
      
      # TASK SUCCESS
      on_success:
        do:
          # SEND SLACK ALERT  
          - put: resource-slack-alert
            params:
              channel: '#jeff-builds'
              text: "From control-fpga-via-raspi-and-webserver: PASSED job-build-push in concourse ci."
          # SEND GITHUB STATUS
          - put: resource-repo-status
            params: { state: "pending", description: "PASSED job-build-push in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }
      
      # TASK FAILURE    
      on_failure:
        do:
          # SEND SLACK ALERT  
          - put: resource-slack-alert
            params:
              channel: '#jeff-builds'
              text: "From control-fpga-via-raspi-and-webserver: FAILED job-build-push in concourse ci."
          # SEND GITHUB STATUS
          - put: resource-repo-status
            params: { state: "failure", description: "FAILED job-build-push in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }

#**********************************************
- name: job-deploy
#**********************************************
  plan:

    # GET REPO FROM GITHUB
    - get: control-fpga-via-raspi-and-webserver
      trigger: true
      passed: [job-build-push]
    # SEND SLACK ALERT
    - put: resource-slack-alert
      params:
        channel: '#jeff-builds'
        text: "From control-fpga-via-raspi-and-webserver: STARTED job-deploy in concourse ci."
    # SEND GITHUB STATUS
    - put: resource-repo-status
      params: { state: "pending", description: "STARTED job-deploy in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }
    
    # RUN TASK IN REPO USING ALPINE DOCKER IMAGE 
    - task: task-deploy
      file: control-fpga-via-raspi-and-webserver/ci/tasks/task-deploy.yml

      # TASK SUCCESS
      on_success:
        do:
          # DEPLOY DOCKER IMAGE TO DOCKER HOST
          - put: resource-deploy-docker
            params:
              DOCKER_HOST_IP: '192.168.20.118'
              DOCKER_HOST_PORT: '22'
              DOCKER_HOST_USER: 'jeff'
              DOCKER_HOST_RUN_PRIVILEGED_MODE: 'true'
              DOCKER_HOST_SSH_PRIVATE_KEY_FILE: {{raspi_4b_docker_host_ssh_private_key}}
              DOCKER_IMAGE_TO_DEPLOY: 'jeffdecola/control-fpga-via-raspi-and-webserver'
          # SEND SLACK ALERT  
          - put: resource-slack-alert
            params:
              channel: '#jeff-builds'
              text: "From control-fpga-via-raspi-and-webserver: PASSED job-deploy in concourse ci."
          # SEND GITHUB STATUS
          - put: resource-repo-status
            params: { state: "success", description: "PASSED job-deploy in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }

      # TASK FAILURE    
      on_failure:
        do:
          # SEND SLACK ALERT  
          - put: resource-slack-alert
            params:
              channel: '#jeff-builds'
              text: "From control-fpga-via-raspi-and-webserver: FAILED job-deploy in concourse ci."
          # SEND GITHUB STATUS
          - put: resource-repo-status
            params: { state: "failure", description: "FAILED job-deploy in concourse ci.", commit: "control-fpga-via-raspi-and-webserver" }

#------------------------------------------------------------------------------------------
resource_types:

  - name: deploy-docker
    type: docker-image
    source:
      repository: jeffdecola/concourse-deploy-docker-resource
      tag: latest

  - name: slack-notification
    type: docker-image
    source:
      repository: cfcommunity/slack-notification-resource
      tag: latest

  - name: github-status
    type: docker-image
    source:
      repository: jeffdecola/github-status-resource-clone
      tag: v0.0.2

#------------------------------------------------------------------------------------------
resources:

  - name: control-fpga-via-raspi-and-webserver
    type: git
    icon: github
    source:
      #uri: https://github.com/jeffdecola/control-fpga-via-raspi-and-webserver
      uri: git@github.com:jeffdecola/control-fpga-via-raspi-and-webserver.git
      branch: master
      private_key: ((concourse_git_private_key))

  - name: resource-dump-to-dockerhub
    type: docker-image
    icon: docker
    source:
      repository: jeffdecola/control-fpga-via-raspi-and-webserver
      tag: latest
      username: jeffdecola
      password: ((dockerhub_password))

  - name: resource-deploy-docker
    type: deploy-docker
    icon: docker
    source:
      username: jeffdecola
      password: ((dockerhub_password))

  - name: resource-slack-alert
    type: slack-notification
    icon: slack
    source:
      url: ((slack_url)) 

  - name: resource-repo-status 
    type: github-status
    icon: github
    source:
      repository: jeffdecola/control-fpga-via-raspi-and-webserver 
      access_token: ((repo_github_token))
      branch: master