diff --git a/.devcontainer/build/.devcontainer.json b/.devcontainer/build/.devcontainer.json new file mode 100644 index 0000000..e9ddf9a --- /dev/null +++ b/.devcontainer/build/.devcontainer.json @@ -0,0 +1,22 @@ +{ + "name": "Docstoregen Devcontainer", + "build": { + "dockerfile": "Dockerfile", + "context": "." + }, + "features": { + "ghcr.io/bartventer/arch-devcontainer-features/go": { + "golangciLintVersion": "none", + "installGoReleaser": true + }, + "ghcr.io/bartventer/arch-devcontainer-features/docker-in-docker": {} + }, + "customizations": { + "vscode": { + "extensions": [ + "github.vscode-github-actions" + ] + } + }, + "remoteUser": "vscode" +} \ No newline at end of file diff --git a/.devcontainer/build/Dockerfile b/.devcontainer/build/Dockerfile new file mode 100644 index 0000000..e880118 --- /dev/null +++ b/.devcontainer/build/Dockerfile @@ -0,0 +1,6 @@ +FROM ghcr.io/bartventer/devcontainer-images/base-archlinux:latest + +LABEL org.opencontainers.image.source="https://github.com/bartventer/docstore-gen" +LABEL org.opencontainers.image.authors="Bart Venter " +LABEL org.opencontainers.image.title="docstore-gen" +LABEL org.opencontainers.image.description="Development container for docstore-gen" \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..0e84911 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,8 @@ +{ + "name": "Docstoregen Devcontainer", + "image": "ghcr.io/bartventer/docstore-gen/devcontainer:latest", + "mounts": [ + "source=/tmp/.X11-unix,target=/tmp/.X11-unix,type=bind,consistency=cached", + "source=${localEnv:HOME}/.vscode-server,target=/home/vscode/.vscode-server-insiders/extensions,type=bind,consistency=cached" + ] +} \ No newline at end of file diff --git a/.github/workflows/devcontainer.yml b/.github/workflows/devcontainer.yml new file mode 100644 index 0000000..e0b77c0 --- /dev/null +++ b/.github/workflows/devcontainer.yml @@ -0,0 +1,42 @@ +name: Devcontainer Build + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * 0' # Every Sunday at 00:00 + push: + branches: + - master + paths: + - '.devcontainer/build/**' + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: write + packages: write + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Dependencies + run: yarn global add @devcontainers/cli + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build, Push and Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: ./scripts/devcontainer.sh diff --git a/.gitignore b/.gitignore index b9293e2..e3bfcca 100644 --- a/.gitignore +++ b/.gitignore @@ -4,8 +4,5 @@ # Environment variables .env -# Devcontainer -.devcontainer - # Temp directory generated during testing -__temp__* \ No newline at end of file +__temp__* diff --git a/scripts/devcontainer.sh b/scripts/devcontainer.sh new file mode 100755 index 0000000..0460066 --- /dev/null +++ b/scripts/devcontainer.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo "🚀 Building devcontainer..." + +devcontainer build \ + --log-level debug \ + --workspace-folder .devcontainer/build \ + --image-name ghcr.io/bartventer/docstore-gen/devcontainer:latest \ + --platform linux/amd64 \ + --push + +echo "🎉 OK. Successfully built devcontainer."