From 289860df9395ad9c7e2571db9800086ba65d9b15 Mon Sep 17 00:00:00 2001 From: harryryu Date: Thu, 20 Jun 2024 12:42:44 -0700 Subject: [PATCH] Test --- .github/workflows/main_build.yml | 2 +- .github/workflows/test.yml | 107 +++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/main_build.yml b/.github/workflows/main_build.yml index 55282f91..06a8a1a0 100644 --- a/.github/workflows/main_build.yml +++ b/.github/workflows/main_build.yml @@ -102,7 +102,7 @@ jobs: # Application Signals specific e2e tests for ec2 application-signals-python-e2e-ec2-test: needs: [ build ] - uses: aws-observability/aws-application-signals-test-framework/.github/workflows/application-signals-python-e2e-ec2-test.yml@main + uses: aws-observability/aws-application-signals-test-framework/.github/workflows/application-signals-python-e2e-ec2-default-test.yml@main secrets: inherit with: aws-region: ${{ needs.build.outputs.aws_default_region }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..66d3a02d --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,107 @@ +# This workflow build the aws-opentelemetry-distro wheel file, upload to staging S3 bucket, and build project docker image then push to staging ECR +name: Python Instrumentation Main Build +on: + push: + +env: + AWS_DEFAULT_REGION: us-east-1 + STAGING_ECR_REGISTRY: 637423224110.dkr.ecr.us-east-1.amazonaws.com + STAGING_ECR_REPOSITORY: aws-observability/adot-autoinstrumentation-python-staging + STAGING_S3_BUCKET: ${{ secrets.STAGING_BUCKET_NAME }} + +concurrency: + group: python-instrumentation-main-build + cancel-in-progress: false + +permissions: + id-token: write + contents: read + +jobs: + build: + runs-on: ubuntu-latest + outputs: + aws_default_region: ${{ steps.python_output.outputs.awsDefaultRegion}} + python_image_tag: ${{ steps.python_output.outputs.python_image_tag}} + staging_image: ${{ steps.python_output.outputs.stagingImage}} + staging_registry: ${{ steps.python_output.outputs.stagingRegistry}} + staging_repository: ${{ steps.python_output.outputs.stagingRepository}} + staging_wheel_file: ${{ steps.staging_wheel_output.outputs.STAGING_WHEEL}} + steps: + - name: Checkout Contrib Repo @ SHA - ${{ github.sha }} + uses: actions/checkout@v4 + + - name: Get Python Distro Output + id: python_output + run: | + pkg_version=$(grep '__version__' ./aws-opentelemetry-distro/src/amazon/opentelemetry/distro/version.py | awk -F '"' '{print $2}') + echo "ADOT_PYTHON_VERSION=$pkg_version" >> $GITHUB_OUTPUT + shortsha="$(git rev-parse --short HEAD)" + echo "SHORT_SHA=$shortsha" >> $GITHUB_ENV + python_distro_tag=$pkg_version-$shortsha + echo "awsDefaultRegion=${{ env.AWS_DEFAULT_REGION }}" >> $GITHUB_OUTPUT + echo "python_image_tag=$python_distro_tag" >> $GITHUB_OUTPUT + echo "stagingRegistry=${{ env.STAGING_ECR_REGISTRY }}" >> $GITHUB_OUTPUT + echo "stagingRepository=${{ env.STAGING_ECR_REPOSITORY }}" >> $GITHUB_OUTPUT + echo "stagingImage=${{ env.STAGING_ECR_REGISTRY }}/${{ env.STAGING_ECR_REPOSITORY }}:$python_distro_tag" >> $GITHUB_OUTPUT + + - name: Build and Push Wheel and Image Files + uses: ./.github/actions/artifacts_build + with: + aws-region: ${{ env.AWS_DEFAULT_REGION }} + image_uri_with_tag: ${{ steps.python_output.outputs.stagingImage}} + image_registry: ${{ env.STAGING_ECR_REGISTRY }} + snapshot-ecr-role: ${{ secrets.AWS_ASSUME_ROLE_ARN }} + push_image: true + load_image: false + python_version: "3.10" + package_name: aws-opentelemetry-distro + os: ubuntu-latest + + # workaround: prefixing the short-sha with a 0 to create a valid + # wheel file name as per https://peps.python.org/pep-0427/#file-name-convention + - name: Output Wheel File Name + id: staging_wheel_output + run: | + staging_wheel="aws_opentelemetry_distro-${{ steps.python_output.outputs.ADOT_PYTHON_VERSION}}-0${{ env.SHORT_SHA }}-py3-none-any.whl" + echo "STAGING_WHEEL=$staging_wheel" >> $GITHUB_OUTPUT + cd ./dist + cp aws_opentelemetry_distro-${{ steps.python_output.outputs.ADOT_PYTHON_VERSION}}-py3-none-any.whl $staging_wheel + + - name: Upload wheel to S3 + run: | + aws s3 cp dist/${{ steps.staging_wheel_output.outputs.STAGING_WHEEL}} s3://${{ env.STAGING_S3_BUCKET }} + + - name: Upload Wheel to GitHub Actions + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.staging_wheel_output.outputs.STAGING_WHEEL}} + path: dist/${{ steps.staging_wheel_output.outputs.STAGING_WHEEL}} + + - name: Set up and run contract tests with pytest + run: | + bash scripts/set-up-contract-tests.sh + pip install pytest + pytest contract-tests/tests + + # Application Signals specific e2e eks tests + application-signals-python-e2e-eks-test: + needs: [build] + uses: aws-observability/aws-application-signals-test-framework/.github/workflows/application-signals-python-e2e-eks-test.yml@main + secrets: inherit + with: + aws-region: ${{ needs.build.outputs.aws_default_region }} + test-cluster-name: e2e-python-adot-test + caller-workflow-name: 'main-build' + application-signals-adot-image: ${{ needs.build.outputs.staging_registry }}/aws-observability/adot-autoinstrumentation-python-staging + application-signals-adot-image-tag: ${{ needs.build.outputs.python_image_tag }} + + # Application Signals specific e2e tests for ec2 + application-signals-python-e2e-ec2-test: + needs: [ build ] + uses: aws-observability/aws-application-signals-test-framework/.github/workflows/application-signals-python-e2e-ec2-default-test.yml@main + secrets: inherit + with: + aws-region: ${{ needs.build.outputs.aws_default_region }} + staging_wheel_name: ${{ needs.build.outputs.staging_wheel_file }} + caller-workflow-name: 'main-build'