summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Spicer <josh@joshspicer.com>2023-05-21 20:59:53 -0700
committerJelle Raaijmakers <jelle@gmta.nl>2023-05-24 19:27:59 +0200
commit7026174458ab15e2ac2d1c01c1cd24ed0e05b5d2 (patch)
treecc984921e099c6dfbdbbab8f432683e9a6b2f68e
parent202b24584f3555eabc2d61c82350b2e3c5e3d07f (diff)
downloadserenity-7026174458ab15e2ac2d1c01c1cd24ed0e05b5d2.zip
Meta: Prebuild repo dev container
This commit adds a GitHub Workflow to prebuild the dev container file present at .devcontainer/devcontainer.json. This prebuilt image is pushed to GitHub Container Registry (ghcr). An additional devcontainer.json is added consuming that image. This dev container can be selected in editors that process dev containers (ie GitHub Codespaces), to speed up time to editor.
-rw-r--r--.devcontainer/devcontainer.json4
-rw-r--r--.devcontainer/features/serenity/devcontainer-feature.json (renamed from .devcontainer/serenity/devcontainer-feature.json)0
-rwxr-xr-x.devcontainer/features/serenity/install.sh (renamed from .devcontainer/serenity/install.sh)0
-rw-r--r--.devcontainer/optimized/.devcontainer.json11
-rw-r--r--.github/workflows/dev-container.yml39
5 files changed, 52 insertions, 2 deletions
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index aa74ed3272..0594109ed0 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,12 +1,12 @@
{
- "name": "Ubuntu",
+ "name": "SerenityOS",
"image": "mcr.microsoft.com/devcontainers/base:jammy",
// Features to add to the dev container. More info: https://containers.dev/implementors/features.
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers-contrib/features/pre-commit:1": {},
- "./serenity": {
+ "./features/serenity": {
"llvm_version": 15,
"enable_ladybird": true,
"enable_serenity": true
diff --git a/.devcontainer/serenity/devcontainer-feature.json b/.devcontainer/features/serenity/devcontainer-feature.json
index b338474813..b338474813 100644
--- a/.devcontainer/serenity/devcontainer-feature.json
+++ b/.devcontainer/features/serenity/devcontainer-feature.json
diff --git a/.devcontainer/serenity/install.sh b/.devcontainer/features/serenity/install.sh
index 6039ac849d..6039ac849d 100755
--- a/.devcontainer/serenity/install.sh
+++ b/.devcontainer/features/serenity/install.sh
diff --git a/.devcontainer/optimized/.devcontainer.json b/.devcontainer/optimized/.devcontainer.json
new file mode 100644
index 0000000000..c7c9c44a19
--- /dev/null
+++ b/.devcontainer/optimized/.devcontainer.json
@@ -0,0 +1,11 @@
+// The docker image used below was generated from '.devcontainer/devcontainer.json'
+// by the '.github/workflows/dev-container.yml' workflow.
+//
+// By building this dev container image in advance, tools
+// like GitHub Codespaces (https://containers.dev/supporting)
+// do not need to install all the prerequsite dependencies from scratch,
+// getting you into your development environment faster!
+{
+ "name": "SerenityOS (Pre-Built Image)",
+ "image": "ghcr.io/SerenityOS/serenity-devcontainer:base"
+}
diff --git a/.github/workflows/dev-container.yml b/.github/workflows/dev-container.yml
new file mode 100644
index 0000000000..be3947750b
--- /dev/null
+++ b/.github/workflows/dev-container.yml
@@ -0,0 +1,39 @@
+# This workflow builds a docker image with the Dev Container CLI (https://github.com/devcontainers/cli)
+#
+name: 'Build Dev Container Image'
+on:
+ workflow_dispatch:
+ push:
+ paths:
+ - '.devcontainer/**'
+ schedule:
+ # https://crontab.guru/#0_0_*_*_1
+ - cron: '0 0 * * 1'
+
+
+permissions:
+ contents: read
+ # Push images to GHCR.
+ packages: write
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Login to GitHub Container Registry
+ uses: docker/login-action@v2
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build Base Dev Container Image
+ uses: devcontainers/ci@v0.3
+ with:
+ imageName: ghcr.io/${{ github.repository_owner }}/serenity-devcontainer
+ imageTag: base,latest
+ push: always