Merge pull request #143 from tfenster/main
Support devcontainer (local and GH Codespaces)
This commit is contained in:
commit
b8b9b16998
6 changed files with 125 additions and 0 deletions
38
.devcontainer/Dockerfile
Normal file
38
.devcontainer/Dockerfile
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Update the NODE_VERSION arg in docker-compose.yml to pick a Node version: 10, 12, 14
|
||||||
|
ARG NODE_VERSION=14
|
||||||
|
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${NODE_VERSION}
|
||||||
|
|
||||||
|
# VARIANT can be either 'hugo' for the standard version or 'hugo_extended' for the extended version.
|
||||||
|
ARG VARIANT=hugo
|
||||||
|
# VERSION can be either 'latest' or a specific version number
|
||||||
|
ARG VERSION=latest
|
||||||
|
|
||||||
|
# Download Hugo
|
||||||
|
RUN apt-get update && apt-get install -y ca-certificates openssl git curl && \
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
case ${VERSION} in \
|
||||||
|
latest) \
|
||||||
|
export VERSION=$(curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') ;;\
|
||||||
|
esac && \
|
||||||
|
echo ${VERSION} && \
|
||||||
|
case $(uname -m) in \
|
||||||
|
aarch64) \
|
||||||
|
export ARCH=ARM64 ;; \
|
||||||
|
*) \
|
||||||
|
export ARCH=64bit ;; \
|
||||||
|
esac && \
|
||||||
|
echo ${ARCH} && \
|
||||||
|
wget -O ${VERSION}.tar.gz https://github.com/gohugoio/hugo/releases/download/v${VERSION}/${VARIANT}_${VERSION}_Linux-${ARCH}.tar.gz && \
|
||||||
|
tar xf ${VERSION}.tar.gz && \
|
||||||
|
mv hugo /usr/bin/hugo
|
||||||
|
|
||||||
|
# Hugo dev server port
|
||||||
|
EXPOSE 1313
|
||||||
|
|
||||||
|
# [Optional] Uncomment this section to install additional OS packages you may want.
|
||||||
|
#
|
||||||
|
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||||
|
# && apt-get -y install --no-install-recommends <your-package-list-here>
|
||||||
|
|
||||||
|
# [Optional] Uncomment if you want to install more global node packages
|
||||||
|
# RUN sudo -u node npm install -g <your-package-list-here>
|
||||||
41
.devcontainer/devcontainer.json
Normal file
41
.devcontainer/devcontainer.json
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
||||||
|
// https://github.com/microsoft/vscode-dev-containers/tree/v0.217.4/containers/hugo
|
||||||
|
{
|
||||||
|
"name": "Hugo (Community)",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "Dockerfile",
|
||||||
|
"args": {
|
||||||
|
// Update VARIANT to pick hugo variant.
|
||||||
|
// Example variants: hugo, hugo_extended
|
||||||
|
// Rebuild the container if it already exists to update.
|
||||||
|
"VARIANT": "hugo_extended",
|
||||||
|
// Update VERSION to pick a specific hugo version.
|
||||||
|
// Example versions: latest, 0.73.0, 0,71.1
|
||||||
|
// Rebuild the container if it already exists to update.
|
||||||
|
"VERSION": "latest",
|
||||||
|
// Update NODE_VERSION to pick the Node.js version: 12, 14
|
||||||
|
"NODE_VERSION": "14",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Set *default* container specific settings.json values on container create.
|
||||||
|
"settings": {
|
||||||
|
"html.format.templating": true,
|
||||||
|
},
|
||||||
|
// Add the IDs of extensions you want installed when the container is created.
|
||||||
|
"extensions": [
|
||||||
|
"bungcip.better-toml",
|
||||||
|
"davidanson.vscode-markdownlint",
|
||||||
|
"GitHub.vscode-pull-request-github"
|
||||||
|
],
|
||||||
|
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||||
|
"forwardPorts": [
|
||||||
|
1313
|
||||||
|
],
|
||||||
|
// Use 'postCreateCommand' to run commands after the container is created.
|
||||||
|
"postCreateCommand": "git submodule update --init --recursive --depth 1 && npm i",
|
||||||
|
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||||
|
"remoteUser": "node",
|
||||||
|
"features": {
|
||||||
|
"git": "os-provided"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
.vscode/tasks.json
vendored
Normal file
11
.vscode/tasks.json
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "Start local Hugo server",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "hugo serve",
|
||||||
|
"problemMatcher": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
35
content/docs/Contributing/InstallHugo/TheShortcut/index.md
Normal file
35
content/docs/Contributing/InstallHugo/TheShortcut/index.md
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
Title: Devcontainer with VS Code
|
||||||
|
---
|
||||||
|
|
||||||
|
## Use a local devcontainer
|
||||||
|
|
||||||
|
If you don't want any local setup (apart from Docker Desktop), but still run your own Hugo instance, you can make use of the preconfigured devcontainer. If you want to learn more about the concept, visit [https://code.visualstudio.com/docs/remote/containers](https://code.visualstudio.com/docs/remote/containers). To use it, you need to take the following steps:
|
||||||
|
|
||||||
|
1. Start [Docker Desktop](https://www.docker.com/products/docker-desktop) and [switch to Linux containers](https://docs.docker.com/desktop/windows/#switch-between-windows-and-linux-containers) by right-clicking on the Docker logo in the system tray and selecting "Switch to Linux containers...". If you only see "Switch to Windows containers...", then you are already switched to Linux containers. If anything goes wrong, check if you are on the latest version of Docker Desktop and have [the WSL2 integration enabled](https://docs.docker.com/desktop/windows/wsl/#install). If you have all that in place and it still doesn't work, check the extended installation documentation [here](https://code.visualstudio.com/docs/remote/containers#_installation)
|
||||||
|
{{% alert title="Consequences of switching" color="info" %}}
|
||||||
|
When switching to Linux, you will probably see a warning that tells you that you "will not be able to manage the Windows containers until you switch back to Windows containers". That means that the Docker Desktop management GUI can only show either the Windows containers or the Linux containers and if you switch to Linux, you consequently won't see the Windows containers until you switch back. But the Windows containers will continue to run, you won't loose data and you can keep using them e.g. for Business Central development, you just can't manage them through the Docker Desktop GUI
|
||||||
|
{{% /alert %}}
|
||||||
|
2. Install the [Remote development extension pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) in Visual Studio Code
|
||||||
|
3. Run the action "Remote containers: Clone Repository in Container Volume" and select the fork you created. If you haven't done that before, go through the [docs](https://alguidelines.dev/docs/contributing/forkandpr/#step-1-fork).
|
||||||
|
4. Wait for a bit. When you do this for the first time, it can take a couple of minutes. Next time it will be faster...
|
||||||
|
5. After a while, you will have VS Code with the cloned repository and the terminal should show something like "Done. Press any key to close the terminal."
|
||||||
|
6. Run the action "Tasks: Run task" and select "Start local Hugo Server" from the list. If you don't see that entry, you might have to reload your VS Code window and try again
|
||||||
|
7. After Hugo has generated the site, you will get a notification that offers you to "Open a browser". Click on that and you will see your local instance of the AL guidelines! Again, on the first try it will be a bit slow and sluggish, but the second one should be fast.
|
||||||
|
8. Now you can make changes and just save them. If you open the terminal, you will see a message that tells you that a change was detected and the site was rebuilt. After that, the change should automatically appear in your browser
|
||||||
|
|
||||||
|
Here is a walkthrough of the full process:
|
||||||
|
|
||||||
|
<video width=100% controls>
|
||||||
|
<source src="alguidelines walkthrough.mp4" type="video/mp4">
|
||||||
|
Your browser does not support the video tag.
|
||||||
|
</video>
|
||||||
|
|
||||||
|
## Use GitHub Codespaces
|
||||||
|
|
||||||
|
What is also great about this, is that you can also use [GitHub Codespaces](https://github.com/features/codespaces) with that setup. In that case, steps 1-5 become two clicks... Here is another full walkthrough:
|
||||||
|
|
||||||
|
<video width=100% controls>
|
||||||
|
<source src="alguidelines codespace.mp4" type="video/mp4">
|
||||||
|
Your browser does not support the video tag.
|
||||||
|
</video>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue