Give pre release a better name #11
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*" | |
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 | |
# AppSignals specific e2e eks tests | |
appsignals-e2e-eks-test: | |
needs: [build] | |
uses: ./.github/workflows/appsignals-python-e2e-eks-test.yml | |
secrets: inherit | |
with: | |
aws-region: ${{ needs.build.outputs.aws_default_region }} | |
test-cluster-name: e2e-python-adot-test | |
caller-workflow-name: 'main-build' | |
appsignals-adot-image: ${{ needs.build.outputs.staging_registry }}/aws-observability/adot-autoinstrumentation-python-staging | |
appsignals-adot-image-tag: ${{ needs.build.outputs.python_image_tag }} | |
# AppSignals specific e2e tests for ec2 | |
appsignals-python-e2e-ec2-test: | |
needs: [ build ] | |
uses: ./.github/workflows/appsignals-python-e2e-ec2-test.yml | |
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' |