From fad603f6dd00c234be287ab43918f3f79aa2af03 Mon Sep 17 00:00:00 2001 From: Airscript Date: Sun, 25 Dec 2022 23:50:03 +0100 Subject: [PATCH 01/33] chore(assets): add keep files --- assets/.gitkeep | 0 assets/css/.gitkeep | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/.gitkeep create mode 100644 assets/css/.gitkeep diff --git a/assets/.gitkeep b/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/css/.gitkeep b/assets/css/.gitkeep new file mode 100644 index 0000000..e69de29 From 215ffbb3f2044436eff7183335e20c25dd62c985 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 00:05:25 +0100 Subject: [PATCH 02/33] change(docker): change email linked to label command --- .docker/dockerfiles/blog.Dockerfile | 2 +- .docker/dockerfiles/ci.Dockerfile | 2 +- .docker/dockerfiles/tests.Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.docker/dockerfiles/blog.Dockerfile b/.docker/dockerfiles/blog.Dockerfile index 81898eb..1874f88 100644 --- a/.docker/dockerfiles/blog.Dockerfile +++ b/.docker/dockerfiles/blog.Dockerfile @@ -13,7 +13,7 @@ FROM alpine:3.17 AS builder make git-submodules environment=${BLOG_BUILD_ENVIRONMENT} FROM alpine:3.17 AS runner - LABEL maintainer="Airscript " + LABEL maintainer="Airscript " ENV BLOG_PORT=25001 ENV BLOG_INTERFACE=0.0.0.0 WORKDIR /home diff --git a/.docker/dockerfiles/ci.Dockerfile b/.docker/dockerfiles/ci.Dockerfile index 334dc9c..a128157 100644 --- a/.docker/dockerfiles/ci.Dockerfile +++ b/.docker/dockerfiles/ci.Dockerfile @@ -1,5 +1,5 @@ FROM alpine:3.17 AS runner - LABEL maintainer="Airscript " + LABEL maintainer="Airscript " WORKDIR /tmp COPY tmp/ /tmp/ diff --git a/.docker/dockerfiles/tests.Dockerfile b/.docker/dockerfiles/tests.Dockerfile index e9979e4..292ad9f 100644 --- a/.docker/dockerfiles/tests.Dockerfile +++ b/.docker/dockerfiles/tests.Dockerfile @@ -1,5 +1,5 @@ FROM alpine:3.17 AS runner - LABEL maintainer="Airscript " + LABEL maintainer="Airscript " WORKDIR /tmp COPY tmp/ /tmp/ From 606749a7b74f8e985fef268a07832d8ecbb13f76 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 01:15:26 +0100 Subject: [PATCH 03/33] feat(scripts): add g++ install script --- scripts/install/g++.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100755 scripts/install/g++.sh diff --git a/scripts/install/g++.sh b/scripts/install/g++.sh new file mode 100755 index 0000000..c4f3b73 --- /dev/null +++ b/scripts/install/g++.sh @@ -0,0 +1,3 @@ +#!/bin/bash +apk add g++ && \ +echo "g++ installed successfully." From 16d2cb42fdc7a04ae0ad9cc99ef9c5d50370ae42 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 01:16:24 +0100 Subject: [PATCH 04/33] feat(scripts): add python3 install script --- scripts/install/python3.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100755 scripts/install/python3.sh diff --git a/scripts/install/python3.sh b/scripts/install/python3.sh new file mode 100755 index 0000000..f80584c --- /dev/null +++ b/scripts/install/python3.sh @@ -0,0 +1,3 @@ +#!/bin/bash +apk add python3 && \ +echo "python3 installed successfully." \ No newline at end of file From 2b6b317c83f742fc68c2fe227b8b187d87c7d29c Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 01:17:27 +0100 Subject: [PATCH 05/33] fea(makefile): add install-python3 rule --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index 6ba23f0..4a415f8 100644 --- a/Makefile +++ b/Makefile @@ -116,6 +116,10 @@ install-circleci-cli: install-netlify-cli: bash ./scripts/install/netlify-cli.sh +.PHONY: install-python3 +install-python3: + bash ./scripts/install/python3.sh + .PHONY: ci-verify ci-verify: bash ./scripts/ci/verify.sh $(environment) From 833ccfccce32d33f10167313f805a88e257712f6 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 01:18:21 +0100 Subject: [PATCH 06/33] feat(makefile): add install-g++ rule --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index 4a415f8..137df98 100644 --- a/Makefile +++ b/Makefile @@ -120,6 +120,10 @@ install-netlify-cli: install-python3: bash ./scripts/install/python3.sh +.PHONY: install-g++ +install-g++: + bash ./scripts/install/g++.sh + .PHONY: ci-verify ci-verify: bash ./scripts/ci/verify.sh $(environment) From b7f656f8eca9e94f88c183f75edf295355e91166 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 01:21:27 +0100 Subject: [PATCH 07/33] feat(scripts): add devcontainers-cli install script --- scripts/install/devcontainers-cli.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100755 scripts/install/devcontainers-cli.sh diff --git a/scripts/install/devcontainers-cli.sh b/scripts/install/devcontainers-cli.sh new file mode 100755 index 0000000..74477f2 --- /dev/null +++ b/scripts/install/devcontainers-cli.sh @@ -0,0 +1,3 @@ +#!/bin/bash +npm install -g @devcontainers-cli && \ +echo "Devcontainers CLI installed successfully." \ No newline at end of file From 1c6a344eb1a493936d91852411c94884226e81ba Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 01:21:41 +0100 Subject: [PATCH 08/33] feat(makefile): add install-devcontainers-cli rule --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index 137df98..39c266b 100644 --- a/Makefile +++ b/Makefile @@ -124,6 +124,10 @@ install-python3: install-g++: bash ./scripts/install/g++.sh +.PHONY: install-devcontainers-cli +install-g++: + bash ./scripts/install/devcontainers-cli.sh + .PHONY: ci-verify ci-verify: bash ./scripts/ci/verify.sh $(environment) From e98ca7c16963de134e3139730f5bda3db72e9bd4 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 01:40:20 +0100 Subject: [PATCH 09/33] fix(scripts): change wrong repository name in devcontainers-cli script --- scripts/install/devcontainers-cli.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install/devcontainers-cli.sh b/scripts/install/devcontainers-cli.sh index 74477f2..c4bba80 100755 --- a/scripts/install/devcontainers-cli.sh +++ b/scripts/install/devcontainers-cli.sh @@ -1,3 +1,3 @@ #!/bin/bash -npm install -g @devcontainers-cli && \ +npm install -g @devcontainers/cli && \ echo "Devcontainers CLI installed successfully." \ No newline at end of file From 0ced8c7a8342a17eb91a53b5055735275d4158d0 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 01:40:33 +0100 Subject: [PATCH 10/33] fix(makefile): change wrong rule name for devcontainers-cli --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 39c266b..813d226 100644 --- a/Makefile +++ b/Makefile @@ -125,7 +125,7 @@ install-g++: bash ./scripts/install/g++.sh .PHONY: install-devcontainers-cli -install-g++: +install-devcontainers-cli: bash ./scripts/install/devcontainers-cli.sh .PHONY: ci-verify From 247741ef5a95efc42aafed4be4ece83fa23f245a Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 02:19:36 +0100 Subject: [PATCH 11/33] feat(scripts): add verify environment script --- .devcontainer/devcontainer.json | 4 ++-- scripts/environment/verify.sh | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100755 scripts/environment/verify.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4c41447..5f1522b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,7 +1,7 @@ { - "image": "docker:20.10.22-dind-alpine3.17", - "name": "airscript-blog-environment", "overrideCommand": false, + "name": "airscript-blog-environment", + "image": "docker:20.10.22-dind-alpine3.17", "postCreateCommand": "sh scripts/environment/setup.sh", "forwardPorts": [ diff --git a/scripts/environment/verify.sh b/scripts/environment/verify.sh new file mode 100755 index 0000000..52db5e8 --- /dev/null +++ b/scripts/environment/verify.sh @@ -0,0 +1,2 @@ +#!/bin/bash +devcontainer build .devcontainer/devcontainer.json --workspace-folder . \ No newline at end of file From 2927cd17c04f17a977784b05815365bdc9a430d3 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 02:20:17 +0100 Subject: [PATCH 12/33] feat(githooks): add devcontainers verify pre-commit hook --- .githooks/pre-commit | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.githooks/pre-commit b/.githooks/pre-commit index b799d55..d0eef6f 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -3,6 +3,7 @@ PREFIX="pre-commit:" STAGED_FILES=$(git diff --diff-filter=d --cached --name-only) CI_FILES=$(echo "$STAGED_FILES" | grep .circleci) TESTS_FILES=$(echo "$STAGED_FILES" | grep tests) +DEVCONTAINERS_FILES=$(echo "$STAGED_FILES" | grep .devcontainer) if [ ${#CI_FILES} -gt 0 ]; then if ! make all-ci; then @@ -18,4 +19,11 @@ if [ ${#TESTS_FILES} -gt 0 ]; then fi fi +if [ ${#DEVCONTAINERS_FILES} -gt 0 ]; then + if ! docker exec devcontainer /bin/bash ./scripts/environment/verify.sh; then + echo "$PREFIX Error during devcontainers validation." + exit 1 + fi +fi + echo "$PREFIX Run successfully." From c411f95b0c1cf28007552277a5cd0af1c874b6d1 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 02:21:31 +0100 Subject: [PATCH 13/33] feat(docker): add devcontainer environment dockerfile --- .../dockerfiles/devcontainer/environment.Dockerfile | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .docker/dockerfiles/devcontainer/environment.Dockerfile diff --git a/.docker/dockerfiles/devcontainer/environment.Dockerfile b/.docker/dockerfiles/devcontainer/environment.Dockerfile new file mode 100644 index 0000000..b8f8a3a --- /dev/null +++ b/.docker/dockerfiles/devcontainer/environment.Dockerfile @@ -0,0 +1,13 @@ +FROM docker:20.10.22-dind-alpine3.17 AS runner + LABEL maintainer="Airscript " + WORKDIR /home + COPY . . + + RUN \ + sh scripts/update.sh && \ + sh scripts/install/bash.sh && \ + bash scripts/install/make.sh && \ + make install-npm && \ + make install-python3 && \ + make install-g++ && \ + make install-devcontainers-cli \ No newline at end of file From 5de41d8f62edf97ea7a3855b77f57d8817d9d428 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 02:44:19 +0100 Subject: [PATCH 14/33] change(docker): change devcontainer environment dockerfile workdir from home to tmp --- .docker/dockerfiles/devcontainer/environment.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.docker/dockerfiles/devcontainer/environment.Dockerfile b/.docker/dockerfiles/devcontainer/environment.Dockerfile index b8f8a3a..8089018 100644 --- a/.docker/dockerfiles/devcontainer/environment.Dockerfile +++ b/.docker/dockerfiles/devcontainer/environment.Dockerfile @@ -1,7 +1,7 @@ FROM docker:20.10.22-dind-alpine3.17 AS runner LABEL maintainer="Airscript " - WORKDIR /home - COPY . . + WORKDIR /tmp + COPY tmp/ /tmp/ RUN \ sh scripts/update.sh && \ From 1dfea4219e53a986b2f7f825b36f689bd8d5cdf4 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 02:44:45 +0100 Subject: [PATCH 15/33] change(scripts): change devcontainer environment config path in verify script --- scripts/environment/verify.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/environment/verify.sh b/scripts/environment/verify.sh index 52db5e8..d57ae0e 100755 --- a/scripts/environment/verify.sh +++ b/scripts/environment/verify.sh @@ -1,2 +1,2 @@ #!/bin/bash -devcontainer build .devcontainer/devcontainer.json --workspace-folder . \ No newline at end of file +devcontainer build .devcontainer/environment/devcontainer.json --workspace-folder . \ No newline at end of file From 7a968a0b4373ef23af9b3308824c1ce2fb707dea Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 16:11:01 +0100 Subject: [PATCH 16/33] refactor(devcontainers): group devcontainer files into template folders --- .devcontainers/.gitkeep | 0 .../environment/.devcontainer}/devcontainer.json | 1 + .devcontainers/environment/.gitkeep | 0 3 files changed, 1 insertion(+) create mode 100644 .devcontainers/.gitkeep rename {.devcontainer => .devcontainers/environment/.devcontainer}/devcontainer.json (99%) create mode 100644 .devcontainers/environment/.gitkeep diff --git a/.devcontainers/.gitkeep b/.devcontainers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.devcontainer/devcontainer.json b/.devcontainers/environment/.devcontainer/devcontainer.json similarity index 99% rename from .devcontainer/devcontainer.json rename to .devcontainers/environment/.devcontainer/devcontainer.json index 5f1522b..4019224 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainers/environment/.devcontainer/devcontainer.json @@ -1,5 +1,6 @@ { "overrideCommand": false, + "name": "airscript-blog-environment", "image": "docker:20.10.22-dind-alpine3.17", "postCreateCommand": "sh scripts/environment/setup.sh", diff --git a/.devcontainers/environment/.gitkeep b/.devcontainers/environment/.gitkeep new file mode 100644 index 0000000..e69de29 From 14fe45c71e4b6896b3a64c7641b89662a4aed4ee Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 16:16:11 +0100 Subject: [PATCH 17/33] fix(docker): switch from tmp to home default folder in environment dockerfile --- .docker/dockerfiles/devcontainer/environment.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.docker/dockerfiles/devcontainer/environment.Dockerfile b/.docker/dockerfiles/devcontainer/environment.Dockerfile index 8089018..8ee24bb 100644 --- a/.docker/dockerfiles/devcontainer/environment.Dockerfile +++ b/.docker/dockerfiles/devcontainer/environment.Dockerfile @@ -1,7 +1,7 @@ FROM docker:20.10.22-dind-alpine3.17 AS runner LABEL maintainer="Airscript " - WORKDIR /tmp - COPY tmp/ /tmp/ + WORKDIR /home + COPY tmp/ /home/ RUN \ sh scripts/update.sh && \ From dbdd70c5398e8fd0aaa23459f97deec763319aea Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 16:17:23 +0100 Subject: [PATCH 18/33] refactor(githooks): switch plain command with make rule invocation --- .githooks/pre-commit | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.githooks/pre-commit b/.githooks/pre-commit index d0eef6f..8e5e2e1 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -3,7 +3,7 @@ PREFIX="pre-commit:" STAGED_FILES=$(git diff --diff-filter=d --cached --name-only) CI_FILES=$(echo "$STAGED_FILES" | grep .circleci) TESTS_FILES=$(echo "$STAGED_FILES" | grep tests) -DEVCONTAINERS_FILES=$(echo "$STAGED_FILES" | grep .devcontainer) +DEVCONTAINER_FILES=$(echo "$STAGED_FILES" | grep .devcontainer) if [ ${#CI_FILES} -gt 0 ]; then if ! make all-ci; then @@ -19,9 +19,9 @@ if [ ${#TESTS_FILES} -gt 0 ]; then fi fi -if [ ${#DEVCONTAINERS_FILES} -gt 0 ]; then - if ! docker exec devcontainer /bin/bash ./scripts/environment/verify.sh; then - echo "$PREFIX Error during devcontainers validation." +if [ ${#DEVCONTAINER_FILES} -gt 0 ]; then + if ! make all-devcontainers; then + echo "$PREFIX Error during devcontainer validation." exit 1 fi fi From ba50ae288d5274a98ba109035fcb2fc0823322e1 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 16:17:46 +0100 Subject: [PATCH 19/33] fix(scripts): fix incorrect path into environment verify script --- scripts/environment/verify.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/environment/verify.sh b/scripts/environment/verify.sh index d57ae0e..52b295c 100755 --- a/scripts/environment/verify.sh +++ b/scripts/environment/verify.sh @@ -1,2 +1,2 @@ #!/bin/bash -devcontainer build .devcontainer/environment/devcontainer.json --workspace-folder . \ No newline at end of file +devcontainer build --workspace-folder .devcontainers/environment \ No newline at end of file From 83f526bcd0789f596120b6e16ba37a97b14c22b7 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 16:18:03 +0100 Subject: [PATCH 20/33] feat(makefile): add devcontainers rules --- Makefile | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 813d226..5285c72 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,10 @@ CI_IMAGE_NAME = airscript/ci:base TESTS_IMAGE_NAME = airscript/tests:base BLOG_IMAGE_NAME = airscript/blog:compose +ENVIRONMENT_DEVCONTAINER_NAME = devcontainer +DIND_ENVIRONMENT_IMAGE_NAME = docker:20.10.22-dind-alpine3.17 +ENVIRONMENT_DEVCONTAINER_IMAGE_NAME = airscript/devcontainer:environment + .SUFFIXES: .SUFFIXES: .sh @@ -76,8 +80,33 @@ run-ci: docker run --rm $(CI_IMAGE_NAME) && \ docker rmi $(CI_IMAGE_NAME) -.PHONY: clean-devcontainer -clean-devcontainer: +.PHONY: all-devcontainers +all-devcontainers: build-devcontainers run-devcontainers + +.PHONY: build-devcontainers +build-devcontainers: + mkdir -p tmp && \ + cp -r .devcontainers scripts Makefile tmp && \ + docker build -f .docker/dockerfiles/devcontainer/environment.Dockerfile -t $(ENVIRONMENT_DEVCONTAINER_IMAGE_NAME) .; \ + rm -rf tmp + +.PHONY: run-devcontainers +run-devcontainers: + docker run \ + --rm \ + --name $(ENVIRONMENT_DEVCONTAINER_NAME) \ + -v /var/run/docker.sock:/var/run/docker.sock \ + $(ENVIRONMENT_DEVCONTAINER_IMAGE_NAME) /bin/bash ./scripts/environment/verify.sh; + + make clean-devcontainers + +.PHONY: clean-devcontainers +clean-devcontainers: + docker rmi $(ENVIRONMENT_DEVCONTAINER_IMAGE_NAME) + docker rmi $(DIND_ENVIRONMENT_IMAGE_NAME) + +.PHONY: clean-environment-devcontainer +clean-environment-devcontainer: sh ./scripts/environment/teardown.sh .PHONY: install-bash From cf50d72dc5e8194f4e0d45213953959247a6df3d Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 16:38:52 +0100 Subject: [PATCH 21/33] revert(devcontainers): rollback folder structure to mono config file --- .../.devcontainer => .devcontainer}/devcontainer.json | 1 - .devcontainers/.gitkeep | 0 .devcontainers/environment/.gitkeep | 0 3 files changed, 1 deletion(-) rename {.devcontainers/environment/.devcontainer => .devcontainer}/devcontainer.json (99%) delete mode 100644 .devcontainers/.gitkeep delete mode 100644 .devcontainers/environment/.gitkeep diff --git a/.devcontainers/environment/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json similarity index 99% rename from .devcontainers/environment/.devcontainer/devcontainer.json rename to .devcontainer/devcontainer.json index 4019224..5f1522b 100644 --- a/.devcontainers/environment/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,5 @@ { "overrideCommand": false, - "name": "airscript-blog-environment", "image": "docker:20.10.22-dind-alpine3.17", "postCreateCommand": "sh scripts/environment/setup.sh", diff --git a/.devcontainers/.gitkeep b/.devcontainers/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/.devcontainers/environment/.gitkeep b/.devcontainers/environment/.gitkeep deleted file mode 100644 index e69de29..0000000 From e7299f0733a63cae55fa5cf926e745647389dc6a Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 17:44:26 +0100 Subject: [PATCH 22/33] change(devcontainer): rename base image --- .devcontainer/devcontainer.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5f1522b..4a87012 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,8 +1,8 @@ { "overrideCommand": false, - "name": "airscript-blog-environment", + "name": "airscript-devcontainer", "image": "docker:20.10.22-dind-alpine3.17", - "postCreateCommand": "sh scripts/environment/setup.sh", + "postCreateCommand": "sh scripts/devcontainer/setup.sh", "forwardPorts": [ 25001 @@ -11,7 +11,7 @@ "runArgs": [ "--init", "--privileged", - "--name", "airscript-blog-environment" + "--name", "airscript-devcontainer" ], "extensions": [ From 79028a974af87d703a64c59578e93b1e7cfdafa8 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 17:47:18 +0100 Subject: [PATCH 23/33] refactor(docker): rename environment dockerfile to devcontainer dockerfile --- .../environment.Dockerfile => devcontainer.Dockerfile} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .docker/dockerfiles/{devcontainer/environment.Dockerfile => devcontainer.Dockerfile} (100%) diff --git a/.docker/dockerfiles/devcontainer/environment.Dockerfile b/.docker/dockerfiles/devcontainer.Dockerfile similarity index 100% rename from .docker/dockerfiles/devcontainer/environment.Dockerfile rename to .docker/dockerfiles/devcontainer.Dockerfile From 3ab5e9237b895f03626616b609a68518bf15dbbd Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 17:48:29 +0100 Subject: [PATCH 24/33] refactor(scripts): rename environment folder to devcontainer --- scripts/{environment => devcontainer}/safeness.sh | 0 scripts/{environment => devcontainer}/setup.sh | 2 +- scripts/devcontainer/teardown.sh | 7 +++++++ scripts/devcontainer/verify.sh | 2 ++ scripts/environment/teardown.sh | 7 ------- scripts/environment/verify.sh | 2 -- 6 files changed, 10 insertions(+), 10 deletions(-) rename scripts/{environment => devcontainer}/safeness.sh (100%) rename scripts/{environment => devcontainer}/setup.sh (77%) create mode 100755 scripts/devcontainer/teardown.sh create mode 100755 scripts/devcontainer/verify.sh delete mode 100755 scripts/environment/teardown.sh delete mode 100755 scripts/environment/verify.sh diff --git a/scripts/environment/safeness.sh b/scripts/devcontainer/safeness.sh similarity index 100% rename from scripts/environment/safeness.sh rename to scripts/devcontainer/safeness.sh diff --git a/scripts/environment/setup.sh b/scripts/devcontainer/setup.sh similarity index 77% rename from scripts/environment/setup.sh rename to scripts/devcontainer/setup.sh index 2102cd5..5d3bedd 100755 --- a/scripts/environment/setup.sh +++ b/scripts/devcontainer/setup.sh @@ -5,4 +5,4 @@ sh scripts/install/bash.sh && \ bash scripts/install/git.sh && \ bash scripts/install/make.sh && \ -bash scripts/environment/safeness.sh \ No newline at end of file +bash scripts/devcontainer/safeness.sh \ No newline at end of file diff --git a/scripts/devcontainer/teardown.sh b/scripts/devcontainer/teardown.sh new file mode 100755 index 0000000..6e34e7a --- /dev/null +++ b/scripts/devcontainer/teardown.sh @@ -0,0 +1,7 @@ +#!/bin/sh +DEVCONTAINER_NAME="airscript-devcontainer" +DIND_IMAGE_NAME="docker:20.10.22-dind-alpine3.17" + +docker stop $DEVCONTAINER_NAME +docker rm $DEVCONTAINER_NAME +docker rmi $DIND_IMAGE_NAME \ No newline at end of file diff --git a/scripts/devcontainer/verify.sh b/scripts/devcontainer/verify.sh new file mode 100755 index 0000000..151d411 --- /dev/null +++ b/scripts/devcontainer/verify.sh @@ -0,0 +1,2 @@ +#!/bin/bash +devcontainer build --workspace-folder . --image-name airscript/devcontainer:cli \ No newline at end of file diff --git a/scripts/environment/teardown.sh b/scripts/environment/teardown.sh deleted file mode 100755 index 7f37966..0000000 --- a/scripts/environment/teardown.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -DEVCONTAINER_NAME="airscript-blog-environment" -DEVCONTAINER_IMAGE_NAME="docker:20.10.22-dind-alpine3.17" - -docker stop $DEVCONTAINER_NAME && \ -docker rm $DEVCONTAINER_NAME && \ -docker rmi $DEVCONTAINER_IMAGE_NAME \ No newline at end of file diff --git a/scripts/environment/verify.sh b/scripts/environment/verify.sh deleted file mode 100755 index 52b295c..0000000 --- a/scripts/environment/verify.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -devcontainer build --workspace-folder .devcontainers/environment \ No newline at end of file From 648237c09fa8d36373510df3a72fe5e3942d88ce Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 17:50:06 +0100 Subject: [PATCH 25/33] fix(githooks): change wrong rule for devcontainer --- .githooks/pre-commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.githooks/pre-commit b/.githooks/pre-commit index 8e5e2e1..4d936c5 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -20,7 +20,7 @@ if [ ${#TESTS_FILES} -gt 0 ]; then fi if [ ${#DEVCONTAINER_FILES} -gt 0 ]; then - if ! make all-devcontainers; then + if ! make all-devcontainer; then echo "$PREFIX Error during devcontainer validation." exit 1 fi From 4676a812162631999c59acf2849e9ee7891491c5 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 17:50:25 +0100 Subject: [PATCH 26/33] refactor(makefile): fine tuning on devcontainer rules --- Makefile | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 5285c72..a416be2 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,11 @@ SHELL = /bin/sh CI_IMAGE_NAME = airscript/ci:base TESTS_IMAGE_NAME = airscript/tests:base BLOG_IMAGE_NAME = airscript/blog:compose +DIND_IMAGE_NAME = docker:20.10.22-dind-alpine3.17 -ENVIRONMENT_DEVCONTAINER_NAME = devcontainer -DIND_ENVIRONMENT_IMAGE_NAME = docker:20.10.22-dind-alpine3.17 -ENVIRONMENT_DEVCONTAINER_IMAGE_NAME = airscript/devcontainer:environment +DEVCONTAINER_NAME = airscript-devcontainer-base +DEVCONTAINER_IMAGE_NAME = airscript/devcontainer:base +DEVCONTAINER_CLI_IMAGE_NAME = airscript/devcontainer:cli .SUFFIXES: .SUFFIXES: .sh @@ -80,34 +81,35 @@ run-ci: docker run --rm $(CI_IMAGE_NAME) && \ docker rmi $(CI_IMAGE_NAME) -.PHONY: all-devcontainers -all-devcontainers: build-devcontainers run-devcontainers +.PHONY: all-devcontainer +all-devcontainer: build-devcontainer run-devcontainer -.PHONY: build-devcontainers -build-devcontainers: +.PHONY: build-devcontainer +build-devcontainer: mkdir -p tmp && \ - cp -r .devcontainers scripts Makefile tmp && \ - docker build -f .docker/dockerfiles/devcontainer/environment.Dockerfile -t $(ENVIRONMENT_DEVCONTAINER_IMAGE_NAME) .; \ + cp -r .devcontainer scripts Makefile tmp && \ + docker build -f .docker/dockerfiles/devcontainer.Dockerfile -t $(DEVCONTAINER_IMAGE_NAME) .; \ rm -rf tmp -.PHONY: run-devcontainers -run-devcontainers: +.PHONY: run-devcontainer +run-devcontainer: docker run \ --rm \ - --name $(ENVIRONMENT_DEVCONTAINER_NAME) \ - -v /var/run/docker.sock:/var/run/docker.sock \ - $(ENVIRONMENT_DEVCONTAINER_IMAGE_NAME) /bin/bash ./scripts/environment/verify.sh; + --name $(DEVCONTAINER_NAME) \ + --volume /var/run/docker.sock:/var/run/docker.sock \ + $(DEVCONTAINER_IMAGE_NAME) /bin/bash ./scripts/devcontainer/verify.sh; - make clean-devcontainers + make clean-devcontainer -.PHONY: clean-devcontainers -clean-devcontainers: - docker rmi $(ENVIRONMENT_DEVCONTAINER_IMAGE_NAME) - docker rmi $(DIND_ENVIRONMENT_IMAGE_NAME) +.PHONY: clean-devcontainer +clean-devcontainer: + docker rmi $(DIND_IMAGE_NAME) || true + docker rmi $(DEVCONTAINER_IMAGE_NAME) + docker rmi $(DEVCONTAINER_CLI_IMAGE_NAME) -.PHONY: clean-environment-devcontainer -clean-environment-devcontainer: - sh ./scripts/environment/teardown.sh +.PHONY: teardown-devcontainer +teardown-devcontainer: + sh ./scripts/devcontainer/teardown.sh .PHONY: install-bash install-bash: From 6a55dcce280853857be58a8101c2ed3fbe52fc00 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 17:57:31 +0100 Subject: [PATCH 27/33] feat(docker): add entrypoint file for devcontainer dockerfile --- .docker/dockerfiles/devcontainer.Dockerfile | 5 ++++- .docker/scripts/devcontainer.docker-entrypoint.sh | 9 +++++++++ Makefile | 12 ++++++++---- 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100755 .docker/scripts/devcontainer.docker-entrypoint.sh diff --git a/.docker/dockerfiles/devcontainer.Dockerfile b/.docker/dockerfiles/devcontainer.Dockerfile index 8ee24bb..d3e8b26 100644 --- a/.docker/dockerfiles/devcontainer.Dockerfile +++ b/.docker/dockerfiles/devcontainer.Dockerfile @@ -10,4 +10,7 @@ FROM docker:20.10.22-dind-alpine3.17 AS runner make install-npm && \ make install-python3 && \ make install-g++ && \ - make install-devcontainers-cli \ No newline at end of file + make install-devcontainers-cli + + ENTRYPOINT [ ".docker/scripts/devcontainer.docker-entrypoint.sh" ] + CMD ["devcontainer"] \ No newline at end of file diff --git a/.docker/scripts/devcontainer.docker-entrypoint.sh b/.docker/scripts/devcontainer.docker-entrypoint.sh new file mode 100755 index 0000000..119b2ca --- /dev/null +++ b/.docker/scripts/devcontainer.docker-entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +if [ "$1" = 'devcontainer' ]; then + bash ./scripts/devcontainer/verify.sh + +else + exec "$@" +fi diff --git a/Makefile b/Makefile index a416be2..4cf137a 100644 --- a/Makefile +++ b/Makefile @@ -86,9 +86,13 @@ all-devcontainer: build-devcontainer run-devcontainer .PHONY: build-devcontainer build-devcontainer: - mkdir -p tmp && \ - cp -r .devcontainer scripts Makefile tmp && \ - docker build -f .docker/dockerfiles/devcontainer.Dockerfile -t $(DEVCONTAINER_IMAGE_NAME) .; \ + mkdir -p tmp + cp -r .devcontainer .docker scripts Makefile tmp + + docker build \ + -f .docker/dockerfiles/devcontainer.Dockerfile \ + -t $(DEVCONTAINER_IMAGE_NAME) . + rm -rf tmp .PHONY: run-devcontainer @@ -97,7 +101,7 @@ run-devcontainer: --rm \ --name $(DEVCONTAINER_NAME) \ --volume /var/run/docker.sock:/var/run/docker.sock \ - $(DEVCONTAINER_IMAGE_NAME) /bin/bash ./scripts/devcontainer/verify.sh; + $(DEVCONTAINER_IMAGE_NAME) make clean-devcontainer From a9d3641420d47848d6663619abeca471254fa19d Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 18:15:13 +0100 Subject: [PATCH 28/33] docs: update README file --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 5b53c9b..b427c34 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,6 @@ Please note that only one path between *Classic* and *Dev Container* has to be f 3. Run the following commands in the repository's root folder: ```bash - make setup make all ``` @@ -52,7 +51,6 @@ To make it work here, be sure to have installed *Dev Containers* extension. 4. Run the following commands in the repository's root folder: ```bash - make setup make all ``` From 4da127ec1844cef34e1e5b8cb1d75e0486447ddb Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 18:15:32 +0100 Subject: [PATCH 29/33] refactor(makefile): add setup to all rule --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4cf137a..42f0f72 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ DEVCONTAINER_CLI_IMAGE_NAME = airscript/devcontainer:cli .SUFFIXES: .sh .PHONY: all -all: build run +all: setup build run .PHONY: setup setup: From b1de214ba09debcf91613314e2e1a0c7183900df Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 18:25:57 +0100 Subject: [PATCH 30/33] refactor(scripts): rename gpp install script --- scripts/install/g++.sh | 3 --- scripts/install/gpp.sh | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) delete mode 100755 scripts/install/g++.sh create mode 100755 scripts/install/gpp.sh diff --git a/scripts/install/g++.sh b/scripts/install/g++.sh deleted file mode 100755 index c4f3b73..0000000 --- a/scripts/install/g++.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -apk add g++ && \ -echo "g++ installed successfully." diff --git a/scripts/install/gpp.sh b/scripts/install/gpp.sh new file mode 100755 index 0000000..76466e2 --- /dev/null +++ b/scripts/install/gpp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +apk add g++ && \ +echo "gpp installed successfully." From cdd555b5f462485a0440bf5874395f23e7d21bf5 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 18:26:12 +0100 Subject: [PATCH 31/33] refactor(scripts): rename devcontainer cli install script --- scripts/install/{devcontainers-cli.sh => devcontainer-cli.sh} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename scripts/install/{devcontainers-cli.sh => devcontainer-cli.sh} (51%) diff --git a/scripts/install/devcontainers-cli.sh b/scripts/install/devcontainer-cli.sh similarity index 51% rename from scripts/install/devcontainers-cli.sh rename to scripts/install/devcontainer-cli.sh index c4bba80..9131705 100755 --- a/scripts/install/devcontainers-cli.sh +++ b/scripts/install/devcontainer-cli.sh @@ -1,3 +1,3 @@ #!/bin/bash npm install -g @devcontainers/cli && \ -echo "Devcontainers CLI installed successfully." \ No newline at end of file +echo "devcontainer CLI installed successfully." \ No newline at end of file From 381d01c743c97de89ab14db03188d5a75e7fd954 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 18:27:12 +0100 Subject: [PATCH 32/33] refactor: rename gpp and devcontainer cli make rules --- .docker/dockerfiles/devcontainer.Dockerfile | 4 ++-- Makefile | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.docker/dockerfiles/devcontainer.Dockerfile b/.docker/dockerfiles/devcontainer.Dockerfile index d3e8b26..a334f72 100644 --- a/.docker/dockerfiles/devcontainer.Dockerfile +++ b/.docker/dockerfiles/devcontainer.Dockerfile @@ -9,8 +9,8 @@ FROM docker:20.10.22-dind-alpine3.17 AS runner bash scripts/install/make.sh && \ make install-npm && \ make install-python3 && \ - make install-g++ && \ - make install-devcontainers-cli + make install-gpp && \ + make install-devcontainer-cli ENTRYPOINT [ ".docker/scripts/devcontainer.docker-entrypoint.sh" ] CMD ["devcontainer"] \ No newline at end of file diff --git a/Makefile b/Makefile index 42f0f72..a1fd4a0 100644 --- a/Makefile +++ b/Makefile @@ -155,13 +155,13 @@ install-netlify-cli: install-python3: bash ./scripts/install/python3.sh -.PHONY: install-g++ -install-g++: - bash ./scripts/install/g++.sh +.PHONY: install-gpp +install-gpp: + bash ./scripts/install/gpp.sh -.PHONY: install-devcontainers-cli -install-devcontainers-cli: - bash ./scripts/install/devcontainers-cli.sh +.PHONY: install-devcontainer-cli +install-devcontainer-cli: + bash ./scripts/install/devcontainer-cli.sh .PHONY: ci-verify ci-verify: From 3f25aadbe7933e4668f0617352e6033c5d6d55f1 Mon Sep 17 00:00:00 2001 From: Airscript Date: Mon, 26 Dec 2022 18:30:26 +0100 Subject: [PATCH 33/33] tests: add gpp, devcontainer cli and python3 install tests --- tests/install.bats | 18 ++++++++++++++++++ tests/mocks.sh | 8 ++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/install.bats b/tests/install.bats index c62e5c1..450462a 100644 --- a/tests/install.bats +++ b/tests/install.bats @@ -38,6 +38,18 @@ setup() { refute_output --partial "ERROR" } +@test "Install gpp" { + run ./scripts/install/gpp.sh + assert_output --partial "$INSTALL_GPP" + refute_output --partial "ERROR" +} + +@test "Install python3" { + run ./scripts/install/python3.sh + assert_output --partial "$INSTALL_PYTHON3" + refute_output --partial "ERROR" +} + @test "Install npm" { run ./scripts/install/npm.sh assert_output --partial "$INSTALL_NPM" @@ -50,6 +62,12 @@ setup() { refute_output --partial "ERR!" } +@test "Install devcontainer CLI" { + run ./scripts/install/devcontainer-cli.sh + assert_output --partial "$INSTALL_DEVCONTAINER_CLI" + refute_output --partial "ERR!" +} + @test "Install Bats" { run ./scripts/install/bats.sh assert_output --partial "$INSTALL_BATS" diff --git a/tests/mocks.sh b/tests/mocks.sh index c96b7a1..6296391 100755 --- a/tests/mocks.sh +++ b/tests/mocks.sh @@ -1,14 +1,18 @@ #!/bin/bash readonly INSTALL_NPM="npm installed successfully." readonly INSTALL_GIT="Git installed successfully." +readonly INSTALL_GPP="gpp installed successfully." readonly INSTALL_BATS="Bats installed successfully." readonly INSTALL_HUGO="Hugo installed successfully." readonly INSTALL_MAKE="Make installed successfully." readonly INSTALL_CURL="curl installed successfully." readonly INSTALL_BASH="Bash installed successfully." -readonly SKIP_INSTALL_GIT="Git installation has been skipped." +readonly INSTALL_PYTHON3="python3 installed successfully." readonly INSTALL_DOCKER_CLI="Docker CLI installed successfully." readonly INSTALL_NETLIFY_CLI="Netlify CLI installed successfully." -readonly ADD_GIT_SUBMODULE_SKIPPED="Git submodule update skipped." readonly INSTALL_CIRCLECI_CLI="CircleCI CLI installed successfully." +readonly INSTALL_DEVCONTAINER_CLI="devcontainer CLI installed successfully." + +readonly SKIP_INSTALL_GIT="Git installation has been skipped." +readonly ADD_GIT_SUBMODULE_SKIPPED="Git submodule update skipped." readonly ADD_GIT_SUBMODULE_EXECUTED="Git submodule update executed."