aws-annoying 0.8.1__tar.gz → 0.8.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.devcontainer/devcontainer.json +1 -2
- aws_annoying-0.8.3/.github/workflows/devcf_ci.yaml +101 -0
- aws_annoying-0.8.3/.github/workflows/devcf_release.yaml +46 -0
- aws_annoying-0.8.1/.github/workflows/ci.yaml → aws_annoying-0.8.3/.github/workflows/main_ci.yaml +12 -17
- aws_annoying-0.8.3/.github/workflows/main_docs.yaml +41 -0
- aws_annoying-0.8.3/.github/workflows/main_prepare-release.yaml +51 -0
- aws_annoying-0.8.1/.github/workflows/release.yaml → aws_annoying-0.8.3/.github/workflows/main_release.yaml +21 -16
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.pre-commit-config.yaml +8 -21
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.vscode/extensions.json +0 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.vscode/settings.json +3 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/Makefile +5 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/PKG-INFO +7 -39
- aws_annoying-0.8.3/README.md +41 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/app.py +1 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/ecs/task_definition_lifecycle.py +15 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/ecs/wait_for_deployment.py +36 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/mfa/configure.py +21 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/session_manager/port_forward.py +8 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/session_manager/start.py +5 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/session_manager/session_manager.py +1 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/variable_loader.py +0 -1
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/console/ecs-exec/ecs-exec.user.js +1 -1
- aws_annoying-0.8.3/devcontainer-features/src/session-manager-plugin/README.md +20 -0
- aws_annoying-0.8.3/devcontainer-features/src/session-manager-plugin/devcontainer-feature.json +6 -0
- aws_annoying-0.8.3/devcontainer-features/src/session-manager-plugin/install.sh +30 -0
- aws_annoying-0.8.3/devcontainer-features/test/_global/scenarios.json +1 -0
- aws_annoying-0.8.3/devcontainer-features/test/session-manager-plugin/scenarios.json +1 -0
- aws_annoying-0.8.3/devcontainer-features/test/session-manager-plugin/test.sh +10 -0
- aws_annoying-0.8.3/docs/cli-references/ecs.md +11 -0
- aws_annoying-0.8.3/docs/cli-references/mfa.md +5 -0
- aws_annoying-0.8.3/docs/cli-references/misc.md +5 -0
- aws_annoying-0.8.3/docs/cli-references/session-manager.md +23 -0
- aws_annoying-0.8.3/docs/index.md +1 -0
- aws_annoying-0.8.3/mkdocs.yaml +38 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/pyproject.toml +13 -13
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/uv.lock +807 -265
- aws_annoying-0.8.1/README.md +0 -73
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.devcontainer/.env.example +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.devcontainer/Dockerfile +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.devcontainer/docker-compose.devcontainer.yaml +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.devcontainer/onCreateCommand.sh +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.devcontainer/postAttachCommand.sh +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.editorconfig +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.gitattributes +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.github/dependabot.yaml +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.gitignore +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.python-version +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/.vscode/launch.json +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/LICENSE +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/ecs/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/ecs/_app.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/load_variables.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/logging_handler.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/main.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/mfa/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/mfa/_app.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/session_manager/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/session_manager/_app.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/session_manager/_common.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/session_manager/install.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/cli/session_manager/stop.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/ecs/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/ecs/check.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/ecs/common.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/ecs/errors.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/ecs/wait_for.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/mfa_config.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/session_manager/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/session_manager/errors.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/session_manager/shortcuts.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/utils/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/utils/debugger.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/utils/downloader.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/utils/ec2.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/utils/platform.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/aws_annoying/utils/timeout.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/console/ecs-exec/README.md +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/console/ecs-exec/ecs-console.png +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/console/ecs-exec/session-manager.png +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/examples/dbeaver/README.md +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/examples/dbeaver/after-disconnect.png +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/examples/dbeaver/before-connect.png +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/examples/dbeaver/new-connection.png +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/examples/dbeaver/test-connection.png +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/_helpers.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/_helpers/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/_helpers/boto3.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/_helpers/command_builder.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/_helpers/invoke.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/_helpers/scripts/printenv.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/_helpers/string_.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/ecs/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/ecs/snapshots/test_task_definition_lifecycle/test_basic/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/ecs/snapshots/test_task_definition_lifecycle/test_delete/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/ecs/snapshots/test_task_definition_lifecycle/test_dry_run/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/ecs/test_task_definition_lifecycle.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/ecs/test_wait_for_deployment.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/mfa/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/mfa/snapshots/test_configure/test_basic/persist/aws_config.ini +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/mfa/snapshots/test_configure/test_basic/persist/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/mfa/snapshots/test_configure/test_basic/skip_persist/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/mfa/snapshots/test_configure/test_dry_run/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/mfa/snapshots/test_configure/test_load_existing_config/aws_config.ini +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/mfa/snapshots/test_configure/test_load_existing_config/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/mfa/test_configure.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/session_manager/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/session_manager/test_install.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/session_manager/test_port_forward.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/session_manager/test_start.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/session_manager/test_stop.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/snapshots/test_load_variables/test_basic/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/snapshots/test_load_variables/test_env_prefix/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/snapshots/test_load_variables/test_nothing/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/snapshots/test_load_variables/test_overwrite_env/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/snapshots/test_load_variables/test_replace_quiet/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/snapshots/test_load_variables/test_resource_not_found/ssm/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/snapshots/test_load_variables/test_unsupported_resource/stdout.txt +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/test_app.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/test_load_variables.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/test_logging_handler.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/cli/test_main.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/conftest.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/ecs/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/ecs/test_check.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/ecs/test_common.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/ecs/test_errors.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/ecs/test_wait_for.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/session_manager/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/session_manager/test_errors.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/session_manager/test_session_manager.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/session_manager/test_shortcuts.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/test_mfa_config.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/test_variable_loader.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/utils/__init__.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/utils/test_downloader.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/utils/test_ec2.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/utils/test_platform.py +0 -0
- {aws_annoying-0.8.1 → aws_annoying-0.8.3}/tests/utils/test_timeout.py +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "lasuillard/aws-annoying",
|
|
2
|
+
"name": "lasuillard-s/aws-annoying",
|
|
3
3
|
"dockerComposeFile": [
|
|
4
4
|
"./docker-compose.devcontainer.yaml"
|
|
5
5
|
],
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
"tamasfe.even-better-toml",
|
|
24
24
|
"streetsidesoftware.code-spell-checker",
|
|
25
25
|
"EditorConfig.EditorConfig",
|
|
26
|
-
"VisualStudioExptTeam.vscodeintellicode",
|
|
27
26
|
"charliermarsh.ruff",
|
|
28
27
|
"ms-python.mypy-type-checker",
|
|
29
28
|
"njpwerner.autodocstring",
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
name: Dev Container Features - CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
tags: [v*]
|
|
7
|
+
paths:
|
|
8
|
+
- devcontainer-features/**
|
|
9
|
+
|
|
10
|
+
pull_request:
|
|
11
|
+
paths:
|
|
12
|
+
- devcontainer-features/**
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
validate:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
timeout-minutes: 5
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v6
|
|
22
|
+
- uses: devcontainers/action@v1
|
|
23
|
+
with:
|
|
24
|
+
validate-only: true
|
|
25
|
+
base-path-to-features: ./devcontainer-features/src
|
|
26
|
+
|
|
27
|
+
test-autogenerated:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
timeout-minutes: 10
|
|
30
|
+
permissions:
|
|
31
|
+
contents: read
|
|
32
|
+
strategy:
|
|
33
|
+
fail-fast: false
|
|
34
|
+
matrix:
|
|
35
|
+
base-image:
|
|
36
|
+
- debian:latest
|
|
37
|
+
features:
|
|
38
|
+
- session-manager-plugin
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v6
|
|
41
|
+
|
|
42
|
+
- name: Install Dev Containers CLI
|
|
43
|
+
run: npm install --global @devcontainers/cli
|
|
44
|
+
|
|
45
|
+
- name: Run autogenerated tests
|
|
46
|
+
run: |
|
|
47
|
+
devcontainer features test \
|
|
48
|
+
--skip-scenarios \
|
|
49
|
+
--features '${{ matrix.features }}' \
|
|
50
|
+
--base-image '${{ matrix.base-image }}' \
|
|
51
|
+
./devcontainer-features
|
|
52
|
+
|
|
53
|
+
test-scenarios:
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
timeout-minutes: 10
|
|
56
|
+
permissions:
|
|
57
|
+
contents: read
|
|
58
|
+
strategy:
|
|
59
|
+
fail-fast: false
|
|
60
|
+
matrix:
|
|
61
|
+
base-image:
|
|
62
|
+
- debian:latest
|
|
63
|
+
features:
|
|
64
|
+
- session-manager-plugin
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@v6
|
|
67
|
+
|
|
68
|
+
- name: Install Dev Containers CLI
|
|
69
|
+
run: npm install --global @devcontainers/cli
|
|
70
|
+
|
|
71
|
+
- name: Run scenario tests
|
|
72
|
+
run: |
|
|
73
|
+
devcontainer features test \
|
|
74
|
+
--skip-autogenerated \
|
|
75
|
+
--skip-duplicated \
|
|
76
|
+
--features '${{ matrix.features }}' \
|
|
77
|
+
--base-image '${{ matrix.base-image }}' \
|
|
78
|
+
./devcontainer-features
|
|
79
|
+
|
|
80
|
+
test-global:
|
|
81
|
+
runs-on: ubuntu-latest
|
|
82
|
+
timeout-minutes: 10
|
|
83
|
+
permissions:
|
|
84
|
+
contents: read
|
|
85
|
+
strategy:
|
|
86
|
+
fail-fast: false
|
|
87
|
+
matrix:
|
|
88
|
+
base-image:
|
|
89
|
+
- debian:latest
|
|
90
|
+
steps:
|
|
91
|
+
- uses: actions/checkout@v6
|
|
92
|
+
|
|
93
|
+
- name: Install Dev Containers CLI
|
|
94
|
+
run: npm install --global @devcontainers/cli
|
|
95
|
+
|
|
96
|
+
- name: Run global tests
|
|
97
|
+
run: |
|
|
98
|
+
devcontainer features test \
|
|
99
|
+
--global-scenarios-only \
|
|
100
|
+
--base-image '${{ matrix.base-image }}' \
|
|
101
|
+
./devcontainer-features
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Dev Container Features - Release & Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
# Every time when push changes to target directory, it will trigger release
|
|
7
|
+
# but the CLI won't overwrite existing published features unless the version is updated
|
|
8
|
+
push:
|
|
9
|
+
branches: [main]
|
|
10
|
+
paths:
|
|
11
|
+
- devcontainer-features/**
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
release:
|
|
15
|
+
if: ${{ (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main') || github.event_name == 'push' }}
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
timeout-minutes: 10
|
|
18
|
+
permissions:
|
|
19
|
+
contents: write
|
|
20
|
+
pull-requests: write
|
|
21
|
+
packages: write
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v6
|
|
24
|
+
- uses: devcontainers/action@v1
|
|
25
|
+
env:
|
|
26
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
27
|
+
with:
|
|
28
|
+
publish-features: true
|
|
29
|
+
base-path-to-features: ./devcontainer-features/src
|
|
30
|
+
generate-docs: true
|
|
31
|
+
|
|
32
|
+
- name: Generate GitHub App token
|
|
33
|
+
uses: actions/create-github-app-token@v2
|
|
34
|
+
id: generate-token
|
|
35
|
+
with:
|
|
36
|
+
app-id: ${{ vars.GH_APP_ID }}
|
|
37
|
+
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
|
38
|
+
|
|
39
|
+
- name: Create PR for generated docs
|
|
40
|
+
uses: peter-evans/create-pull-request@v8.0.0
|
|
41
|
+
with:
|
|
42
|
+
token: ${{ steps.generate-token.outputs.token }}
|
|
43
|
+
sign-commits: true
|
|
44
|
+
title: Automated documentation update
|
|
45
|
+
branch: automated-documentation-update-${{ github.run_id }}
|
|
46
|
+
delete-branch: true
|
aws_annoying-0.8.1/.github/workflows/ci.yaml → aws_annoying-0.8.3/.github/workflows/main_ci.yaml
RENAMED
|
@@ -6,21 +6,18 @@ on:
|
|
|
6
6
|
pull_request:
|
|
7
7
|
branches: [main]
|
|
8
8
|
|
|
9
|
-
permissions: read-all
|
|
10
|
-
|
|
11
9
|
env:
|
|
12
10
|
UV_FROZEN: 1
|
|
13
11
|
|
|
14
12
|
jobs:
|
|
15
13
|
lint:
|
|
16
|
-
name: Lint
|
|
17
14
|
runs-on: ubuntu-latest
|
|
15
|
+
timeout-minutes: 5
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
18
|
steps:
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- name: Set up uv
|
|
23
|
-
uses: astral-sh/setup-uv@v6
|
|
19
|
+
- uses: actions/checkout@v6
|
|
20
|
+
- uses: astral-sh/setup-uv@v7
|
|
24
21
|
with:
|
|
25
22
|
version: latest
|
|
26
23
|
enable-cache: true
|
|
@@ -36,8 +33,9 @@ jobs:
|
|
|
36
33
|
if: always()
|
|
37
34
|
|
|
38
35
|
test:
|
|
39
|
-
name:
|
|
36
|
+
name: test (${{ matrix.os }}, py${{ matrix.python-version }})
|
|
40
37
|
runs-on: ${{ matrix.os }}
|
|
38
|
+
timeout-minutes: 10
|
|
41
39
|
permissions:
|
|
42
40
|
contents: read
|
|
43
41
|
id-token: write
|
|
@@ -48,11 +46,8 @@ jobs:
|
|
|
48
46
|
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
|
|
49
47
|
|
|
50
48
|
steps:
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- name: Set up uv
|
|
55
|
-
uses: astral-sh/setup-uv@v6
|
|
49
|
+
- uses: actions/checkout@v6
|
|
50
|
+
- uses: astral-sh/setup-uv@v7
|
|
56
51
|
with:
|
|
57
52
|
version: latest
|
|
58
53
|
enable-cache: true
|
|
@@ -82,10 +77,10 @@ jobs:
|
|
|
82
77
|
run: |
|
|
83
78
|
Get-Command session-manager-plugin | Out-String -Width 2000
|
|
84
79
|
|
|
85
|
-
$uri = 'https://
|
|
86
|
-
$outFile = 'C:\Windows\Temp\
|
|
80
|
+
$uri = 'https://raw.githubusercontent.com/aws/session-manager-plugin/refs/heads/mainline/Tools/src/update/windows/uninstall.bat'
|
|
81
|
+
$outFile = 'C:\Windows\Temp\uninstall.bat'
|
|
87
82
|
Invoke-WebRequest -Uri "$uri" -OutFile "$outFile"
|
|
88
|
-
& "$outFile"
|
|
83
|
+
& "$outFile"
|
|
89
84
|
|
|
90
85
|
uv run pytest -m 'not docker'
|
|
91
86
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
tags: [v*]
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: docs
|
|
10
|
+
cancel-in-progress: false
|
|
11
|
+
|
|
12
|
+
env:
|
|
13
|
+
UV_FROZEN: 1
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
docs:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
timeout-minutes: 10
|
|
19
|
+
permissions:
|
|
20
|
+
contents: write
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
|
+
with:
|
|
24
|
+
fetch-depth: 0
|
|
25
|
+
|
|
26
|
+
- uses: astral-sh/setup-uv@v7
|
|
27
|
+
with:
|
|
28
|
+
version: latest
|
|
29
|
+
enable-cache: true
|
|
30
|
+
|
|
31
|
+
- name: Install deps
|
|
32
|
+
run: uv sync
|
|
33
|
+
|
|
34
|
+
- name: Configure Git user
|
|
35
|
+
run: |
|
|
36
|
+
git config --local user.email "github-actions[bot]@github.com"
|
|
37
|
+
git config --local user.name "GitHub Action"
|
|
38
|
+
|
|
39
|
+
- name: Build docs
|
|
40
|
+
run: |
|
|
41
|
+
uv run mike deploy --push "${{ github.ref_name }}"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Prepare Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
tag:
|
|
7
|
+
description: Semver-style tag for release (e.g., v1.0.0)
|
|
8
|
+
required: true
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
create-pr:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
timeout-minutes: 5
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
pull-requests: write
|
|
17
|
+
steps:
|
|
18
|
+
- name: Check tag format
|
|
19
|
+
run: |
|
|
20
|
+
if [[ ! "${{ inputs.tag }}" =~ ^v ]]; then
|
|
21
|
+
echo "Tag must start with 'v'"
|
|
22
|
+
exit 1
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
- uses: actions/checkout@v6
|
|
26
|
+
- uses: astral-sh/setup-uv@v7
|
|
27
|
+
with:
|
|
28
|
+
version: latest
|
|
29
|
+
enable-cache: true
|
|
30
|
+
|
|
31
|
+
- name: Set version
|
|
32
|
+
run: |
|
|
33
|
+
tag="${{ inputs.tag }}"
|
|
34
|
+
tag_no_v="${tag#v}"
|
|
35
|
+
uv version "${tag#v}"
|
|
36
|
+
|
|
37
|
+
- name: Generate GitHub App token
|
|
38
|
+
uses: actions/create-github-app-token@v2
|
|
39
|
+
id: generate-token
|
|
40
|
+
with:
|
|
41
|
+
app-id: ${{ vars.GH_APP_ID }}
|
|
42
|
+
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
|
43
|
+
|
|
44
|
+
- name: Create pull request
|
|
45
|
+
uses: peter-evans/create-pull-request@v8.0.0
|
|
46
|
+
with:
|
|
47
|
+
token: ${{ steps.generate-token.outputs.token }}
|
|
48
|
+
sign-commits: true
|
|
49
|
+
title: Release ${{ inputs.tag }}
|
|
50
|
+
branch: release/${{ inputs.tag }}
|
|
51
|
+
delete-branch: true
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
name: Release
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
6
|
|
|
7
7
|
env:
|
|
8
8
|
UV_FROZEN: 1
|
|
9
9
|
|
|
10
10
|
jobs:
|
|
11
11
|
release:
|
|
12
|
-
name: Release
|
|
13
12
|
runs-on: ubuntu-latest
|
|
13
|
+
timeout-minutes: 5
|
|
14
14
|
permissions:
|
|
15
15
|
contents: write
|
|
16
16
|
steps:
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- name: Set up uv
|
|
21
|
-
uses: astral-sh/setup-uv@v6
|
|
17
|
+
- uses: actions/checkout@v6
|
|
18
|
+
- uses: astral-sh/setup-uv@v7
|
|
22
19
|
with:
|
|
23
20
|
version: latest
|
|
24
21
|
enable-cache: true
|
|
@@ -30,31 +27,39 @@ jobs:
|
|
|
30
27
|
run: uv build
|
|
31
28
|
|
|
32
29
|
- name: Create release
|
|
33
|
-
uses: softprops/action-gh-release@v2
|
|
30
|
+
uses: softprops/action-gh-release@v2.5.0
|
|
34
31
|
with:
|
|
32
|
+
tag_name: ${{ github.event.release.tag_name }}
|
|
35
33
|
generate_release_notes: true
|
|
36
34
|
files: dist/*
|
|
37
35
|
|
|
36
|
+
- name: Show files
|
|
37
|
+
run: ls -l --all --recursive dist
|
|
38
|
+
|
|
38
39
|
- name: Upload release distributions
|
|
39
|
-
uses: actions/upload-artifact@
|
|
40
|
+
uses: actions/upload-artifact@v6
|
|
40
41
|
with:
|
|
41
42
|
name: release-dists
|
|
42
43
|
path: dist/
|
|
43
44
|
|
|
44
45
|
publish-pypi:
|
|
45
|
-
|
|
46
|
+
needs: release
|
|
46
47
|
runs-on: ubuntu-latest
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
environment: pypi
|
|
49
|
+
timeout-minutes: 5
|
|
49
50
|
permissions:
|
|
50
51
|
id-token: write
|
|
51
|
-
environment: pypi
|
|
52
52
|
steps:
|
|
53
|
-
- name:
|
|
54
|
-
uses: actions/download-artifact@
|
|
53
|
+
- name: Download release distributions
|
|
54
|
+
uses: actions/download-artifact@v7
|
|
55
55
|
with:
|
|
56
56
|
name: release-dists
|
|
57
57
|
path: dist/
|
|
58
58
|
|
|
59
|
+
- name: Show artifacts
|
|
60
|
+
run: ls -l --all --recursive dist
|
|
61
|
+
|
|
59
62
|
- name: Publish release distributions to PyPI
|
|
60
63
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
64
|
+
with:
|
|
65
|
+
skip-existing: true
|
|
@@ -8,30 +8,17 @@ repos:
|
|
|
8
8
|
- id: trailing-whitespace
|
|
9
9
|
- id: end-of-file-fixer
|
|
10
10
|
|
|
11
|
-
- repo: https://github.com/lasuillard/
|
|
12
|
-
rev: v0.
|
|
11
|
+
- repo: https://github.com/lasuillard-s/devobs
|
|
12
|
+
rev: v0.2.1
|
|
13
13
|
hooks:
|
|
14
|
-
- id:
|
|
14
|
+
- id: check-file-pair
|
|
15
15
|
args:
|
|
16
|
-
- --
|
|
17
|
-
-
|
|
16
|
+
- --from=pulumi_extra
|
|
17
|
+
- --to=tests
|
|
18
|
+
- --include=*.py
|
|
19
|
+
- --exclude=utils/debugger.py,_*.py
|
|
20
|
+
- --expect={to}/{relative_from}/test_{filename}
|
|
18
21
|
- --create-if-not-exists
|
|
19
|
-
- --extend-exclude
|
|
20
|
-
- utils/debugger.py
|
|
21
|
-
- --extend-exclude
|
|
22
|
-
- "**/_*.py"
|
|
23
|
-
- id: test-matching-source
|
|
24
|
-
args:
|
|
25
|
-
- --target
|
|
26
|
-
- aws_annoying
|
|
27
|
-
- --extend-exclude
|
|
28
|
-
- "**/conftest.py"
|
|
29
|
-
- --extend-exclude
|
|
30
|
-
- "**/_*/**/*.py"
|
|
31
|
-
- --extend-exclude
|
|
32
|
-
- "**/_*.py"
|
|
33
|
-
- id: preferred-suffix
|
|
34
|
-
args: [--rename]
|
|
35
22
|
|
|
36
23
|
- repo: local
|
|
37
24
|
hooks:
|
|
@@ -28,6 +28,11 @@ update: ## Update deps and tools
|
|
|
28
28
|
pre-commit autoupdate
|
|
29
29
|
.PHONY: update
|
|
30
30
|
|
|
31
|
+
serve-docs: ## Serve documentation with live reload
|
|
32
|
+
uv run mkdocs serve \
|
|
33
|
+
--dev-addr "$$([ -n "$${CONTAINER:-}" ] && echo '0.0.0.0:8000' || echo '127.0.0.1:8000')"
|
|
34
|
+
.PHONY: serve-docs
|
|
35
|
+
|
|
31
36
|
|
|
32
37
|
# =============================================================================
|
|
33
38
|
# CI
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aws-annoying
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.3
|
|
4
4
|
Summary: Utils to handle some annoying AWS tasks.
|
|
5
|
-
Project-URL: Homepage, https://github.com/lasuillard/aws-annoying
|
|
6
|
-
Project-URL: Repository, https://github.com/lasuillard/aws-annoying.git
|
|
7
|
-
Project-URL: Issues, https://github.com/lasuillard/aws-annoying/issues
|
|
5
|
+
Project-URL: Homepage, https://github.com/lasuillard-s/aws-annoying
|
|
6
|
+
Project-URL: Repository, https://github.com/lasuillard-s/aws-annoying.git
|
|
7
|
+
Project-URL: Issues, https://github.com/lasuillard-s/aws-annoying/issues
|
|
8
8
|
Author-email: Yuchan Lee <lasuillard@gmail.com>
|
|
9
9
|
License-Expression: MIT
|
|
10
10
|
License-File: LICENSE
|
|
@@ -19,8 +19,7 @@ Description-Content-Type: text/markdown
|
|
|
19
19
|
# aws-annoying
|
|
20
20
|
|
|
21
21
|
[](https://opensource.org/licenses/MIT)
|
|
22
|
-
[](https://codecov.io/gh/lasuillard/aws-annoying)
|
|
22
|
+
[](https://codecov.io/gh/lasuillard-s/aws-annoying)
|
|
24
23
|
[](https://pypi.org/project/aws-annoying/)
|
|
25
24
|
|
|
26
25
|
Utils to handle some annoying AWS tasks.
|
|
@@ -34,6 +33,7 @@ Major directories of the project:
|
|
|
34
33
|
- **aws_annoying** Python package containing CLI and utility functions.
|
|
35
34
|
- **console** Utilities to help working with AWS Console.
|
|
36
35
|
- **examples** Examples of how to use the package.
|
|
36
|
+
- **devcontainer-features** Devcontainer features to help set up development environment.
|
|
37
37
|
|
|
38
38
|
## 🚀 Installation
|
|
39
39
|
|
|
@@ -52,39 +52,7 @@ As the package also provides some utility functions, you can install `aws-annoyi
|
|
|
52
52
|
|
|
53
53
|
## 💡 Usage
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
### `ecs task-definition-lifecycle`
|
|
58
|
-
|
|
59
|
-
Expire and delete ECS task definitions based on criteria.
|
|
60
|
-
|
|
61
|
-
### `ecs wait-for-deployment`
|
|
62
|
-
|
|
63
|
-
Wait for ECS deployment to start, complete or fail, and stabilize.
|
|
64
|
-
|
|
65
|
-
### `load-variables`
|
|
66
|
-
|
|
67
|
-
Wrapper command to run command with variables from various AWS resources (SSM Parameter Store, Secrets Manager, etc.) injected as environment variables.
|
|
68
|
-
|
|
69
|
-
### `mfa configure`
|
|
70
|
-
|
|
71
|
-
Configure AWS profile or refresh session for MFA.
|
|
72
|
-
|
|
73
|
-
### `session-manager install`
|
|
74
|
-
|
|
75
|
-
Install AWS Session Manager plugin.
|
|
76
|
-
|
|
77
|
-
### `session-manager port-forward`
|
|
78
|
-
|
|
79
|
-
Start a port forwarding session using AWS Session Manager.
|
|
80
|
-
|
|
81
|
-
### `session-manager start`
|
|
82
|
-
|
|
83
|
-
Start new session via Session Manager.
|
|
84
|
-
|
|
85
|
-
### `session-manager stop`
|
|
86
|
-
|
|
87
|
-
Stop running port forwarding session for PID file.
|
|
55
|
+
Refer to the CLI help or documentation for detailed information on how to use each command.
|
|
88
56
|
|
|
89
57
|
## 💖 Contributing
|
|
90
58
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# aws-annoying
|
|
2
|
+
|
|
3
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](https://codecov.io/gh/lasuillard-s/aws-annoying)
|
|
5
|
+
[](https://pypi.org/project/aws-annoying/)
|
|
6
|
+
|
|
7
|
+
Utils to handle some annoying AWS tasks.
|
|
8
|
+
|
|
9
|
+
## ❓ About
|
|
10
|
+
|
|
11
|
+
This project aims to provide a set of utilities and examples to help with some annoying tasks when working with AWS.
|
|
12
|
+
|
|
13
|
+
Major directories of the project:
|
|
14
|
+
|
|
15
|
+
- **aws_annoying** Python package containing CLI and utility functions.
|
|
16
|
+
- **console** Utilities to help working with AWS Console.
|
|
17
|
+
- **examples** Examples of how to use the package.
|
|
18
|
+
- **devcontainer-features** Devcontainer features to help set up development environment.
|
|
19
|
+
|
|
20
|
+
## 🚀 Installation
|
|
21
|
+
|
|
22
|
+
It is recommended to use [pipx](https://pipx.pypa.io/stable/) to install `aws-annoying` CLI:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
$ pipx install aws-annoying
|
|
26
|
+
$ aws-annoying --help
|
|
27
|
+
|
|
28
|
+
Usage: aws-annoying [OPTIONS] COMMAND [ARGS]...
|
|
29
|
+
|
|
30
|
+
...
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
As the package also provides some utility functions, you can install `aws-annoying` via pip, if you are going to use those utils.
|
|
34
|
+
|
|
35
|
+
## 💡 Usage
|
|
36
|
+
|
|
37
|
+
Refer to the CLI help or documentation for detailed information on how to use each command.
|
|
38
|
+
|
|
39
|
+
## 💖 Contributing
|
|
40
|
+
|
|
41
|
+
Any feedback, suggestions or contributions are welcome! Feel free to open an issue or a pull request.
|
|
@@ -38,7 +38,21 @@ def task_definition_lifecycle(
|
|
|
38
38
|
help="Delete the task definition after deregistering it.",
|
|
39
39
|
),
|
|
40
40
|
) -> None:
|
|
41
|
-
"""
|
|
41
|
+
r"""Expire and delete ECS task definitions.
|
|
42
|
+
|
|
43
|
+
Expire and delete ECS task definitions for a given family, keeping revisions adhering to
|
|
44
|
+
the given constraint. You can use this command to clean up old task definitions that are no
|
|
45
|
+
longer needed.
|
|
46
|
+
|
|
47
|
+
Example usage:
|
|
48
|
+
|
|
49
|
+
```shell
|
|
50
|
+
aws-annoying ecs task-definition-lifecycle \
|
|
51
|
+
--family <task-definition-family> \
|
|
52
|
+
--keep-latest 5 \
|
|
53
|
+
--delete
|
|
54
|
+
```
|
|
55
|
+
"""
|
|
42
56
|
dry_run = ctx.meta["dry_run"]
|
|
43
57
|
ecs = boto3.client("ecs")
|
|
44
58
|
|
|
@@ -69,7 +69,42 @@ def wait_for_deployment( # noqa: PLR0913
|
|
|
69
69
|
help="Whether to wait for the service to be stable after the deployment.",
|
|
70
70
|
),
|
|
71
71
|
) -> None:
|
|
72
|
-
"""Wait for ECS deployment to complete.
|
|
72
|
+
r"""Wait for ECS deployment for a specific service to start, complete and stabilize.
|
|
73
|
+
|
|
74
|
+
It's designed to be used after triggering a deployment (e.g., updating service, deploying new task definition),
|
|
75
|
+
in conjunction with CI/CD pipelines or deployment scripts.
|
|
76
|
+
|
|
77
|
+
Below is an example of using this command in GitHub Actions workflow:
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
...
|
|
81
|
+
|
|
82
|
+
- name: Deploy to ECS service
|
|
83
|
+
id: deploy-ecs
|
|
84
|
+
uses: aws-actions/amazon-ecs-deploy-task-definition@v2
|
|
85
|
+
with:
|
|
86
|
+
task-definition: ${{ steps.render-task-definition.outputs.task-definition }}
|
|
87
|
+
cluster: ${{ vars.AWS_ECS_CLUSTER }}
|
|
88
|
+
service: ${{ vars.AWS_ECS_SERVICE }}
|
|
89
|
+
wait-for-service-stability: false
|
|
90
|
+
|
|
91
|
+
- name: Wait for deployment complete
|
|
92
|
+
run: |
|
|
93
|
+
pipx run aws-annoying \
|
|
94
|
+
--verbose \
|
|
95
|
+
ecs wait-for-deployment \
|
|
96
|
+
--cluster '${{ vars.AWS_ECS_CLUSTER }}' \
|
|
97
|
+
--service '${{ vars.AWS_ECS_SERVICE }}' \
|
|
98
|
+
--wait-for-start \
|
|
99
|
+
--wait-for-stability \
|
|
100
|
+
--timeout-seconds 600 \
|
|
101
|
+
--expected-task-definition '${{ steps.deploy-ecs.outputs.task-definition-arn }}'
|
|
102
|
+
|
|
103
|
+
...
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
`--wait-for-start` is necessary because there could be no deployment right after the deploy action.
|
|
107
|
+
"""
|
|
73
108
|
start = datetime.now(tz=timezone.utc)
|
|
74
109
|
try:
|
|
75
110
|
with Timeout(timeout_seconds):
|