summaryrefslogtreecommitdiffstats
path: root/jjb/dovetail/dovetail-artifacts-upload.yml
blob: dc2ae5aa24afb17cc461fee530daf2458e215ad7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
############################################
# dovetail upload artifacts job
############################################
- project:
    name: dovetail-artifacts-upload

    project: 'dovetail'

    jobs:
        - 'dovetail-{image}-artifacts-upload-{stream}'

    stream:
        - master:
            branch: '{stream}'
            gs-pathname: ''
            disabled: false

    image:
        - 'dovetail'
        - 'functest'
        - 'yardstick'

#############################################
# job template
#############################################

- job-template:
    name: 'dovetail-{image}-artifacts-upload-{stream}'


    disabled: '{obj:disabled}'

    concurrent: true

    properties:
        - throttle:
            enabled: true
            max-total: 1
            max-per-node: 1
            option: 'project'

    parameters:
        - project-parameter:
            project: '{project}'
        - gerrit-parameter:
            branch: '{branch}'
        - 'opnfv-build-ubuntu-defaults'
        - dovetail-parameter:
            gs-pathname: '{gs-pathname}'
            image: '{image}'
            branch: '{branch}'

    scm:
        - git-scm

    builders:
        - 'dovetail-builder-artifacts-upload'
        - 'dovetail-workspace-cleanup'

####################
# parameter macros
####################
- parameter:
    name: dovetail-parameter
    parameters:
        - string:
            name: CACHE_DIR
            default: $WORKSPACE/cache{gs-pathname}
            description: "the cache to store packages downloaded"
        - string:
            name: STORE_URL
            default: gs://artifacts.opnfv.org/dovetail{gs-pathname}
            description: "LF artifacts url for storage of dovetail packages"
        - string:
            name: DOCKER_REPO_NAME
            default: opnfv/{image}
            description: "docker repo name"
        - string:
            name: DOCKER_TAG
            default: latest
            description: "docker image tag of which will be uploaded to artifacts"
        - string:
            name: STORE_FILE_NAME
            default: image_{image}_{branch}_$BUILD_ID.docker
            description: "stored file name"

####################################
#builders for dovetail project
####################################
- builder:
    name: dovetail-builder-artifacts-upload
    builders:
        - shell:
            !include-raw: ./dovetail-artifacts-upload.sh

- builder:
    name: dovetail-workspace-cleanup
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit

            echo "Dovetail: cleanup cache used for storage downloaded packages"

            /bin/rm -rf $CACHE_DIR

            # Remove previous running containers if exist
            if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then
                echo "Removing existing $DOCKER_REPO_NAME containers..."
                docker ps -a | grep $DOCKER_REPO_NAME | awk '{print $1}' | xargs docker rm -f
                t=60
                # Wait max 60 sec for containers to be removed
                while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep $DOCKER_REPO_NAME)" ]]; do
                    sleep 1
                    let t=t-1
                done
            fi

            # Remove existing images if exist
            if [[ -n "$(docker images | grep $DOCKER_REPO_NAME)" ]]; then
                echo "Docker images to remove:"
                docker images | head -1 && docker images | grep $DOCKER_REPO_NAME
                image_tags=($(docker images | grep $DOCKER_REPO_NAME | awk '{print $2}'))
                for tag in "${image_tags[@]}"; do
                    if [[ -n "$(docker images|grep $DOCKER_REPO_NAME|grep $tag)" ]]; then
                        echo "Removing docker image $DOCKER_REPO_NAME:$tag..."
                        docker rmi -f $DOCKER_REPO_NAME:$tag
                    fi
                done
            fi