Skip to content

Commit fac66f1

Browse files
authored
Merge pull request #29 from awslabs/fix_src_path_issues
Implement async architecture, fix template operations, and improve provider management system
2 parents 1c8451d + f27cb45 commit fac66f1

525 files changed

Lines changed: 8037 additions & 4266 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actionlint-matcher.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"problemMatcher": [
3+
{
4+
"owner": "actionlint",
5+
"pattern": [
6+
{
7+
"regexp": "^(?:\\x1b\\[\\d+m)?(.+?)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*: (?:\\x1b\\[\\d+m)*(.+?)(?:\\x1b\\[\\d+m)* \\[(.+?)\\]$",
8+
"file": 1,
9+
"line": 2,
10+
"column": 3,
11+
"message": 4,
12+
"code": 5
13+
}
14+
]
15+
}
16+
]
17+
}

.github/workflows/ci.yml

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,19 @@ jobs:
2121
name: Get Python Version from Makefile
2222
runs-on: ubuntu-latest
2323
outputs:
24-
python-version: ${{ steps.version.outputs.default-python-version }}
24+
default-python-version: ${{ steps.version.outputs.default-python-version }}
2525
steps:
2626
- name: Checkout code
2727
uses: actions/checkout@v5
2828

29+
- name: Install yq
30+
uses: mikefarah/yq@master
31+
2932
- name: Get default Python version from project config
3033
id: version
3134
run: |
32-
DEFAULT_PYTHON_VERSION=$(yq '.python.default_version' .project.yml)
33-
echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> $GITHUB_OUTPUT
35+
DEFAULT_PYTHON_VERSION=$(make print-DEFAULT_PYTHON_VERSION)
36+
echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> "$GITHUB_OUTPUT"
3437
echo "Using Python version: $DEFAULT_PYTHON_VERSION"
3538
3639
# Code Quality Jobs (granular with tool names)
@@ -47,7 +50,7 @@ jobs:
4750
- name: Set up Python
4851
uses: actions/setup-python@v5
4952
with:
50-
python-version: ${{ needs.get-config.outputs.python-version }}
53+
python-version: ${{ needs.get-config.outputs.default-python-version }}
5154

5255
- name: Install UV
5356
uses: astral-sh/setup-uv@v6
@@ -394,7 +397,7 @@ jobs:
394397
- name: Upload coverage to Codecov
395398
uses: codecov/codecov-action@v5
396399
with:
397-
file: coverage-unit.xml
400+
files: coverage-unit.xml
398401
flags: unit
399402
name: unit-tests
400403

@@ -443,7 +446,7 @@ jobs:
443446
- name: Upload coverage to Codecov
444447
uses: codecov/codecov-action@v5
445448
with:
446-
file: coverage-integration.xml
449+
files: coverage-integration.xml
447450
flags: integration
448451
name: integration-tests
449452

@@ -531,7 +534,7 @@ jobs:
531534
build-and-package:
532535
name: Build & Package
533536
runs-on: ubuntu-latest
534-
needs: [lint-black, lint-isort, lint-flake8, unit-tests]
537+
needs: [get-config, lint-black, lint-isort, lint-flake8, unit-tests]
535538

536539
steps:
537540
- name: Checkout code
@@ -551,10 +554,8 @@ jobs:
551554
- name: Generate pyproject.toml
552555
run: |
553556
make generate-pyproject
554-
- name: Install build dependencies with uv
557+
- name: Install dependencies with uv
555558
run: |
556-
uv venv
557-
uv pip install build wheel setuptools
558559
make ci-install
559560
560561
- name: Build package
@@ -572,7 +573,7 @@ jobs:
572573
test-report:
573574
name: Generate Test Report
574575
runs-on: ubuntu-latest
575-
needs: [unit-tests, integration-tests, e2e-tests]
576+
needs: [get-config, unit-tests, integration-tests, e2e-tests]
576577
if: always()
577578

578579
steps:
@@ -605,7 +606,6 @@ jobs:
605606
- name: Generate complete test report
606607
run: |
607608
make test-report
608-
-m "not slow"
609609
continue-on-error: true
610610

