-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
Here is a devcontainer.json configuration tailored for working with iOS/macOS development and GitHub Copilot. You can add this to your repository to create a standardized development environment using GitHub Codespaces or Visual Studio Code's Dev Containers extension.
🧰 Key Properties for Your Configuration
Here are the main settings I've included for your Xcode/Copilot environment:
· Base Image: Uses mcr.microsoft.com/devcontainers/base:ubuntu. This is a reliable, general-purpose Linux image with common developer tools . It's a good foundation for adding the specific tools you need.
· Features: Installs the GitHub CLI (gh), which is useful for repository management and often required for seamless Copilot authentication and operations from within the terminal .
· VS Code Extensions: Pre-installs the official GitHub Copilot and GitHub Copilot Chat extensions into the container. This means anyone using this environment will have Copilot available immediately.
· Setup Commands:
· postCreateCommand: Automatically installs the Xcode Command Line Tools. This is essential for iOS/macOS development as it includes compilers, Git, and other core tools needed to build projects.
· You can modify this command to also clone a specific repository or run other setup scripts for your project .
📄 devcontainer.json Configuration File
Create a new file at .devcontainer/devcontainer.json in your repository and add the following content:
{
"name": "Xcode Copilot Environment",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {
"version": "latest"
}
},
"customizations": {
"vscode": {
"extensions": [
"GitHub.copilot",
"GitHub.copilot-chat"
]
}
},
"postCreateCommand": "bash -c 'if type xcode-select >/dev/null 2>&1; then echo \"Xcode CLT check passed\"; else echo \"Installing Xcode CLT...\" && xcode-select --install; fi'",
"forwardPorts": [8080],
"remoteUser": "vscode"
}🔧 How to Use This Configuration
- Add to Your Repository: Place the devcontainer.json file inside a .devcontainer folder in the root of your repository and commit the changes .
- Open in a Dev Container:
· In VS Code: Open your project folder, run the command "Dev Containers: Reopen in Container" from the Command Palette (F1) .
· On GitHub: Navigate to your repository and create a new codespace. It will automatically detect and use the configuration from the .devcontainer folder . - Rebuild After Changes: If you edit the devcontainer.json file later, you must rebuild the container for the changes to take effect using the "Dev Containers: Rebuild Container" command .
💡 Ways to Work with This Environment
· GitHub Codespaces: Provides a cloud-based, pre-configured environment accessible from any browser. Ideal for quick starts, reviews, or working from different machines .
· Local Dev Containers: Use the Dev Containers extension in VS Code on your local machine. This leverages Docker to run the container locally, offering a fast, consistent environment that's isolated from your personal setup .
· Customizing Further: You can extend this setup by:
· Adding a Dockerfile in the .devcontainer folder for more complex image customization and referencing it with "build": { "dockerfile": "Dockerfile" } .
· Installing more tools using apt-get commands within a postCreateCommand script .
I hope this configuration provides a great starting point for your team. If you have a specific project structure or need to install additional packages, feel free to share more details.