mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-07-20 03:31:26 +08:00
Fix devcontainer build failure (#12837)
* add post-installation script * set zsh as default terminal and make post-install execution on postcreate * rename file * rename script * Create devcontainers_ci.yml * Update devcontainer.json * Update devcontainers_ci.yml Never push image built here. It's for build testing purpose only. * postCreateCommand update to reflect that the shell script has been renamed. * update devcontainer readme file * trigger workflow only on devcontainer/** changes * prettier refactor
This commit is contained in:
@ -3,6 +3,5 @@ ARG VARIANT=3.13-bookworm
|
||||
FROM mcr.microsoft.com/vscode/devcontainers/python:${VARIANT}
|
||||
COPY requirements.txt /tmp/pip-tmp/
|
||||
RUN python3 -m pip install --upgrade pip \
|
||||
&& python3 -m pip install --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \
|
||||
&& pipx install pre-commit ruff \
|
||||
&& pre-commit install
|
||||
&& python3 -m pip install --no-cache-dir -r /tmp/pip-tmp/requirements.txt \
|
||||
&& pipx install pre-commit ruff
|
||||
|
@ -1 +1,42 @@
|
||||
https://code.visualstudio.com/docs/devcontainers/tutorial
|
||||
# Development Container
|
||||
|
||||
This is **Devcontainer** configuration to provide a consistent development environment for all contributors.
|
||||
|
||||
## Features
|
||||
|
||||
- [x] Pre-configured **Python environment**
|
||||
- [x] Automatic installation of **pre-commit hooks**
|
||||
- [x] **Ruff** linter ready to check your code
|
||||
- [x] **Oh My Zsh** with plugins:
|
||||
- `zsh-autosuggestions`
|
||||
- `zsh-syntax-highlighting`
|
||||
|
||||
## Usage
|
||||
|
||||
1. Install [**Docker** ](https://www.docker.com/get-started/) and [**Visual Studio Code**](https://code.visualstudio.com/)
|
||||
2. Install the **Remote - Containers** extension in VS Code
|
||||
|
||||
- Do `CTRL+P`, paste this command and press `Enter`
|
||||
|
||||
```shell
|
||||
ext install ms-vscode-remote.remote-containers
|
||||
```
|
||||
3. Open this repository in VS Code
|
||||
4. When prompted, click **"Reopen in Container"**
|
||||
5. Wait for the environment to build and initialize
|
||||
|
||||
After setup:
|
||||
|
||||
- `pre-commit` hooks are installed
|
||||
- `ruff` and other tools are available
|
||||
- The shell uses Zsh by default
|
||||
|
||||
## Tips
|
||||
|
||||
To manually run checks on all files:
|
||||
|
||||
```bash
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
> For further information here's [Microsoft tutorial about devcontainers.](https://code.visualstudio.com/docs/devcontainers/tutorial)
|
||||
|
@ -7,10 +7,12 @@
|
||||
// Update 'VARIANT' to pick a Python version: 3, 3.11, 3.10, 3.9, 3.8
|
||||
// Append -bullseye or -buster to pin to an OS version.
|
||||
// Use -bullseye variants on local on arm64/Apple Silicon.
|
||||
"VARIANT": "3.13-bookworm",
|
||||
"VARIANT": "3.13-bookworm"
|
||||
}
|
||||
},
|
||||
|
||||
"postCreateCommand": "zsh .devcontainer/post_install",
|
||||
|
||||
// Configure tool-specific properties.
|
||||
"customizations": {
|
||||
// Configure properties specific to VS Code.
|
||||
@ -20,7 +22,8 @@
|
||||
"python.defaultInterpreterPath": "/usr/local/bin/python",
|
||||
"python.linting.enabled": true,
|
||||
"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
|
||||
"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy"
|
||||
"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy",
|
||||
"terminal.integrated.defaultProfile.linux": "zsh"
|
||||
},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
|
29
.devcontainer/post_install
Executable file
29
.devcontainer/post_install
Executable file
@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo "Begin post-installation steps..."
|
||||
|
||||
set -e
|
||||
|
||||
echo "Installing pre-commit hooks..."
|
||||
pre-commit install
|
||||
|
||||
echo "Installing Oh My Zsh plugins..."
|
||||
|
||||
# Install zsh-autosuggestions if not present
|
||||
if [ ! -d "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" ]; then
|
||||
echo "Cloning zsh-autosuggestions..."
|
||||
git clone https://github.com/zsh-users/zsh-autosuggestions \
|
||||
"${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions"
|
||||
fi
|
||||
|
||||
# Install zsh-syntax-highlighting if not present
|
||||
if [ ! -d "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting" ]; then
|
||||
echo "Cloning zsh-syntax-highlighting..."
|
||||
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
|
||||
"${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting"
|
||||
fi
|
||||
|
||||
echo "Configuring plugins in ~/.zshrc..."
|
||||
sed -i '/^plugins=/c\plugins=(git zsh-autosuggestions zsh-syntax-highlighting)' ~/.zshrc
|
||||
|
||||
echo "Post-installation steps completed successfully. Enjoy!"
|
19
.github/workflows/devcontainer_ci.yml
vendored
Normal file
19
.github/workflows/devcontainer_ci.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
name: Test DevContainer Build
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- ".devcontainer/**"
|
||||
pull_request:
|
||||
paths:
|
||||
- ".devcontainer/**"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: devcontainers/ci@v0.3
|
||||
with:
|
||||
push: never
|
||||
runCmd: "true"
|
Reference in New Issue
Block a user