Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test/binary canaries #5704

Merged
merged 63 commits into from
Aug 3, 2023
Merged
Changes from 1 commit
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
792c6da
chore: Update CFN Lint version to support python 3.11 (#5651)
ConnorKirk Jul 31, 2023
e0de998
fix: Require file label to run before maintainers (#5656)
lucashuy Jul 31, 2023
275d44e
Add Windows config
mildaniel Jul 31, 2023
d0d68da
Fix formatting
mildaniel Jul 31, 2023
139964d
Merge changes from upstream
mildaniel Jul 31, 2023
f171723
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Jul 31, 2023
0ae07bb
Update config
mildaniel Jul 31, 2023
eeee79b
test
mildaniel Aug 1, 2023
91318ea
Update config
mildaniel Aug 1, 2023
99d80c5
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 1, 2023
b378f79
Update config
mildaniel Aug 1, 2023
8ba209a
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 1, 2023
88a21e1
Update config
mildaniel Aug 1, 2023
b3fe097
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 1, 2023
a5150f2
Update config
mildaniel Aug 1, 2023
1e14e6f
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 1, 2023
98f2cc8
Update config
mildaniel Aug 1, 2023
d264edd
chore: update aws_lambda_builders to 1.36.0 (#5655)
github-actions[bot] Aug 1, 2023
7457876
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 1, 2023
c754867
Update config
mildaniel Aug 1, 2023
bc08fa0
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 1, 2023
d854da7
Update config
mildaniel Aug 1, 2023
253852c
fix(invoke): Write in UTF-8 string instead of bytes (#5642)
jfuss Aug 1, 2023
27eb2e1
chore(deps): bump cryptography from 41.0.2 to 41.0.3 in /requirements…
dependabot[bot] Aug 2, 2023
e7413ae
Add linux config
mildaniel Aug 2, 2023
dfca9dd
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
135da3a
fix(test): Force reading file with utf8 in tests for windows (#5679)
jfuss Aug 2, 2023
b282ceb
fix(test): Increase max execution time for timeout tests (#5680)
jfuss Aug 2, 2023
3db9c79
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
78fe5a2
Update install links
mildaniel Aug 2, 2023
44d4bfa
Update linux config
mildaniel Aug 2, 2023
43332c4
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
b22459d
Update linux config
mildaniel Aug 2, 2023
5d8cb59
Resolve merge conflicts
mildaniel Aug 2, 2023
a263761
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
1ba36ac
Update linux config
mildaniel Aug 2, 2023
679d785
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
54972ab
Update linux config
mildaniel Aug 2, 2023
b10bd58
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
66a85e6
Update linux config
mildaniel Aug 2, 2023
f2bcf8b
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
fad6c46
Update linux config
mildaniel Aug 2, 2023
27ea704
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
748c100
Update linux config
mildaniel Aug 2, 2023
b994033
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
125f695
Update linux config
mildaniel Aug 2, 2023
2c953fc
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
6d093b2
Update linux config
mildaniel Aug 2, 2023
6ad913a
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
64ce0d8
Update linux config
mildaniel Aug 2, 2023
622bd18
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 2, 2023
abe74fb
Update linux config
mildaniel Aug 2, 2023
8ee525e
Merge branch 'develop' of https://github.com/aws/aws-sam-cli into tes…
mildaniel Aug 3, 2023
841b2f4
Update Windows config
mildaniel Aug 3, 2023
766e036
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 3, 2023
a3472d5
Update Windows config
mildaniel Aug 3, 2023
ed573cf
Update Windows config
mildaniel Aug 3, 2023
9e10d31
Update Windows config
mildaniel Aug 3, 2023
2296c6d
Update Windows config
mildaniel Aug 3, 2023
5b1de9a
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 3, 2023
15133a0
Update Windows config
mildaniel Aug 3, 2023
3a88be8
Merge branch 'test/binary-canaries' of https://github.com/aws/aws-sam…
mildaniel Aug 3, 2023
8f756dc
Update Windows config
mildaniel Aug 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add linux config
  • Loading branch information
mildaniel committed Aug 2, 2023
commit e7413aec659ca4ad173ddf3755c7e7de14df7938
296 changes: 296 additions & 0 deletions appveyor-linux-binary.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,296 @@
version: 1.0.{build}
image:
- Ubuntu2004

configuration:
- BuildIntegTesting
- LocalZipTerraformBuildIntegTesting
- LocalZipTerraformBuildInContainerIntegTesting
- S3ZipTerraformBuildIntegTesting
- S3ZipTerraformBuildInContainerIntegTesting
- OtherTerraformBuildIntegTesting
- DeployIntegTesting
- PackageIntegTesting
- DeleteIntegTesting
- SyncIntegTesting
- LocalIntegTesting
- EndToEndTesting
# other Integration testing, Dev, regression and smoke testing
- OtherTesting

environment:
AWS_DEFAULT_REGION: us-east-1
SAM_CLI_DEV: 1
NODE_VERSION: "14.17.6"
AWS_S3: 'AWS_S3_TESTING'
AWS_ECR: 'AWS_ECR_TESTING'
CARGO_LAMBDA_VERSION: "v0.17.1"
PYTHON_ARCH: '64'
NOSE_PARAMETERIZED_NO_WARN: 1
APPVEYOR_CONSOLE_DISABLE_PTY: false
APPVEYOR_DETAILED_SHELL_LOGGING: true

matrix:

- PYTHON_HOME: "$HOME/venv3.7/bin"
PYTHON_VERSION: '3.7'

- PYTHON_HOME: "$HOME/venv3.8/bin"
PYTHON_VERSION: '3.8'

- PYTHON_HOME: "$HOME/venv3.11/bin"
PYTHON_VERSION: '3.11'

install:
# AppVeyor's apt-get cache might be outdated, and the package could potentially be 404.
- sh: "sudo apt-get update --allow-releaseinfo-change"

- sh: "gvm use go1.19"
- sh: "echo $PATH"
- sh: "ls /usr/"
# install latest maven which is compatible with jdk17
- sh: "sudo apt-get -y remove maven"
- sh: "wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.zip -P /tmp"
- sh: "sudo unzip -d /opt/mvn /tmp/apache-maven-*.zip"
- sh: "PATH=/opt/mvn/apache-maven-3.8.8/bin:$PATH"
- sh: "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
- sh: "PATH=$JAVA_HOME/bin:$PATH"
- sh: "javac -version"
- sh: "java -version"
- sh: "mvn --version"

- sh: "source ${HOME}/venv${PYTHON_VERSION}/bin/activate"
- sh: "rvm use 2.7.2"
- sh: "docker info"
- sh: "docker version"
- sh: "nvm install ${NODE_VERSION}"
- sh: "npm install [email protected] -g"
- sh: "npm -v"

# Install latest gradle
- sh: "sudo apt-get -y remove gradle"
- sh: "wget https://services.gradle.org/distributions/gradle-7.3.1-bin.zip -P /tmp"
- sh: "sudo unzip -d /opt/gradle /tmp/gradle-*.zip"
- sh: "PATH=/opt/gradle/gradle-7.3.1/bin:$PATH"

# Install AWS CLI
- sh: "virtualenv aws_cli"
- sh: "./aws_cli/bin/python -m pip install awscli"
- sh: "PATH=$(echo $PWD'/aws_cli/bin'):$PATH"

- sh: "PATH=$PATH:$HOME/venv3.7/bin:$HOME/venv3.8/bin:$HOME/venv3.9/bin:$HOME/venv3.10/bin"

# update ca-certificates which causes failures with newest golang library
- sh: "sudo apt-get install --reinstall ca-certificates"

# get testing env vars
- sh: "sudo apt install -y jq"

# install Terraform
- sh: "sudo apt update --allow-releaseinfo-change"
- sh: "TER_VER=`curl -s https://api.github.com/repos/hashicorp/terraform/releases/latest | grep tag_name | cut -d: -f2 | tr -d \\\"\\,\\v | awk '{$1=$1};1'`"
- sh: "wget https://releases.hashicorp.com/terraform/${TER_VER}/terraform_${TER_VER}_linux_amd64.zip -P /tmp"
- sh: "sudo unzip -d /opt/terraform /tmp/terraform_${TER_VER}_linux_amd64.zip"
- sh: "sudo mv /opt/terraform/terraform /usr/local/bin/"
- sh: "terraform -version"

# install Rust
- sh: "curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused -fsSL https://sh.rustup.rs | sh -s -- --default-toolchain none -y > /dev/null 2>&1"
- sh: "source $HOME/.cargo/env"
- sh: "rustup toolchain install stable --profile minimal --no-self-update"
- sh: "rustup default stable"
- sh: "rustup target add x86_64-unknown-linux-gnu --toolchain stable"
- sh: "rustup target add aarch64-unknown-linux-gnu --toolchain stable"
- sh: "pip install cargo-lambda==$CARGO_LAMBDA_VERSION"
- sh: "rustc -V"
- sh: "cargo -V"
- sh: "cargo lambda -V"

- sh: "python3.9 -m venv .venv_env_vars"
- sh: ".venv_env_vars/bin/pip install boto3"
- sh: "test_env_var=$(.venv_env_vars/bin/python tests/get_testing_resources.py)"
- sh: '
if [ $? -ne 0 ]; then
echo "get_testing_resources failed. Failed to acquire credentials or test resources.";
false;
fi
'

- sh: 'export CI_ACCESS_ROLE_AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID'
- sh: 'export CI_ACCESS_ROLE_AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY'
- sh: 'export CI_ACCESS_ROLE_AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN'

- sh: 'export AWS_ACCESS_KEY_ID=$(echo "$test_env_var" | jq -j ".accessKeyID")'
- sh: 'export AWS_SECRET_ACCESS_KEY=$(echo "$test_env_var" | jq -j ".secretAccessKey")'
- sh: 'export AWS_SESSION_TOKEN=$(echo "$test_env_var" | jq -j ".sessionToken")'
- sh: 'export TASK_TOKEN=$(echo "$test_env_var" | jq -j ".taskToken")'
- sh: 'export AWS_S3_TESTING=$(echo "$test_env_var" | jq -j ".TestBucketName")'
- sh: 'export AWS_ECR_TESTING=$(echo "$test_env_var" | jq -j ".TestECRURI")'
- sh: 'export AWS_KMS_KEY=$(echo "$test_env_var" | jq -j ".TestKMSKeyArn")'
- sh: 'export AWS_SIGNING_PROFILE_NAME=$(echo "$test_env_var" | jq -j ".TestSigningProfileName")'
- sh: 'export AWS_SIGNING_PROFILE_VERSION_ARN=$(echo "$test_env_var" | jq -j ".TestSigningProfileARN")'

# required for RIE with arm64 in linux
- sh: "
if [[ -n $BY_CANARY ]] && [[ -n $DOCKER_USER ]] && [[ -n $DOCKER_PASS ]];
then echo Logging in Docker Hub; echo $DOCKER_PASS | docker login --username $DOCKER_USER --password-stdin registry-1.docker.io;
fi"
- sh: "
if [[ -n $BY_CANARY ]] && [[ -n $DOCKER_USER ]] && [[ -n $DOCKER_PASS ]];
then echo Logging in Docker Hub; echo $DOCKER_PASS | docker login --username $DOCKER_USER --password-stdin;
fi"
- sh: "docker run --rm --privileged multiarch/qemu-user-static --reset -p yes"


# Runs only in Linux, logging Public ECR when running canary and cred is available
- sh: "
if [[ -n $BY_CANARY ]];
then echo Logging in Public ECR; aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws;
fi"


build_script:
- curl -L https://github.com/aws/aws-sam-cli/releases/downloads/sam-cli-nightly/aws-sam-cli-linux-x86_64.zip -o aws-sam-cli-linux-x86_64.zip
- unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
- ./sam-installation/install
- sam --version

# Final clean up no matter success or failure
on_finish:
# Upload test reports as artifacts
- sh: find "$APPVEYOR_BUILD_FOLDER" -type f -name 'TEST_REPORT-*.json' -print0 | xargs -0 -I '{}' appveyor PushArtifact '{}'
- sh: >
AWS_ACCESS_KEY_ID=$TEST_REPORT_S3_BUCKET_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY=$TEST_REPORT_S3_BUCKET_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN=$TEST_REPORT_S3_BUCKET_SESSION_TOKEN
aws s3 cp "$APPVEYOR_BUILD_FOLDER" "s3://$TEST_REPORT_S3_BUCKET_NAME/appveyor/$APPVEYOR_PROJECT_SLUG/$APPVEYOR_BUILD_ID/$APPVEYOR_JOB_ID/" --recursive --exclude "*" --include "TEST_REPORT-*.json" --region us-west-2

# notify task success
- sh: 'export AWS_ACCESS_KEY_ID=$CI_ACCESS_ROLE_AWS_ACCESS_KEY_ID'
- sh: 'export AWS_SECRET_ACCESS_KEY=$CI_ACCESS_ROLE_AWS_SECRET_ACCESS_KEY'
- sh: 'export AWS_SESSION_TOKEN=$CI_ACCESS_ROLE_AWS_SESSION_TOKEN'

- sh: 'aws stepfunctions send-task-success --task-token "$TASK_TOKEN" --task-output "{}" --region us-west-2'

for:
# Integ testing build
-
matrix:
only:
- configuration: BuildIntegTesting

test_script:
- sh: "pytest -vv tests/integration/buildcmd --ignore=tests/integration/buildcmd/test_build_terraform_applications.py --ignore=tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json"

# Set JAVA_HOME to java11
- sh: "JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
- sh: "pytest -vv tests/integration/buildcmd/test_build_cmd.py -k test_building_java11_in_process --json-report --json-report-file=TEST_REPORT-integration-buildcmd-java11.json"

# Local ZIP Terraform Build integ testing
-
matrix:
only:
- configuration: LocalZipTerraformBuildIntegTesting

test_script:
- sh: "pytest -vv -n 4 tests/integration/buildcmd/test_build_terraform_applications.py::TestBuildTerraformApplicationsWithZipBasedLambdaFunctionAndLocalBackend_0 --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json"

# Local ZIP Terraform Build In Container integ testing
-
matrix:
only:
- configuration: LocalZipTerraformBuildInContainerIntegTesting

test_script:
- sh: "pytest -vv -n 4 tests/integration/buildcmd/test_build_terraform_applications.py::TestBuildTerraformApplicationsWithZipBasedLambdaFunctionAndLocalBackend_1 --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json"

# S3 ZIP Terraform Build integ testing
-
matrix:
only:
- configuration: S3ZipTerraformBuildIntegTesting

test_script:
- sh: "pytest -vv -n 4 tests/integration/buildcmd/test_build_terraform_applications.py::TestBuildTerraformApplicationsWithZipBasedLambdaFunctionAndS3Backend_0 --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json"

# S3 ZIP Terraform Build In Container integ testing
-
matrix:
only:
- configuration: S3ZipTerraformBuildInContainerIntegTesting

test_script:
- sh: "pytest -vv -n 4 tests/integration/buildcmd/test_build_terraform_applications.py::TestBuildTerraformApplicationsWithZipBasedLambdaFunctionAndS3Backend_1 --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json"

# Other Terraform Build In Container integ testing
-
matrix:
only:
- configuration: OtherTerraformBuildIntegTesting

test_script:
- sh: "pytest -vv -n 4 tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-buildcmd.json"

# Integ testing deploy
-
matrix:
only:
- configuration: DeployIntegTesting

test_script:
- sh: "pytest -vv tests/integration/deploy -n 4 --reruns 4 --dist=loadgroup --json-report --json-report-file=TEST_REPORT-integration-deploy.json"

# Integ testing package
-
matrix:
only:
- configuration: PackageIntegTesting

test_script:
- sh: "pytest -vv tests/integration/package -n 4 --reruns 4 --json-report --json-report-file=TEST_REPORT-integration-package.json"

# Integ testing delete
-
matrix:
only:
- configuration: DeleteIntegTesting

test_script:
- sh: "pytest -vv tests/integration/delete -n 4 --reruns 4 --json-report --json-report-file=TEST_REPORT-integration-delete.json"

# Integ testing sync
-
matrix:
only:
- configuration: SyncIntegTesting

test_script:
- sh: "pytest -vv tests/integration/sync -n 3 --reruns 3 --dist loadscope --json-report --json-report-file=TEST_REPORT-integration-sync.json"

# Integ testing local
-
matrix:
only:
- configuration: LocalIntegTesting

test_script:
- sh: "pytest -vv tests/integration/local --json-report --json-report-file=TEST_REPORT-integration-local.json"

# End-to-end testing
-
matrix:
only:
- configuration: EndToEndTesting

test_script:
- sh: "pytest -vv -n 4 --reruns 5 --dist loadscope tests/end_to_end --json-report --json-report-file=TEST_REPORT-end-to-end.json"

# Other testing
-
matrix:
only:
- configuration: OtherTesting

test_script:
- sh: "pytest -vv -n 4 --reruns 4 --dist loadgroup tests/integration --ignore=tests/integration/buildcmd --ignore=tests/integration/delete --ignore=tests/integration/deploy --ignore=tests/integration/package --ignore=tests/integration/sync --ignore=tests/integration/local --json-report --json-report-file=TEST_REPORT-integration-others.json"
- sh: "pytest -vv tests/regression --json-report --json-report-file=TEST_REPORT-regression.json"