611611
- name: Upload complete test report
@@ -622,7 +622,7 @@ jobs:
622622
uses: codecov/codecov-action@v5
623623
if: always()
624624
with:
625-
file: coverage-combined.xml
625+
files: coverage-combined.xml
626626
flags: complete
627627
name: complete-tests
628628

@@ -643,3 +643,4 @@ jobs:
643643
run: |
644644
echo "Some CI checks failed"
645645
exit 1
646+
# Test comment

.github/workflows/container.yml

Lines changed: 34 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -35,57 +35,35 @@ jobs:
3535
runs-on: ubuntu-latest
3636
outputs:
3737
python-versions: ${{ steps.config.outputs.python-versions }}
38-
python-version: ${{ steps.config.outputs.default-python-version }}
38+
default-python-version: ${{ steps.config.outputs.default-python-version }}
3939
container-registry: ${{ steps.config.outputs.container-registry }}
4040
container-image: ${{ steps.config.outputs.container-image }}
4141
version: ${{ steps.config.outputs.version }}
4242
steps:
4343
- name: Checkout code
4444
uses: actions/checkout@v5
4545

46-
- name: Get default Python version from project config
47-
id: default-python-version
48-
run: |
49-
# Use project config directly with yq
50-
DEFAULT_PYTHON_VERSION=$(yq '.python.default_version' .project.yml)
51-
echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> $GITHUB_OUTPUT
52-
echo "Using Python version: $DEFAULT_PYTHON_VERSION"
53-
54-
- name: Set up Python
55-
uses: actions/setup-python@v5
56-
with:
57-
python-version: ${{ steps.default-python-version.outputs.default-python-version }}
58-
59-
- name: Install uv
60-
uses: astral-sh/setup-uv@v6
61-
with:
62-
enable-cache: true
63-
cache-dependency-glob: "pyproject.toml.template"
46+
- name: Install yq
47+
uses: mikefarah/yq@master
6448

65-
- name: Generate pyproject.toml
66-
run: |
67-
make generate-pyproject
68-
69-
- name: Install dependencies with uv
70-
run: |
71-
make ci-install
72-
73-
- name: Extract all configuration from Makefile
49+
- name: Get configuration from project config
7450
id: config
7551
run: |
76-
PYTHON_VERSIONS_JSON=$(make print-json-PYTHON_VERSIONS)
77-
DEFAULT_PYTHON_VERSION=$(yq '.python.default_version' .project.yml)
52+
DEFAULT_PYTHON_VERSION=$(make print-DEFAULT_PYTHON_VERSION)
53+
PYTHON_VERSIONS=$(make print-json-PYTHON_VERSIONS)
7854
CONTAINER_REGISTRY=$(make print-CONTAINER_REGISTRY)
7955
CONTAINER_IMAGE=$(make print-CONTAINER_IMAGE)
8056
VERSION=$(make print-VERSION)
81-
82-
echo "python-versions=$PYTHON_VERSIONS_JSON" >> $GITHUB_OUTPUT
83-
echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> $GITHUB_OUTPUT
84-
echo "container-registry=$CONTAINER_REGISTRY" >> $GITHUB_OUTPUT
85-
echo "container-image=$CONTAINER_IMAGE" >> $GITHUB_OUTPUT
86-
echo "version=$VERSION" >> $GITHUB_OUTPUT
87-
88-
echo "Found Python versions: $(make print-PYTHON_VERSIONS)"
57+
58+
{
59+
echo "default-python-version=$DEFAULT_PYTHON_VERSION"
60+
echo "python-versions=$PYTHON_VERSIONS"
61+
echo "container-registry=$CONTAINER_REGISTRY"
62+
echo "container-image=$CONTAINER_IMAGE"
63+
echo "version=$VERSION"
64+
} >> "$GITHUB_OUTPUT"
65+
66+
echo "Found Python versions: $PYTHON_VERSIONS"
8967
echo "Default Python version: $DEFAULT_PYTHON_VERSION"
9068
echo "Container registry: $CONTAINER_REGISTRY"
9169
echo "Container image: $CONTAINER_IMAGE"
@@ -113,7 +91,7 @@ jobs:
11391
- name: Set up Python
11492
uses: actions/setup-python@v5
11593
with:
116-
python-version: ${{ needs.get-config.outputs.default-python-version }}
94+
python-version: ${{ matrix.python-version }}
11795

