Add dev container (#1822)

* starting

* Add post create script

* Fixing up scripts

* Clean up dockerfile
This commit is contained in:
Teo Voinea
2022-04-22 09:06:35 -04:00
committed by GitHub
parent 20bd3c3a49
commit 350d07b7af
5 changed files with 90 additions and 15 deletions

View File

@ -16,23 +16,10 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && apt-get install -
# Install packages required for build:
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends \
libunwind-dev clang build-essential libssl-dev pkg-config lldb \
python3-minimal \
dotnet-sdk-6.0
libunwind-dev clang build-essential libssl-dev pkg-config lldb
### Setup Rust for 'vscode' user:
USER vscode
# Install Rust:
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain 1.60 -y
ENV PATH="/home/vscode/.cargo/bin:${PATH}"
# Install Rust components:
RUN rustup component add rls rust-analysis rust-src rustfmt clippy
# Install required cargo commands:
RUN cargo install cargo-audit cargo-license sccache
USER root
### Done setting up Rust.

View File

@ -26,11 +26,20 @@
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "find -iname '*.csproj' -exec dotnet restore '{}' \\;",
"postCreateCommand": "chmod u+x .devcontainer/post-create-script.sh; ./.devcontainer/post-create-script.sh",
// - ensure all nuget packages are present
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode",
// Note: available features are listed in: https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/container-features/src/devcontainer-features.json
"features": {
"azure-cli": "latest",
"python": "3.8",
"dotnet": {
"version": "latest"
},
"rust": {
"version": "latest",
"profile": "default"
}
}
}

View File

@ -0,0 +1,55 @@
#!/bin/bash
# Install Azure Functions Core Tools 4
# Source: https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=v4%2Clinux%2Ccsharp%2Cportal%2Cbash
echo "Installing Azure Functions Core Tools 4 ..."
cd /tmp
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get update
sudo apt-get install azure-functions-core-tools-4
# Install azcopy
echo "Installing azcopy ..."
cd /tmp
wget https://aka.ms/downloadazcopy-v10-linux
tar -xvf downloadazcopy-v10-linux
sudo cp ./azcopy_linux_amd64_*/azcopy /usr/bin/
# Restore rust dependencies
echo "Restoring rust dependencies"
cd /workspaces/onefuzz/src/agent
cargo fetch
# Restore dotnet dependencies
echo "Restore dotnet dependencies"
cd /workspaces/onefuzz/src/ApiService
dotnet restore
sudo apt-get install direnv
echo "Setting up venv"
cd /workspaces/onefuzz/src
python -m venv venv
. ./venv/bin/activate
echo "Installing pytypes"
cd /workspaces/onefuzz/src/pytypes
echo "layout python3" >> .envrc
direnv allow
pip install -e .
echo "Installing cli"
cd /workspaces/onefuzz/src/cli
echo "layout python3" >> .envrc
direnv allow
pip install -e .
echo "Install api-service"
cd /workspaces/onefuzz/src/api-service
echo "layout python3" >> .envrc
direnv allow
pip install -r requirements-dev.txt
cd __app__
pip install -r requirements.txt

View File

@ -0,0 +1,23 @@
{
"folders": [
{
"path": ".."
},
{
"path": "../src/agent"
},
{
"path": "../src/api-service"
},
{
"path": "../src/ApiService"
},
{
"path": "../src/cli"
},
{
"path": "../src/pytypes"
}
],
"settings": {}
}

1
.gitignore vendored
View File

@ -4,6 +4,7 @@
.idea
**/.direnv
**/.envrc
**/venv
# vim
*.swp