|
| 1 | +version: 0.2 |
| 2 | + |
| 3 | +env: |
| 4 | + variables: |
| 5 | + OS_DISTRIBUTION: alpine |
| 6 | + NPX_BINARY_LOCATION: "/usr/local/bin/npx" |
| 7 | +batch: |
| 8 | + build-matrix: |
| 9 | + static: |
| 10 | + ignore-failure: false |
| 11 | + env: |
| 12 | + privileged-mode: true |
| 13 | + dynamic: |
| 14 | + env: |
| 15 | + variables: |
| 16 | + DISTRO_VERSION: |
| 17 | + - "3.17" |
| 18 | + - "3.18" |
| 19 | + RUNTIME_VERSION: |
| 20 | + - "16" |
| 21 | + - "18" |
| 22 | +phases: |
| 23 | + pre_build: |
| 24 | + commands: |
| 25 | + - export IMAGE_TAG="nodejs-${OS_DISTRIBUTION}-${DISTRO_VERSION}:${RUNTIME_VERSION}" |
| 26 | + - echo "Extracting and including the Runtime Interface Emulator" |
| 27 | + - SCRATCH_DIR=".scratch" |
| 28 | + - mkdir "${SCRATCH_DIR}" |
| 29 | + - ARCHITECTURE=$(arch) |
| 30 | + - > |
| 31 | + if [[ "$ARCHITECTURE" == "x86_64" ]]; then |
| 32 | + RIE="aws-lambda-rie" |
| 33 | + elif [[ "$ARCHITECTURE" == "aarch64" ]]; then |
| 34 | + RIE="aws-lambda-rie-arm64" |
| 35 | + else |
| 36 | + echo "Architecture $ARCHITECTURE is not currently supported." |
| 37 | + exit 1 |
| 38 | + fi |
| 39 | + - tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}" |
| 40 | + - > |
| 41 | + cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \ |
| 42 | + "${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp" |
| 43 | + - > |
| 44 | + echo "RUN apk add curl" >> \ |
| 45 | + "${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp" |
| 46 | + - > |
| 47 | + echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \ |
| 48 | + "${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp" |
| 49 | + - > |
| 50 | + if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]]; |
| 51 | + then |
| 52 | + echo "DockerHub credentials not set as CodeBuild environment variables. Continuing without docker login." |
| 53 | + else |
| 54 | + echo "Performing DockerHub login . . ." |
| 55 | + docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD |
| 56 | + fi |
| 57 | + - echo "Building image ${IMAGE_TAG}" |
| 58 | + - > |
| 59 | + docker build . \ |
| 60 | + -f "${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp" \ |
| 61 | + -t "${IMAGE_TAG}" \ |
| 62 | + --build-arg RUNTIME_VERSION="${RUNTIME_VERSION}" \ |
| 63 | + --build-arg DISTRO_VERSION="${DISTRO_VERSION}" |
| 64 | + build: |
| 65 | + commands: |
| 66 | + - set -x |
| 67 | + - echo "Running Image ${IMAGE_TAG}" |
| 68 | + - docker network create "${OS_DISTRIBUTION}-network" |
| 69 | + - > |
| 70 | + docker run \ |
| 71 | + --detach \ |
| 72 | + --name "${OS_DISTRIBUTION}-app" \ |
| 73 | + --network "${OS_DISTRIBUTION}-network" \ |
| 74 | + --entrypoint="" \ |
| 75 | + "${IMAGE_TAG}" \ |
| 76 | + sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler" |
| 77 | + - sleep 2 |
| 78 | + - > |
| 79 | + docker run \ |
| 80 | + --name "${OS_DISTRIBUTION}-tester" \ |
| 81 | + --env "TARGET=${OS_DISTRIBUTION}-app" \ |
| 82 | + --network "${OS_DISTRIBUTION}-network" \ |
| 83 | + --entrypoint="" \ |
| 84 | + "${IMAGE_TAG}" \ |
| 85 | + sh -c 'curl -X POST "http://${TARGET}:8080/2015-03-31/functions/function/invocations" -d "{}" --max-time 10' |
| 86 | + - actual="$(docker logs --tail 1 "${OS_DISTRIBUTION}-tester" | xargs)" |
| 87 | + - expected='success' |
| 88 | + - | |
| 89 | + echo "Response: ${actual}" |
| 90 | + if [[ "$actual" != "$expected" ]]; then |
| 91 | + echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" |
| 92 | + exit -1 |
| 93 | + fi |
| 94 | + finally: |
| 95 | + - | |
| 96 | + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" |
| 97 | + echo |
| 98 | + docker logs "${OS_DISTRIBUTION}-app" || true |
| 99 | + echo |
| 100 | + echo "---------------------------------------------------" |
| 101 | + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" |
| 102 | + echo |
| 103 | + docker logs "${OS_DISTRIBUTION}-tester" || true |
| 104 | + echo |
| 105 | + echo "---------------------------------------------------" |
| 106 | + - echo "Cleaning up..." |
| 107 | + - docker stop "${OS_DISTRIBUTION}-app" || true |
| 108 | + - docker rm --force "${OS_DISTRIBUTION}-app" || true |
| 109 | + - docker stop "${OS_DISTRIBUTION}-tester" || true |
| 110 | + - docker rm --force "${OS_DISTRIBUTION}-tester" || true |
| 111 | + - docker network rm "${OS_DISTRIBUTION}-network" || true |
| 112 | + - docker rmi "${IMAGE_TAG}" || true |
0 commit comments