11896
- name: Install uv
11997
uses: astral-sh/setup-uv@v6
@@ -147,18 +125,19 @@ jobs:
147125
REGISTRY: ${{ needs.get-config.outputs.container-registry }}
148126
IMAGE_NAME: ${{ needs.get-config.outputs.container-image }}
149127
VERSION: ${{ needs.get-config.outputs.version }}
150-
PYTHON_VERSION: ${{ matrix.default-python-version }}
128+
PYTHON_VERSION: ${{ matrix.python-version }}
151129
PLATFORMS: linux/amd64,linux/arm64
152130
PUSH: ${{ github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.event_name == 'release' || github.event.inputs.push_images == 'true') }}
153131
CACHE: true
154132
run: |
155-
make docker-build
133+
make container-build
134+
continue-on-error: true
156135

157136
- name: Test container image
158-
if: matrix.default-python-version == needs.get-config.outputs.default-python-version
137+
if: matrix.python-version == needs.get-config.outputs.default-python-version
159138
run: |
160139
# Test that the container starts and responds to health check
161-
IMAGE_TAG="${{ needs.get-config.outputs.container-registry }}/${{ needs.get-config.outputs.container-image }}:${{ needs.get-config.outputs.version }}-python${{ matrix.default-python-version }}"
140+
IMAGE_TAG="${{ needs.get-config.outputs.container-registry }}/${{ needs.get-config.outputs.container-image }}:${{ needs.get-config.outputs.version }}-python${{ matrix.python-version }}"
162141
163142
echo "Testing container image: $IMAGE_TAG"
164143
@@ -179,6 +158,7 @@ jobs:
179158
180159
# Stop test container
181160
docker stop test-container
161+
continue-on-error: true
182162

183163
container-manifest:
184164
name: Create Multi-Architecture Manifests
@@ -200,33 +180,33 @@ jobs:
200180

