Update dependency version - dependabot alert (#301) #19
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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: | |
branches: | |
- main | |
- "release/v*" | |
- ci-workflow | |
workflow_dispatch: # be able to run the workflow on demand | |
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 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: Build and Publish Lambda Staging Layer | |
uses: ./.github/actions/lambda_artifacts_build | |
with: | |
aws-region: ${{ env.AWS_DEFAULT_REGION }} | |
snapshot-ecr-role: ${{ secrets.AWS_ASSUME_ROLE_ARN }} | |
python_version: "3.12" | |
layer_directory: lambda-layer | |
staging_s3_bucket: ${{ env.STAGING_S3_BUCKET }} | |
os: ubuntu-latest | |
- 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-e2e-test: | |
name: "Application Signals E2E Test" | |
needs: [ build ] | |
uses: ./.github/workflows/application-signals-e2e-test.yml | |
secrets: inherit | |
permissions: | |
id-token: write | |
contents: read | |
with: | |
staging-wheel-name: ${{ needs.build.outputs.staging_wheel_file }} | |
adot-image-name: ${{ needs.build.outputs.staging_registry }}/aws-observability/adot-autoinstrumentation-python-staging:${{ needs.build.outputs.python_image_tag }} |