|
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