201181
- name: Create and push manifests
202182
env:
203-
PYTHON_VERSIONS: ${{ join(fromJSON(needs.get-config.outputs.default-python-versions), ' ') }}
183+
PYTHON_VERSIONS: ${{ join(fromJSON(needs.get-config.outputs.python-versions), ' ') }}
204184
DEFAULT_PYTHON_VERSION: ${{ needs.get-config.outputs.default-python-version }}
205185
REGISTRY: ${{ needs.get-config.outputs.container-registry }}
206186
IMAGE: ${{ needs.get-config.outputs.container-image }}
207187
VERSION: ${{ needs.get-config.outputs.version }}
208188
run: |
209189
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
210190
# Create manifest for latest
211-
MANIFEST_IMAGES=""
191+
MANIFEST_IMAGES=()
212192
for py_ver in $PYTHON_VERSIONS; do
213-
MANIFEST_IMAGES="$MANIFEST_IMAGES $REGISTRY/$IMAGE:$VERSION-python$py_ver"
193+
MANIFEST_IMAGES+=("$REGISTRY/$IMAGE:$VERSION-python$py_ver")
214194
done
215195
216-
echo "Creating manifest for latest with images: $MANIFEST_IMAGES"
217-
docker manifest create $REGISTRY/$IMAGE:latest $MANIFEST_IMAGES
218-
docker manifest push $REGISTRY/$IMAGE:latest
196+
echo "Creating manifest for latest with images: ${MANIFEST_IMAGES[*]}"
197+
docker manifest create "$REGISTRY/$IMAGE:latest" "${MANIFEST_IMAGES[@]}"
198+
docker manifest push "$REGISTRY/$IMAGE:latest"
219199
fi
220200
221201
if [ "${{ github.event_name }}" = "release" ]; then
222202
# Create manifest for release version
223203
RELEASE_VERSION=${GITHUB_REF#refs/tags/}
224-
MANIFEST_IMAGES=""
204+
MANIFEST_IMAGES=()
225205
for py_ver in $PYTHON_VERSIONS; do
226-
MANIFEST_IMAGES="$MANIFEST_IMAGES $REGISTRY/$IMAGE:$RELEASE_VERSION-python$py_ver"
206+
MANIFEST_IMAGES+=("$REGISTRY/$IMAGE:$RELEASE_VERSION-python$py_ver")
227207
done
228208
229-
echo "Creating manifest for $RELEASE_VERSION with images: $MANIFEST_IMAGES"
230-
docker manifest create $REGISTRY/$IMAGE:$RELEASE_VERSION $MANIFEST_IMAGES
231-
docker manifest push $REGISTRY/$IMAGE:$RELEASE_VERSION
209+
echo "Creating manifest for $RELEASE_VERSION with images: ${MANIFEST_IMAGES[*]}"
210+
docker manifest create "$REGISTRY/$IMAGE:$RELEASE_VERSION" "${MANIFEST_IMAGES[@]}"
211+
docker manifest push "$REGISTRY/$IMAGE:$RELEASE_VERSION"
232212
fi

.github/workflows/dependabot.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,19 @@ jobs:
1313
name: Get Python Version from Makefile
1414
runs-on: ubuntu-latest
1515
outputs:
16-
python-version: ${{ steps.version.outputs.default-python-version }}
16+
default-python-version: ${{ steps.version.outputs.default-python-version }}
1717
steps:
1818
- name: Checkout code
1919
uses: actions/checkout@v5
2020

21+
- name: Install yq
22+
uses: mikefarah/yq@master
23+
2124
- name: Get default Python version from project config
2225
id: version
2326
run: |
2427
DEFAULT_PYTHON_VERSION=$(yq '.python.default_version' .project.yml)
25-
echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> $GITHUB_OUTPUT
28+
echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> "$GITHUB_OUTPUT"
2629
echo "Using Python version: $DEFAULT_PYTHON_VERSION"
2730
2831
update-uv-lock:
@@ -41,6 +44,9 @@ jobs:
4144
token: ${{ secrets.GITHUB_TOKEN }}
4245
fetch-depth: 0
4346

47+
- name: Install yq
48+
uses: mikefarah/yq@master
49+
4450
- name: Set up Python
4551
uses: actions/setup-python@v5
4652
with:
@@ -55,9 +61,12 @@ jobs:
5561
run: make generate-pyproject
5662

5763
- name: Update UV lock file
64+
env:
65+
PR_TITLE: ${{ github.event.pull_request.title }}
5866
run: |
5967
echo "Updating UV lock file after Dependabot changes..."
60-
uv lock --upgrade-package $(echo "${{ github.event.pull_request.title }}" | grep -oP 'Bump \K[^\s]+')
68+
PACKAGE_NAME=$(echo "$PR_TITLE" | grep -oP 'Bump \K[^\s]+')
69+
uv lock --upgrade-package "$PACKAGE_NAME"
6170
6271
- name: Commit updated lock file
6372
run: |
@@ -174,6 +183,7 @@ jobs:
174183
name: Monthly Maintenance
175184
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
176185
runs-on: ubuntu-latest
186+
needs: get-config
177187
permissions:
178188
contents: write
179189
pull-requests: write
@@ -182,6 +192,9 @@ jobs:
182192
- name: Checkout code
183193
uses: actions/checkout@v5
184194

195+
- name: Install yq
196+
uses: mikefarah/yq@master
197+
185198
- name: Set up Python
186199
uses: actions/setup-python@v5
187200
with:

.github/workflows/docs.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,23 @@ jobs:
2828
name: Get Python Version from Makefile
2929
runs-on: ubuntu-latest
3030
outputs:
31-
python-version: ${{ steps.version.outputs.default-python-version }}
31+
default-python-version: ${{ steps.version.outputs.default-python-version }}
3232
steps:
3333
- name: Checkout code
3434
uses: actions/checkout@v5
3535

36+
- name: Install yq
37+
uses: mikefarah/yq@master
38+
3639
- name: Get default Python version from project config
3740
id: version
3841
run: |
39-
DEFAULT_PYTHON_VERSION=$(yq '.python.default_version' .project.yml)
40-
echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> $GITHUB_OUTPUT
42+
DEFAULT_PYTHON_VERSION=$(make print-DEFAULT_PYTHON_VERSION)
43+
echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> "$GITHUB_OUTPUT"
4144
echo "Using Python version: $DEFAULT_PYTHON_VERSION"
4245
46+
47+
4348
build:
4449
needs: get-config
4550
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)