-
Notifications
You must be signed in to change notification settings - Fork 1
feat: publish emulator image directly from testing library #196
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
base: main
Are you sure you want to change the base?
Changes from all commits
3a9f1f7
354f0b5
11227c2
2c92361
a38e2a4
9500f53
42366c1
8658345
7010fae
da9e837
890c4b9
da5365a
df1184d
0be8526
d964e53
98c65d6
d1f3a2d
a600ecc
7d4e0f1
8cf6814
942d191
73dafa5
18e9356
ce09c72
2e6f3ff
30fdc78
1855f38
72096f2
4476f4e
781d053
11718e8
172568f
e64541c
63ce50c
43ad4ca
1a2ad02
91c0e16
26e4cc9
c1e1e82
9898fba
2cb3a70
64d521c
63de332
2796bcb
44d97f9
08d30c4
0c1f8b9
5e8cbc7
d31fa7f
a4446a3
fb05a5d
1ebdee6
e053b2b
a4b3388
dfde877
4940bba
5056b6a
fd7b087
19bb4a6
9e60d21
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,155 @@ | ||
| name: ecr-release.yml | ||
| on: | ||
| release: | ||
| types: [published] | ||
|
|
||
| permissions: | ||
| contents: read | ||
| id-token: write # This is required for requesting the JWT | ||
|
|
||
| env: | ||
| path_to_dockerfile: "Dockerfile" | ||
| docker_build_dir: "." | ||
| aws_region: "us-east-1" | ||
| ecr_repository_name: "o4w4w0v6/aws-durable-execution-emulator" | ||
|
|
||
| jobs: | ||
| build-and-upload-image-to-ecr: | ||
| runs-on: ubuntu-latest | ||
| outputs: | ||
| full_image_arm64: ${{ steps.build-publish.outputs.full_image_arm64 }} | ||
| full_image_x86_64: ${{ steps.build-publish.outputs.full_image_x86_64 }} | ||
| ecr_registry_repository: ${{ steps.build-publish.outputs.ecr_registry_repository }} | ||
| version: ${{ steps.version.outputs.VERSION }} | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - arch: x86_64 | ||
| - arch: arm64 | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - name: Set up Python | ||
| uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: "3.13" | ||
| - name: Install dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install hatch | ||
| - name: Set up QEMU for multi-platform builds | ||
| if: matrix.arch == 'arm64' | ||
| uses: docker/setup-qemu-action@v3 | ||
| with: | ||
| platforms: arm64 | ||
| - name: Build distribution | ||
| run: hatch build | ||
| - name: Get version from __about__.py | ||
| id: version | ||
| run: | | ||
| VERSION=$(grep "^__version__" src/aws_durable_execution_sdk_python_testing/__about__.py | cut -d'"' -f2) | ||
| echo "VERSION=$VERSION" | ||
| echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT | ||
| - name: Configure AWS Credentials | ||
| uses: aws-actions/configure-aws-credentials@v4 | ||
| with: | ||
| role-to-assume: ${{ secrets.ECR_UPLOAD_IAM_ROLE_ARN }} | ||
| aws-region: ${{ env.aws_region }} | ||
| - name: Login to Amazon ECR | ||
| id: login-ecr-public | ||
| uses: aws-actions/amazon-ecr-login@v2 | ||
| with: | ||
| registry-type: public | ||
| - name: Build, tag, and push image to Amazon ECR | ||
| id: build-publish | ||
| shell: bash | ||
| env: | ||
| ECR_REGISTRY: ${{ steps.login-ecr-public.outputs.registry }} | ||
| ECR_REPOSITORY: ${{ env.ecr_repository_name }} | ||
| IMAGE_TAG: "v${{ steps.version.outputs.VERSION }}-${{ env.image_tag }}" | ||
| PER_ARCH_IMAGE_TAG: "v${{ steps.version.outputs.VERSION }}-${{ matrix.arch }}" | ||
| run: | | ||
| if [ "${{ matrix.arch }}" = "x86_64" ]; then | ||
| docker build --platform linux/amd64 --provenance false "${{ env.docker_build_dir }}" -f "${{ env.path_to_dockerfile }}" -t "$ECR_REGISTRY/$ECR_REPOSITORY:$PER_ARCH_IMAGE_TAG" | ||
| else | ||
| docker build --platform linux/arm64 --provenance false "${{ env.docker_build_dir }}" -f "${{ env.path_to_dockerfile }}" -t "$ECR_REGISTRY/$ECR_REPOSITORY:$PER_ARCH_IMAGE_TAG" | ||
| fi | ||
| docker push "$ECR_REGISTRY/$ECR_REPOSITORY:$PER_ARCH_IMAGE_TAG" | ||
| echo "IMAGE $PER_ARCH_IMAGE_TAG is pushed to $ECR_REGISTRY/$ECR_REPOSITORY" | ||
| echo "image_tag=$PER_ARCH_IMAGE_TAG" | ||
| echo "full_image=$ECR_REGISTRY/$ECR_REPOSITORY:$PER_ARCH_IMAGE_TAG" | ||
| echo "ecr_registry_repository=$ECR_REGISTRY/$ECR_REPOSITORY" >> $GITHUB_OUTPUT | ||
| echo "full_image_${{ matrix.arch }}=$ECR_REGISTRY/$ECR_REPOSITORY:$PER_ARCH_IMAGE_TAG" >> $GITHUB_OUTPUT | ||
| create-ecr-manifest-per-arch: | ||
| runs-on: ubuntu-latest | ||
| needs: [build-and-upload-image-to-ecr] | ||
| steps: | ||
| - name: Grab image, registry/repository name, version from previous steps | ||
| id: ecr_names | ||
| env: | ||
| ECR_REGISTRY_REPOSITORY: ${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }} | ||
| FULL_IMAGE_ARM64: ${{ needs.build-and-upload-image-to-ecr.outputs.full_image_arm64 }} | ||
| FULL_IMAGE_X86_64: ${{ needs.build-and-upload-image-to-ecr.outputs.full_image_x86_64 }} | ||
| VERSION: ${{ needs.build-and-upload-image-to-ecr.outputs.version }} | ||
| run: | | ||
| echo "full_image_arm64=$FULL_IMAGE_ARM64" | ||
| echo "ecr_registry_repository=$ECR_REGISTRY_REPOSITORY" | ||
| echo "full_image_x86_64=$FULL_IMAGE_X86_64" | ||
| echo "version=$VERSION" | ||
| - name: Configure AWS Credentials | ||
| uses: aws-actions/configure-aws-credentials@v4 | ||
| with: | ||
| role-to-assume: ${{ secrets.ECR_UPLOAD_IAM_ROLE_ARN }} | ||
| aws-region: ${{ env.aws_region }} | ||
| - name: Login to Amazon ECR | ||
| id: login-ecr-public | ||
| uses: aws-actions/amazon-ecr-login@v2 | ||
| with: | ||
| registry-type: public | ||
| - name: Create ECR manifest with explicit tag | ||
| id: create-ecr-manifest-explicit | ||
| run: | | ||
| docker manifest create "${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }}:v${{ needs.build-and-upload-image-to-ecr.outputs.version }}" \ | ||
| "${{ needs.build-and-upload-image-to-ecr.outputs.full_image_x86_64 }}" \ | ||
| "${{ needs.build-and-upload-image-to-ecr.outputs.full_image_arm64 }}" | ||
| - name: Annotate ECR manifest with explicit arm64 tag | ||
| id: annotate-ecr-manifest-explicit-arm64 | ||
| run: | | ||
| docker manifest annotate "${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }}:v${{ needs.build-and-upload-image-to-ecr.outputs.version }}" \ | ||
| "${{ needs.build-and-upload-image-to-ecr.outputs.full_image_arm64 }}" \ | ||
| --arch arm64 \ | ||
| --os linux | ||
| - name: Annotate ECR manifest with explicit amd64 tag | ||
| id: annotate-ecr-manifest-explicit-amd64 | ||
| run: | | ||
| docker manifest annotate "${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }}:v${{ needs.build-and-upload-image-to-ecr.outputs.version }}" \ | ||
| "${{ needs.build-and-upload-image-to-ecr.outputs.full_image_x86_64 }}" \ | ||
| --arch amd64 \ | ||
| --os linux | ||
| - name: Push ECR manifest with explicit version | ||
| id: push-ecr-manifest-explicit | ||
| run: | | ||
| docker manifest push "${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }}:v${{ needs.build-and-upload-image-to-ecr.outputs.version }}" | ||
| - name: Create ECR manifest with latest tag | ||
| id: create-ecr-manifest-latest | ||
| run: | | ||
| docker manifest create "${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }}" \ | ||
| "${{ needs.build-and-upload-image-to-ecr.outputs.full_image_arm64 }}" \ | ||
| "${{ needs.build-and-upload-image-to-ecr.outputs.full_image_x86_64 }}" | ||
| - name: Annotate ECR manifest with latest tag arm64 | ||
| id: annotate-ecr-manifest-latest-arm64 | ||
| run: | | ||
| docker manifest annotate "${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }}" \ | ||
| "${{ needs.build-and-upload-image-to-ecr.outputs.full_image_arm64 }}" \ | ||
| --arch arm64 \ | ||
| --os linux | ||
| - name: Annotate ECR manifest with latest tag amd64 | ||
| id: annotate-ecr-manifest-latest-amd64 | ||
| run: | | ||
| docker manifest annotate "${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }}" \ | ||
| "${{ needs.build-and-upload-image-to-ecr.outputs.full_image_x86_64 }}" \ | ||
| --arch amd64 \ | ||
| --os linux | ||
| - name: Push ECR manifest with latest | ||
| id: push-ecr-manifest-latest | ||
| run: | | ||
| docker manifest push "${{ needs.build-and-upload-image-to-ecr.outputs.ecr_registry_repository }}" | ||
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -35,3 +35,6 @@ dist/ | |
|
|
||
| examples/build/* | ||
| examples/*.zip | ||
|
|
||
| durable-executions.db* | ||
| .coverage | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| FROM python:3.13-slim | ||
|
|
||
| # Copy and install the wheel | ||
| COPY dist/*.whl /tmp/ | ||
| RUN pip install --no-cache-dir /tmp/*.whl && rm -rf /tmp/*.whl | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit:
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. you could use a bind mount (then you don't need to COPY before) |
||
|
|
||
| # AWS credentials (required for boto3) | ||
| ENV AWS_ACCESS_KEY_ID=foo \ | ||
| AWS_SECRET_ACCESS_KEY=bar \ | ||
| AWS_DEFAULT_REGION=us-east-1 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. could be a nice addition, but maybe not essential:
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I did not include this since the SAM CLI already does this healthcheck. In addition, this was causing the image to fail when running through the SAM CLI. As it's not essential, I opted to not use my time there. |
||
|
|
||
| EXPOSE 9014 | ||
|
|
||
| CMD ["dex-local-runner", "start-server", \ | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. without consumers will have to specify -p at run
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I can include |
||
| "--host", "0.0.0.0", \ | ||
| "--port", "9014", \ | ||
| "--log-level", "DEBUG", \ | ||
| "--lambda-endpoint", "http://host.docker.internal:3001", \ | ||
| "--store-type", "sqlite", \ | ||
| "--store-path", "/tmp/.durable-executions-local/durable-executions.db"] | ||
Uh oh!
There was an error while loading. Please reload this page.