From 77a93fb1303cbc264de83b45d775016f25247f12 Mon Sep 17 00:00:00 2001 From: yy Date: Tue, 23 Sep 2025 17:49:23 +0800 Subject: [PATCH] fix acr image name and python entrypoint --- .../actions/generate-image-names/action.yml | 3 +- .../workflows/build-framework-runtimes.yml | 8 ++--- .github/workflows/build-language-runtimes.yml | 8 ++--- .github/workflows/build-os-runtimes.yml | 8 ++--- .gitignore | 1 - .../4.2.16/project/.vscode/setting.json | 14 +++++++++ .../flask/3.0.3/project/.vscode/setting.json | 14 +++++++++ .../python/3.10/project/.vscode/setting.json | 14 +++++++++ .../python/3.10/project/entrypoint.sh | 30 +++++++++++++++++-- .../python/3.11/project/.vscode/setting.json | 14 +++++++++ .../python/3.11/project/entrypoint.sh | 30 +++++++++++++++++-- .../python/3.12/project/.vscode/setting.json | 14 +++++++++ .../python/3.12/project/entrypoint.sh | 30 +++++++++++++++++-- 13 files changed, 168 insertions(+), 20 deletions(-) create mode 100644 runtimes/frameworks/django/4.2.16/project/.vscode/setting.json create mode 100644 runtimes/frameworks/flask/3.0.3/project/.vscode/setting.json create mode 100644 runtimes/languages/python/3.10/project/.vscode/setting.json create mode 100644 runtimes/languages/python/3.11/project/.vscode/setting.json create mode 100644 runtimes/languages/python/3.12/project/.vscode/setting.json diff --git a/.github/actions/generate-image-names/action.yml b/.github/actions/generate-image-names/action.yml index f51729ba..762a3a1c 100644 --- a/.github/actions/generate-image-names/action.yml +++ b/.github/actions/generate-image-names/action.yml @@ -59,7 +59,8 @@ runs: if [ "$aliyun_credentials" != "{}" ] && [ "$aliyun_credentials" != "" ] && [ "$aliyun_credentials" != "null" ]; then # Parse Aliyun credentials registry=$(echo "$aliyun_credentials" | jq -r '.registry') - acr_image_name="${registry}/${{ fromJson(inputs.aliyun_credentials).username }}/devbox/${image_name}:${tag}" + namespace=$(echo "$aliyun_credentials" | jq -r '.namespace') + acr_image_name="${registry}/${namespace}/devbox/${image_name}:${tag}" else acr_image_name="" fi diff --git a/.github/workflows/build-framework-runtimes.yml b/.github/workflows/build-framework-runtimes.yml index a49ab7e6..bbbcac48 100644 --- a/.github/workflows/build-framework-runtimes.yml +++ b/.github/workflows/build-framework-runtimes.yml @@ -114,7 +114,7 @@ jobs: dockerfile: ${{ matrix.framework_packages.dockerfile }} tag: ${{ needs.define-matrix.outputs.tag }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} - name: Build and push standard images (standard) uses: ./.github/actions/build-and-push with: @@ -122,7 +122,7 @@ jobs: build_base_image: ${{ matrix.framework_packages.base_image }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} ghcr_image_name: ${{ steps.generate-standard.outputs.ghcr_image_name }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} acr_image_name: ${{ steps.generate-standard.outputs.acr_image_name }} - name: Generate image names (cn-patched) id: generate-cn @@ -132,7 +132,7 @@ jobs: dockerfile: ${{ matrix.framework_packages.dockerfile }} tag: ${{ needs.define-matrix.outputs.tag_cn }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} - name: Build and push cn-patched images (cn-patched) if: ${{ needs.define-matrix.outputs.cn_patch_enabled == 'true' }} uses: ./.github/actions/build-and-push @@ -141,6 +141,6 @@ jobs: build_base_image: ${{ matrix.framework_packages.base_image_with_cn_patch }} build_args: CN_PATCH_ENABLED=true ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} ghcr_image_name: ${{ steps.generate-cn.outputs.ghcr_image_name }} acr_image_name: ${{ steps.generate-cn.outputs.acr_image_name }} diff --git a/.github/workflows/build-language-runtimes.yml b/.github/workflows/build-language-runtimes.yml index eaf860ab..00e84a33 100644 --- a/.github/workflows/build-language-runtimes.yml +++ b/.github/workflows/build-language-runtimes.yml @@ -113,14 +113,14 @@ jobs: dockerfile: ${{ matrix.language_packages }} tag: ${{ needs.define-matrix.outputs.tag }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} - name: Build and push standard images (standard) uses: ./.github/actions/build-and-push with: dockerfile: ${{ matrix.language_packages }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} ghcr_image_name: ${{ steps.generate-standard.outputs.ghcr_image_name }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} acr_image_name: ${{ steps.generate-standard.outputs.acr_image_name }} build_base_image: ${{ needs.define-matrix.outputs.build_base_image }} - name: Generate image names (cn-patched) @@ -131,7 +131,7 @@ jobs: dockerfile: ${{ matrix.language_packages }} tag: ${{ needs.define-matrix.outputs.tag_cn }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} - name: Build and push cn-patched images (cn-patched) if: ${{ needs.define-matrix.outputs.cn_patch_enabled == 'true' }} uses: ./.github/actions/build-and-push @@ -140,6 +140,6 @@ jobs: build_args: CN_PATCH_ENABLED=true build_base_image: ${{ needs.define-matrix.outputs.build_base_image_with_cn_patch }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} ghcr_image_name: ${{ steps.generate-cn.outputs.ghcr_image_name }} acr_image_name: ${{ steps.generate-cn.outputs.acr_image_name }} diff --git a/.github/workflows/build-os-runtimes.yml b/.github/workflows/build-os-runtimes.yml index 4a419557..582158b2 100644 --- a/.github/workflows/build-os-runtimes.yml +++ b/.github/workflows/build-os-runtimes.yml @@ -85,14 +85,14 @@ jobs: dockerfile: ${{ matrix.os_packages }} tag: ${{ needs.define-matrix.outputs.tag }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} - name: Build and push standard images uses: ./.github/actions/build-and-push with: dockerfile: ${{ matrix.os_packages }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} ghcr_image_name: ${{ steps.generate-standard.outputs.ghcr_image_name }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} acr_image_name: ${{ steps.generate-standard.outputs.acr_image_name }} - name: Generate image names (cn-patched) id: generate-cn @@ -102,7 +102,7 @@ jobs: dockerfile: ${{ matrix.os_packages }} tag: ${{ needs.define-matrix.outputs.tag_cn }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} - name: Build and push cn-patched images if: ${{ needs.define-matrix.outputs.cn_patch_enabled == 'true' }} uses: ./.github/actions/build-and-push @@ -112,4 +112,4 @@ jobs: ghcr_image_name: ${{ steps.generate-cn.outputs.ghcr_image_name }} ghcr_credentials: ${{ format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', 'ghcr.io', github.repository_owner, secrets.GITHUB_TOKEN) || '{}' }} acr_image_name: ${{ steps.generate-cn.outputs.acr_image_name }} - aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD) || '{}' }} + aliyun_credentials: ${{ inputs.aliyun_enabled == 'true' && format('{{"registry":"{0}","username":"{1}","password":"{2}", "namespace":"{3}"}}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, secrets.ALIYUN_PASSWORD, secrets.ALIYUN_NAMESPACE) || '{}' }} diff --git a/.gitignore b/.gitignore index b0c51be1..0e4ac317 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ bin *.log # IDE 文件 -.vscode/ .idea/ *.swp *.swo diff --git a/runtimes/frameworks/django/4.2.16/project/.vscode/setting.json b/runtimes/frameworks/django/4.2.16/project/.vscode/setting.json new file mode 100644 index 00000000..6aed7800 --- /dev/null +++ b/runtimes/frameworks/django/4.2.16/project/.vscode/setting.json @@ -0,0 +1,14 @@ +{ + "python.defaultInterpreterPath": "./venv/bin/python", + "python.terminal.activateEnvironment": true, + "terminal.integrated.env.linux": { + "VIRTUAL_ENV": "${workspaceFolder}/venv" + }, + "terminal.integrated.profiles.linux": { + "Python Venv": { + "path": "/bin/bash", + "args": ["-c", "source ${workspaceFolder}/bin/activate && exec bash"] + } + }, + "terminal.integrated.defaultProfile.linux": "Python Venv" +} diff --git a/runtimes/frameworks/flask/3.0.3/project/.vscode/setting.json b/runtimes/frameworks/flask/3.0.3/project/.vscode/setting.json new file mode 100644 index 00000000..6aed7800 --- /dev/null +++ b/runtimes/frameworks/flask/3.0.3/project/.vscode/setting.json @@ -0,0 +1,14 @@ +{ + "python.defaultInterpreterPath": "./venv/bin/python", + "python.terminal.activateEnvironment": true, + "terminal.integrated.env.linux": { + "VIRTUAL_ENV": "${workspaceFolder}/venv" + }, + "terminal.integrated.profiles.linux": { + "Python Venv": { + "path": "/bin/bash", + "args": ["-c", "source ${workspaceFolder}/bin/activate && exec bash"] + } + }, + "terminal.integrated.defaultProfile.linux": "Python Venv" +} diff --git a/runtimes/languages/python/3.10/project/.vscode/setting.json b/runtimes/languages/python/3.10/project/.vscode/setting.json new file mode 100644 index 00000000..6aed7800 --- /dev/null +++ b/runtimes/languages/python/3.10/project/.vscode/setting.json @@ -0,0 +1,14 @@ +{ + "python.defaultInterpreterPath": "./venv/bin/python", + "python.terminal.activateEnvironment": true, + "terminal.integrated.env.linux": { + "VIRTUAL_ENV": "${workspaceFolder}/venv" + }, + "terminal.integrated.profiles.linux": { + "Python Venv": { + "path": "/bin/bash", + "args": ["-c", "source ${workspaceFolder}/bin/activate && exec bash"] + } + }, + "terminal.integrated.defaultProfile.linux": "Python Venv" +} diff --git a/runtimes/languages/python/3.10/project/entrypoint.sh b/runtimes/languages/python/3.10/project/entrypoint.sh index 24edb3e5..0b24e284 100755 --- a/runtimes/languages/python/3.10/project/entrypoint.sh +++ b/runtimes/languages/python/3.10/project/entrypoint.sh @@ -1,3 +1,29 @@ #!/bin/bash -. bin/activate -python3 hello.py \ No newline at end of file + +app_env=${1:-development} + +# Prefer activating Python virtual environment if present +if [ -f "bin/activate" ]; then + . bin/activate +fi + +# Development environment commands +dev_commands() { + echo "Running development environment commands..." + python3 hello.py +} + +# Production environment commands +prod_commands() { + echo "Running production environment commands..." + python3 hello.py +} + +# Decide environment based on argument +if [ "$app_env" = "production" ] || [ "$app_env" = "prod" ] ; then + echo "Production environment detected" + prod_commands +else + echo "Development environment detected" + dev_commands +fi diff --git a/runtimes/languages/python/3.11/project/.vscode/setting.json b/runtimes/languages/python/3.11/project/.vscode/setting.json new file mode 100644 index 00000000..6aed7800 --- /dev/null +++ b/runtimes/languages/python/3.11/project/.vscode/setting.json @@ -0,0 +1,14 @@ +{ + "python.defaultInterpreterPath": "./venv/bin/python", + "python.terminal.activateEnvironment": true, + "terminal.integrated.env.linux": { + "VIRTUAL_ENV": "${workspaceFolder}/venv" + }, + "terminal.integrated.profiles.linux": { + "Python Venv": { + "path": "/bin/bash", + "args": ["-c", "source ${workspaceFolder}/bin/activate && exec bash"] + } + }, + "terminal.integrated.defaultProfile.linux": "Python Venv" +} diff --git a/runtimes/languages/python/3.11/project/entrypoint.sh b/runtimes/languages/python/3.11/project/entrypoint.sh index 24edb3e5..0b24e284 100755 --- a/runtimes/languages/python/3.11/project/entrypoint.sh +++ b/runtimes/languages/python/3.11/project/entrypoint.sh @@ -1,3 +1,29 @@ #!/bin/bash -. bin/activate -python3 hello.py \ No newline at end of file + +app_env=${1:-development} + +# Prefer activating Python virtual environment if present +if [ -f "bin/activate" ]; then + . bin/activate +fi + +# Development environment commands +dev_commands() { + echo "Running development environment commands..." + python3 hello.py +} + +# Production environment commands +prod_commands() { + echo "Running production environment commands..." + python3 hello.py +} + +# Decide environment based on argument +if [ "$app_env" = "production" ] || [ "$app_env" = "prod" ] ; then + echo "Production environment detected" + prod_commands +else + echo "Development environment detected" + dev_commands +fi diff --git a/runtimes/languages/python/3.12/project/.vscode/setting.json b/runtimes/languages/python/3.12/project/.vscode/setting.json new file mode 100644 index 00000000..6aed7800 --- /dev/null +++ b/runtimes/languages/python/3.12/project/.vscode/setting.json @@ -0,0 +1,14 @@ +{ + "python.defaultInterpreterPath": "./venv/bin/python", + "python.terminal.activateEnvironment": true, + "terminal.integrated.env.linux": { + "VIRTUAL_ENV": "${workspaceFolder}/venv" + }, + "terminal.integrated.profiles.linux": { + "Python Venv": { + "path": "/bin/bash", + "args": ["-c", "source ${workspaceFolder}/bin/activate && exec bash"] + } + }, + "terminal.integrated.defaultProfile.linux": "Python Venv" +} diff --git a/runtimes/languages/python/3.12/project/entrypoint.sh b/runtimes/languages/python/3.12/project/entrypoint.sh index 24edb3e5..0b24e284 100755 --- a/runtimes/languages/python/3.12/project/entrypoint.sh +++ b/runtimes/languages/python/3.12/project/entrypoint.sh @@ -1,3 +1,29 @@ #!/bin/bash -. bin/activate -python3 hello.py \ No newline at end of file + +app_env=${1:-development} + +# Prefer activating Python virtual environment if present +if [ -f "bin/activate" ]; then + . bin/activate +fi + +# Development environment commands +dev_commands() { + echo "Running development environment commands..." + python3 hello.py +} + +# Production environment commands +prod_commands() { + echo "Running production environment commands..." + python3 hello.py +} + +# Decide environment based on argument +if [ "$app_env" = "production" ] || [ "$app_env" = "prod" ] ; then + echo "Production environment detected" + prod_commands +else + echo "Development environment detected" + dev_commands +fi