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