diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index 1513b2d..0000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -# this image is built and updated weekly -# https://github.com/cse-labs/codespaces-images - -FROM ghcr.io/cse-labs/k3d:latest - -# some images require specific values -ARG USERNAME=vscode - -# log the docker build start event -RUN echo "$(date +'%Y-%m-%d %H:%M:%S') docker build start" >> /home/$USERNAME/status - -RUN chown -R $USERNAME:$USERNAME /home/$USERNAME - -# log the docker build complete -RUN echo "$(date +'%Y-%m-%d %H:%M:%S') docker build complete" >> /home/$USERNAME/status diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index c0dd716..0000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "Kubernetes-in-Codespaces", - "dockerFile": "Dockerfile", - // do not change these if you want Docker in Docker support - "runArgs": [ - "--init", - "--privileged" - ], - "mounts": [ - "source=/var/run/docker.sock,target=/var/run/docker-host.sock,type=bind" - ], - "overrideCommand": false, - // some base images require a specific user name - "remoteUser": "vscode", - // Set container specific settings - "customizations": { - "vscode": { - "settings": { - "terminal.integrated.defaultProfile.linux": "zsh", - "files.trimTrailingWhitespace": true, - "files.trimFinalNewlines": true, - "files.insertFinalNewline": true - }, - "extensions": [ - "ms-azuretools.vscode-docker", - "ms-kubernetes-tools.vscode-kubernetes-tools", - "davidanson.vscode-markdownlint", - "gruntfuggly.todo-tree" - ] - } - }, - // Ensure that the host machine has enough resources to build and test Kubernetes - "hostRequirements": { - "cpus": 4 - }, - // forward ports for the app - "forwardPorts": [ - 8000, - 8080 - ], - "waitFor": "postCreateCommand", - // Use 'onCreateCommand' to run commands as part of container creation. - "onCreateCommand": "/bin/bash -c .devcontainer/on-create.sh", - // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "/bin/bash -c .devcontainer/post-create.sh", - // Use 'postStartCommand' to run commands after the container starts. - "postStartCommand": "/bin/bash -c .devcontainer/set-branch-env.sh && /bin/bash -c .devcontainer/post-start.sh" -} \ No newline at end of file diff --git a/.devcontainer/k3d.yaml b/.devcontainer/k3d.yaml deleted file mode 100644 index cf4428b..0000000 --- a/.devcontainer/k3d.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: k3d.io/v1alpha2 -kind: Simple -servers: 1 -network: k3d -kubeAPI: - hostIP: "0.0.0.0" - hostPort: "6443" -# volumes: -# - volume: /prometheus:/prometheus -# nodeFilters: -# - server[0] -ports: - - port: 8000:8000 - nodeFilters: - - server[0] -options: - k3d: - wait: true - timeout: "60s" - k3s: - extraServerArgs: - - --tls-san=127.0.0.1 - extraAgentArgs: [] - kubeconfig: - updateDefaultKubeconfig: true - switchCurrentContext: true diff --git a/.devcontainer/on-create.sh b/.devcontainer/on-create.sh deleted file mode 100644 index dc74319..0000000 --- a/.devcontainer/on-create.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash - -# this runs as part of pre-build - -echo "on-create start" -echo "$(date +'%Y-%m-%d %H:%M:%S') on-create start" >> "$HOME/status" - -# # clone repos -# git clone https://github.com/cse-labs/imdb-app /workspaces/imdb-app -# git clone https://github.com/microsoft/webvalidate /workspaces/webvalidate - -# # restore the repos -# dotnet restore /workspaces/webvalidate/src/webvalidate.sln -# dotnet restore /workspaces/imdb-app/src/imdb.csproj - -export REPO_BASE=$PWD -# export PATH="$PATH:$REPO_BASE/cli" - -mkdir -p "$HOME/.ssh" - -# { -# # add cli to path -# echo "export PATH=\$PATH:$REPO_BASE/cli" - -# echo "export REPO_BASE=$REPO_BASE" -# echo "compinit" -# } >> "$HOME/.zshrc" - -# create local registry -docker network create k3d -k3d registry create registry.localhost --port 5500 -docker network connect k3d k3d-registry.localhost - -# update the base docker images -# docker pull mcr.microsoft.com/dotnet/aspnet:6.0-alpine -# docker pull mcr.microsoft.com/dotnet/sdk:6.0 -# docker pull ghcr.io/cse-labs/webv-red:latest - -# echo "dowloading kic CLI" -# cd cli || exit -# tag="0.4.3" -# wget -O kic.tar.gz "https://github.com/retaildevcrews/akdc/releases/download/$tag/kic-$tag-linux-amd64.tar.gz" -# tar -xvzf kic.tar.gz -# rm kic.tar.gz -# cd "$OLDPWD" || exit - -# echo "generating completions" -# kic completion zsh > "$HOME/.oh-my-zsh/completions/_kic" -# kubectl completion zsh > "$HOME/.oh-my-zsh/completions/_kubectl" - -# echo "creating k3d cluster" -# kic cluster rebuild - -# echo "bilding IMDb" -# kic build imdb - -# echo "building WebValidate" -# sed -i "s/RUN dotnet test//g" /workspaces/webvalidate/Dockerfile -# kic build webv - -# echo "deploying k3d cluster" -# kic cluster deploy - -# only run apt upgrade on pre-build -if [ "$CODESPACE_NAME" = "null" ] -then - sudo apt-get update - sudo apt-get upgrade -y - sudo apt-get autoremove -y - sudo apt-get clean -y -fi - -echo "on-create complete" -echo "$(date +'%Y-%m-%d %H:%M:%S') on-create complete" >> "$HOME/status" diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh deleted file mode 100644 index 3fe7d80..0000000 --- a/.devcontainer/post-create.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# this runs at Codespace creation - not part of pre-build - -echo "post-create start" -echo "$(date) post-create start" >> "$HOME/status" - -# update the repos -# git -C /workspaces/imdb-app pull -# git -C /workspaces/webvalidate pull - -echo "post-create complete" -echo "$(date +'%Y-%m-%d %H:%M:%S') post-create complete" >> "$HOME/status" diff --git a/.devcontainer/post-start.sh b/.devcontainer/post-start.sh deleted file mode 100644 index 57f434d..0000000 --- a/.devcontainer/post-start.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -# this runs each time the container starts - -echo "post-start start" -echo "$(date +'%Y-%m-%d %H:%M:%S') post-start start" >> "$HOME/status" - -# update the base docker images -# docker pull mcr.microsoft.com/dotnet/aspnet:6.0-alpine -# docker pull mcr.microsoft.com/dotnet/sdk:6.0 -# docker pull ghcr.io/cse-labs/webv-red:latest - -echo "post-start complete" -echo "$(date +'%Y-%m-%d %H:%M:%S') post-start complete" >> "$HOME/status" diff --git a/.devcontainer/set-branch-env.sh b/.devcontainer/set-branch-env.sh deleted file mode 100644 index 872defe..0000000 --- a/.devcontainer/set-branch-env.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# .devcontainer/set-branch-env.sh -# Set container hostname and environment variable to first 20 chars of branch name - -BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo main) -SHORT_BRANCH=${BRANCH:0:20} -echo "Setting hostname and environment variable to: $SHORT_BRANCH" -sudo hostnamectl set-hostname "$SHORT_BRANCH" -echo "export BRANCH_SHORT=\"$SHORT_BRANCH\"" | sudo tee /etc/profile.d/branch.sh > /dev/null diff --git a/.github/workflows/create-codespace-dagger.yml b/.github/workflows/create-codespace-dagger.yml new file mode 100644 index 0000000..4cfc0b7 --- /dev/null +++ b/.github/workflows/create-codespace-dagger.yml @@ -0,0 +1,37 @@ +name: Codespace Creation +description: This workflow runs when a pull request is opened, reopened, or synchronized. It uses Dagger to create a codespace for the PR. + +on: + pull_request: + types: [synchronize, opened, reopened] + +jobs: + codespace-manager: + name: Codespace Manager + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + # - name: Print all ENVS + # run: printenv + - name: Create Codespace with Dagger + uses: dagger/dagger-for-github@8.0.0 + env: + # setting tokens here so that it can be referenced below without exposing in dagger cloud logs + # should be referenced as env://GITHUB_TOKEN in the Dagger module + GITHUB_TOKEN: ${{ github.token }} + CODESPACE_TOKEN: ${{ secrets.CODESPACES_PAT }} + with: + module: github.com/BCIT-LTC/daggerverse/codespace-manager@40-codespace-manager-module + call: >- + create-codespace-by-pull-request + --source=. + --token=env://CODESPACE_TOKEN + --organization=${{ github.repository_owner }} + --repo_name=${{ github.event.repository.name }} + --branch_name=${{ github.event.pull_request.head.ref }} + --pull_request_number=${{ github.event.pull_request.number }} + cloud-token: ${{ secrets.DAGGER_CLOUD_TOKEN }} + version: "latest" + + diff --git a/.github/workflows/delete-codespace-dagger.yml b/.github/workflows/delete-codespace-dagger.yml new file mode 100644 index 0000000..52fe09c --- /dev/null +++ b/.github/workflows/delete-codespace-dagger.yml @@ -0,0 +1,38 @@ +name: Codespace Deletion +description: This workflow runs when a pull request is closed. It uses Dagger to delete the codespace associated with the PR. + +on: + pull_request: + types: [closed] + +jobs: + + codespace-manager: + name: Codespace Manager + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + # - name: Print all ENVS + # run: printenv + - name: Delete Codespace with Dagger + uses: dagger/dagger-for-github@8.0.0 + env: + # setting tokens here so that it can be referenced below without exposing in dagger cloud logs + # should be referenced as env://GITHUB_TOKEN in the Dagger module + GITHUB_TOKEN: ${{ github.token }} + CODESPACE_TOKEN: ${{ secrets.CODESPACES_PAT }} + with: + module: github.com/BCIT-LTC/daggerverse/codespace-manager@40-codespace-manager-module + call: >- + delete-codespace-by-pull-request + --source=. + --token=env://CODESPACE_TOKEN + --organization=${{ github.repository_owner }} + --repo_name=${{ github.event.repository.name }} + --branch_name=${{ github.event.pull_request.head.ref }} + --pull_request_number=${{ github.event.pull_request.number }} + cloud-token: ${{ secrets.DAGGER_CLOUD_TOKEN }} + version: "latest" + +