|
1 | 1 | #!/bin/bash
|
2 | 2 |
|
3 |
| -# This is intended to be run the plugin's root directory. `.ci/docker-setup.sh` |
| 3 | +# This is intended to be run the plugin's root directory. `ci/unit/docker-test.sh` |
4 | 4 | # Ensure you have Docker installed locally and set the ELASTIC_STACK_VERSION environment variable.
|
5 | 5 | set -e
|
6 | 6 |
|
7 |
| -VERSION_URL="https://raw.githubusercontent.com/elastic/logstash/master/ci/logstash_releases.json" |
8 |
| - |
9 |
| - |
10 | 7 | pull_docker_snapshot() {
|
11 | 8 | project="${1?project name required}"
|
12 |
| - local docker_image="docker.elastic.co/${project}/${project}:${ELASTIC_STACK_VERSION}" |
| 9 | + local docker_image="docker.elastic.co/${project}/${project}${DISTRIBUTION_SUFFIX}:${ELASTIC_STACK_VERSION}" |
13 | 10 | echo "Pulling $docker_image"
|
14 |
| - docker pull "$docker_image" |
| 11 | + if docker pull "$docker_image" ; then |
| 12 | + echo "docker pull successful" |
| 13 | + else |
| 14 | + case "$ELASTIC_STACK_VERSION_ARG" in |
| 15 | + "8.previous"|"8.current"|"8.next") |
| 16 | + exit 1 |
| 17 | + ;; |
| 18 | + *) |
| 19 | + exit 2 |
| 20 | + ;; |
| 21 | + esac |
| 22 | + fi |
15 | 23 | }
|
16 | 24 |
|
17 |
| -if [ "$ELASTIC_STACK_VERSION" ]; then |
18 |
| - echo "Fetching versions from $VERSION_URL" |
19 |
| - VERSIONS=$(curl --silent $VERSION_URL) |
20 |
| - if [[ "$SNAPSHOT" = "true" ]]; then |
21 |
| - ELASTIC_STACK_RETRIEVED_VERSION=$(echo $VERSIONS | jq '.snapshots."'"$ELASTIC_STACK_VERSION"'"') |
22 |
| - echo $ELASTIC_STACK_RETRIEVED_VERSION |
23 |
| - else |
24 |
| - ELASTIC_STACK_RETRIEVED_VERSION=$(echo $VERSIONS | jq '.releases."'"$ELASTIC_STACK_VERSION"'"') |
25 |
| - fi |
26 |
| - if [[ "$ELASTIC_STACK_RETRIEVED_VERSION" != "null" ]]; then |
27 |
| - # remove starting and trailing double quotes |
28 |
| - ELASTIC_STACK_RETRIEVED_VERSION="${ELASTIC_STACK_RETRIEVED_VERSION%\"}" |
29 |
| - ELASTIC_STACK_RETRIEVED_VERSION="${ELASTIC_STACK_RETRIEVED_VERSION#\"}" |
30 |
| - echo "Translated $ELASTIC_STACK_VERSION to ${ELASTIC_STACK_RETRIEVED_VERSION}" |
31 |
| - export ELASTIC_STACK_VERSION=$ELASTIC_STACK_RETRIEVED_VERSION |
32 |
| - fi |
| 25 | +VERSION_URL="https://raw.githubusercontent.com/elastic/logstash/main/ci/logstash_releases.json" |
| 26 | + |
| 27 | +if [ -z "${ELASTIC_STACK_VERSION}" ]; then |
| 28 | + echo "Please set the ELASTIC_STACK_VERSION environment variable" |
| 29 | + echo "For example: export ELASTIC_STACK_VERSION=7.x" |
| 30 | + exit 1 |
| 31 | +fi |
33 | 32 |
|
34 |
| - echo "Testing against version: $ELASTIC_STACK_VERSION" |
| 33 | +# save the original arg if needed |
| 34 | +ELASTIC_STACK_VERSION_ARG="$ELASTIC_STACK_VERSION" |
35 | 35 |
|
36 |
| - if [[ "$ELASTIC_STACK_VERSION" = *"-SNAPSHOT" ]]; then |
37 |
| - pull_docker_snapshot "logstash" |
38 |
| - if [ "$INTEGRATION" == "true" ]; then |
39 |
| - pull_docker_snapshot "elasticsearch" |
40 |
| - fi |
41 |
| - fi |
| 36 | +echo "Fetching versions from $VERSION_URL" |
| 37 | +VERSIONS=$(curl -s $VERSION_URL) |
42 | 38 |
|
43 |
| - if [ -f Gemfile.lock ]; then |
44 |
| - rm Gemfile.lock |
45 |
| - fi |
| 39 | +if [[ "$SNAPSHOT" = "true" ]]; then |
| 40 | + ELASTIC_STACK_RETRIEVED_VERSION=$(echo $VERSIONS | jq '.snapshots."'"$ELASTIC_STACK_VERSION"'"') |
| 41 | + echo $ELASTIC_STACK_RETRIEVED_VERSION |
| 42 | +else |
| 43 | + ELASTIC_STACK_RETRIEVED_VERSION=$(echo $VERSIONS | jq '.releases."'"$ELASTIC_STACK_VERSION"'"') |
| 44 | +fi |
46 | 45 |
|
47 |
| - cd .ci |
| 46 | +if [[ "$ELASTIC_STACK_RETRIEVED_VERSION" != "null" ]]; then |
| 47 | + # remove starting and trailing double quotes |
| 48 | + ELASTIC_STACK_RETRIEVED_VERSION="${ELASTIC_STACK_RETRIEVED_VERSION%\"}" |
| 49 | + ELASTIC_STACK_RETRIEVED_VERSION="${ELASTIC_STACK_RETRIEVED_VERSION#\"}" |
| 50 | + echo "Translated $ELASTIC_STACK_VERSION to ${ELASTIC_STACK_RETRIEVED_VERSION}" |
| 51 | + export ELASTIC_STACK_VERSION=$ELASTIC_STACK_RETRIEVED_VERSION |
| 52 | +elif [[ "$ELASTIC_STACK_VERSION" == "8.next" ]]; then |
| 53 | + # we know "8.next" only exists between FF and GA of a minor |
| 54 | + # exit 1 so the build is skipped |
| 55 | + exit 1 |
| 56 | +fi |
| 57 | + |
| 58 | +case "${DISTRIBUTION}" in |
| 59 | + default) DISTRIBUTION_SUFFIX="" ;; # empty string when explicit "default" is given |
| 60 | + *) DISTRIBUTION_SUFFIX="${DISTRIBUTION/*/-}${DISTRIBUTION}" ;; |
| 61 | +esac |
| 62 | +export DISTRIBUTION_SUFFIX |
| 63 | + |
| 64 | +echo "Testing against version: $ELASTIC_STACK_VERSION (distribution: ${DISTRIBUTION:-"default"})" |
48 | 65 |
|
| 66 | +if [[ "$ELASTIC_STACK_VERSION" = *"-SNAPSHOT" ]]; then |
| 67 | + pull_docker_snapshot "logstash" |
49 | 68 | if [ "$INTEGRATION" == "true" ]; then
|
50 |
| - docker-compose down |
51 |
| - docker-compose build --quiet |
52 |
| - else |
53 |
| - docker-compose down |
54 |
| - docker-compose build logstash --quiet |
| 69 | + pull_docker_snapshot "elasticsearch" |
55 | 70 | fi
|
56 |
| -else |
57 |
| - echo "Please set the ELASTIC_STACK_VERSION environment variable" |
58 |
| - echo "For example: export ELASTIC_STACK_VERSION=6.2.4" |
59 |
| - exit 1 |
60 | 71 | fi
|
61 | 72 |
|
| 73 | +if [ -f Gemfile.lock ]; then |
| 74 | + rm Gemfile.lock |
| 75 | +fi |
| 76 | + |
| 77 | +CURRENT_DIR=$(dirname "${BASH_SOURCE[0]}") |
| 78 | + |
| 79 | +cd .ci |
| 80 | + |
| 81 | +export BUILDKIT_PROGRESS=plain |
| 82 | +if [ "$INTEGRATION" == "true" ]; then |
| 83 | + docker-compose down |
| 84 | + docker-compose build --quiet |
| 85 | +else |
| 86 | + docker-compose down |
| 87 | + docker-compose build logstash --quiet |
| 88 | +fi |
0 commit comments