From b1fc01d38dd4cb27843c12357336b94086639916 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Thu, 13 Jun 2024 17:39:34 +0200 Subject: [PATCH 01/15] First draft added.. GitOps placeholder still missing --- HOW-TO-DEPLOY.MD | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 HOW-TO-DEPLOY.MD diff --git a/HOW-TO-DEPLOY.MD b/HOW-TO-DEPLOY.MD new file mode 100644 index 0000000..c23d596 --- /dev/null +++ b/HOW-TO-DEPLOY.MD @@ -0,0 +1,54 @@ +# How to Deploy + +## Introduction + +Welcome to the deployment guide for [OS2-PROJECTNAME]. This document will walk you through the process of deploying pre-built containers, whether you're setting up a development environment or deploying to a production cluster. + +## Prerequisites + +Before proceeding with the deployment, please ensure you have the following prerequisites met: + +- Docker or Podman installed for local container management. +- Access to the [OS2-PROJECTNAME] container images. +- For production deployments: + - Access to the Kubernetes cluster where you will deploy the application. + - **For Helm users**: Helm package manager installed. If you do not have Helm installed, please refer to the official Helm installation guide. + +## 💻 Development + +To set up a containerized development and test environment you can use the `docker run` or `podman run` to pull the containerimage and run the container. + +### Docker +```shell +docker run -d -p {CONTAINERPORT:HOSTPORT} --name {CONTAINER_NAME} {IMAGE_NAME}:{TAG} +``` +[Official documentation for `docker run`](https://docs.docker.com/reference/cli/docker/container/run/) + +### Podman +```shell +podman run -d -p {HOSTPORT}:{CONTAINERPORT} --name {CONTAINER_NAME} {IMAGE_NAME}:{TAG} +``` +[Official documentation for `podman run`](https://docs.podman.io/en/latest/markdown/podman-run.1.html) + + +## 🚢 Production + +To deploy [OS"-PROJECTNAME] to production use the supplied templates in the deployment-repository here: {DEPLOYMENTREPO-URL} + +### 🌐 Manual push deployment with Helm + +Manual push deployments involve a developer or an operator directly deploying changes to a Kubernetes cluster using tools like the Helm package manager. + +To manually push a deployment to a Kubernetes cluster with the chart from the {DEPLOYMENTREPO-URL}, you can use the `helm install` command. + +Here's a basic example: + +```shell +helm install {RELEASE_NAME} {CHART_PATH} --values {VALUES_FILE} +``` +[Official documentation for `helm install`](https://helm.sh/docs/helm/helm_install/#helm) + +For detailed information on the Helm chart structure and syntax, you can refer to the [Helm Charts documentation](https://helm.sh/docs/topics/charts/). + +### Automatic push deployment with GitOps tools + From f3716380098d07a3f4608ac2cbe1d7529a384681 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:34:59 +0200 Subject: [PATCH 02/15] Added Cluster deployment --- HOW-TO-DEPLOY.MD | 61 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/HOW-TO-DEPLOY.MD b/HOW-TO-DEPLOY.MD index c23d596..641cf29 100644 --- a/HOW-TO-DEPLOY.MD +++ b/HOW-TO-DEPLOY.MD @@ -4,27 +4,22 @@ Welcome to the deployment guide for [OS2-PROJECTNAME]. This document will walk you through the process of deploying pre-built containers, whether you're setting up a development environment or deploying to a production cluster. -## Prerequisites +## 💻 Development +To set up a containerized development and test environment on a local computer or in a hosted developer enviroment like GitHub codespaces, you can use the `docker run` or `podman run` to pull the containerimage and run the container. -Before proceeding with the deployment, please ensure you have the following prerequisites met: +### Prerequisites - Docker or Podman installed for local container management. - Access to the [OS2-PROJECTNAME] container images. -- For production deployments: - - Access to the Kubernetes cluster where you will deploy the application. - - **For Helm users**: Helm package manager installed. If you do not have Helm installed, please refer to the official Helm installation guide. - -## 💻 Development -To set up a containerized development and test environment you can use the `docker run` or `podman run` to pull the containerimage and run the container. -### Docker +### 🗳️ Docker example ```shell docker run -d -p {CONTAINERPORT:HOSTPORT} --name {CONTAINER_NAME} {IMAGE_NAME}:{TAG} ``` [Official documentation for `docker run`](https://docs.docker.com/reference/cli/docker/container/run/) -### Podman +### 🐭 Podman example ```shell podman run -d -p {HOSTPORT}:{CONTAINERPORT} --name {CONTAINER_NAME} {IMAGE_NAME}:{TAG} ``` @@ -33,22 +28,48 @@ podman run -d -p {HOSTPORT}:{CONTAINERPORT} --name {CONTAINER_NAME} {IMAGE_NAME} ## 🚢 Production -To deploy [OS"-PROJECTNAME] to production use the supplied templates in the deployment-repository here: {DEPLOYMENTREPO-URL} +### Deployment on a single host +For less demanding production environments on a single VM or bare metal host, you can use tools like Ansible, Chef, or Puppet to deploy the container. -### 🌐 Manual push deployment with Helm +### Prerequisites -Manual push deployments involve a developer or an operator directly deploying changes to a Kubernetes cluster using tools like the Helm package manager. +- Ansible installed for server configuration management. +- Access to the [OS2-PROJECTNAME] container images in a registry. +- A user account on the remote host with sufficient privileges to execute Ansible commands. +- SSH keys for passwordless login between your local machine and the remote host. This involves generating an SSH key pair and adding the public key to the `authorized_keys` file on the remote host. +- Properly configured environment variables and volumes for production use. -To manually push a deployment to a Kubernetes cluster with the chart from the {DEPLOYMENTREPO-URL}, you can use the `helm install` command. - -Here's a basic example: +### 🅰️ Ansible Example +Use the following command to run `ansible-pull` from your local machine on the remote host via SSH: ```shell -helm install {RELEASE_NAME} {CHART_PATH} --values {VALUES_FILE} +ssh remote_user@remote_host "ansible-pull -U https://github.com/{USERNAME}/{REPOSITORY}.git \\ + -e 'container_port={CONTAINERPORT}' \ + -e 'host_port={HOSTPORT}' \ + -e 'container_name={CONTAINER_NAME}' \ + -e 'image_name={IMAGE_NAME}' \ + -e 'tag={TAG}'" ``` -[Official documentation for `helm install`](https://helm.sh/docs/helm/helm_install/#helm) -For detailed information on the Helm chart structure and syntax, you can refer to the [Helm Charts documentation](https://helm.sh/docs/topics/charts/). +--- + +### 🌐 Cluster Deployment +For more demanding production environments that require scalability, fault tolerance, observability and high availability container orchestration tools like [Kubernetes](https://kubernetes.io/), [Nomad](https://www.hashicorp.com/products/nomad), [OpenShift](https://www.openshift.com/) is recommended alongside [GitOps](https://opengitops.dev/) tools like [ArgoCD](https://argoproj.github.io/argo-cd/), [Flux](https://fluxcd.io/) or [Fleet](ttps://rancher.com/docs/rancher/v2.x/en/deploy-across-clusters/fleet/ +) to ensure a streamlined and robust deployment process. + +### 📦 Kubernetes example with Rancher & Fleet + +### Prerequisites + +- A **Rancher-managed Kubernetes cluster** using **RKE2 (RKE Government)**, designed for security and compliance within the Government sector, with FIPS 140-2 compliance and configurations for passing CIS Kubernetes Benchmarks. +- **Fleet GitOps controller** for automated deployments. +- **Access to the deployment repository** containing the [OS2-PROJECTNAME] Helm chart. + +#### 🛠️ Deployment Steps -### Automatic push deployment with GitOps tools +1. **Rancher Setup**: Configure your RKE2 Kubernetes cluster with Rancher for an intuitive management experience. +2. **Fleet Configuration**: Integrate Fleet in Rancher for GitOps deployments, tracking changes to the [OS2-PROJECTNAME] Helm chart. +3. **Helm Chart**: Ensure the Helm chart is updated in the repository with all configurations. +4. **Deployment Trigger**: Updates to the Helm chart in the Git repository will prompt Fleet to deploy within the Rancher-managed cluster. +This streamlined process utilizes Kubernetes' orchestration, Rancher's management, and Fleet's continuous deployment for a secure, government-focused deployment pipeline. From 445726e63c7ed265786a4d4a29ef85543b76a013 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:37:45 +0200 Subject: [PATCH 03/15] Added a rocket for kicks --- HOW-TO-DEPLOY.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HOW-TO-DEPLOY.MD b/HOW-TO-DEPLOY.MD index 641cf29..4822fd3 100644 --- a/HOW-TO-DEPLOY.MD +++ b/HOW-TO-DEPLOY.MD @@ -1,4 +1,4 @@ -# How to Deploy +# 🚀 How to Deploy ## Introduction From 500b2e6650eaa88e30428d8fb4f245bbe28e9274 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Wed, 19 Jun 2024 09:44:04 +0200 Subject: [PATCH 04/15] Added GitOps process --- HOW-TO-DEPLOY.MD | 74 +++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/HOW-TO-DEPLOY.MD b/HOW-TO-DEPLOY.MD index 4822fd3..5511644 100644 --- a/HOW-TO-DEPLOY.MD +++ b/HOW-TO-DEPLOY.MD @@ -5,71 +5,73 @@ Welcome to the deployment guide for [OS2-PROJECTNAME]. This document will walk you through the process of deploying pre-built containers, whether you're setting up a development environment or deploying to a production cluster. ## 💻 Development -To set up a containerized development and test environment on a local computer or in a hosted developer enviroment like GitHub codespaces, you can use the `docker run` or `podman run` to pull the containerimage and run the container. +To set up a containerized development and test environment on a local computer or in a hosted developer enviroment like GitHub codespaces, you can use a simple `docker run` or `podman run` command to pull the containerimage and run the container. -### Prerequisites - -- Docker or Podman installed for local container management. -- Access to the [OS2-PROJECTNAME] container images. - - -### 🗳️ Docker example +#### Docker example ```shell docker run -d -p {CONTAINERPORT:HOSTPORT} --name {CONTAINER_NAME} {IMAGE_NAME}:{TAG} ``` [Official documentation for `docker run`](https://docs.docker.com/reference/cli/docker/container/run/) -### 🐭 Podman example +#### Podman example ```shell podman run -d -p {HOSTPORT}:{CONTAINERPORT} --name {CONTAINER_NAME} {IMAGE_NAME}:{TAG} ``` [Official documentation for `podman run`](https://docs.podman.io/en/latest/markdown/podman-run.1.html) + ## 🚢 Production +To make deployment of [OS2-PROJECTNAME] simple, fast and standardized, we recommend using the supplied deployment templates in the `https://github.com/{USERNAME}/{REPOSITORY}.git` deployment repository. -### Deployment on a single host -For less demanding production environments on a single VM or bare metal host, you can use tools like Ansible, Chef, or Puppet to deploy the container. +### 🖥 Deployment on a single host +For less demanding production environments on a single VM or bare metal host, you can use tools like Ansible, Chef, or Puppet to deploy the containerimage. -### Prerequisites +### Examples +Below is a couple of examples that can be run either manually or automated with your Configuration Managment tool of choice. The examples expects the correct enviroment variables to exist and acces to the repository ressources. -- Ansible installed for server configuration management. -- Access to the [OS2-PROJECTNAME] container images in a registry. -- A user account on the remote host with sufficient privileges to execute Ansible commands. -- SSH keys for passwordless login between your local machine and the remote host. This involves generating an SSH key pair and adding the public key to the `authorized_keys` file on the remote host. -- Properly configured environment variables and volumes for production use. +#### Ansible -### 🅰️ Ansible Example -Use the following command to run `ansible-pull` from your local machine on the remote host via SSH: +Example using `ssh` and `ansible-pull` that pulls and runs the default `local.yml` ansible playbook from the `https://github.com/{USERNAME}/{REPOSITORY}.git` repository. ```shell -ssh remote_user@remote_host "ansible-pull -U https://github.com/{USERNAME}/{REPOSITORY}.git \\ - -e 'container_port={CONTAINERPORT}' \ - -e 'host_port={HOSTPORT}' \ - -e 'container_name={CONTAINER_NAME}' \ - -e 'image_name={IMAGE_NAME}' \ - -e 'tag={TAG}'" +ssh remote_user@remote_host "ansible-pull -U https://github.com/{USERNAME}/{REPOSITORY}.git ``` +[Official documentation for `ansible-pull`](https://docs.ansible.com/ansible/latest/cli/ansible-pull.html) + +#### Chef +Example using `git` and `chef-apply` to pull and run the `recipe.rb` chef recipes ansible playbook from from the `https://github.com/{USERNAME}/{REPOSITORY}.git` repository. + +```shell +git clone https://github.com/{USERNAME}/{REPOSITORY}.git && \ + +chef-apply {REPOSITORY}/path/to/recipe.rb +``` + --- ### 🌐 Cluster Deployment + For more demanding production environments that require scalability, fault tolerance, observability and high availability container orchestration tools like [Kubernetes](https://kubernetes.io/), [Nomad](https://www.hashicorp.com/products/nomad), [OpenShift](https://www.openshift.com/) is recommended alongside [GitOps](https://opengitops.dev/) tools like [ArgoCD](https://argoproj.github.io/argo-cd/), [Flux](https://fluxcd.io/) or [Fleet](ttps://rancher.com/docs/rancher/v2.x/en/deploy-across-clusters/fleet/ ) to ensure a streamlined and robust deployment process. -### 📦 Kubernetes example with Rancher & Fleet +The deployment templates provided in the `https://github.com/{USERNAME}/{REPOSITORY}.git` deployment repository are designed for integration into a version-controlled [GitOps](https://opengitops.dev/) workflow. These templates are compatible with your chosen [GitOps](https://opengitops.dev/) tools and the container orchestrator of your choice. For more information on GitOps principles and practices, visit the [Open GitOps website](https://opengitops.dev/) -### Prerequisites +## 🔄 GitOps Process +Deploy [OS2-PROJECTNAME] to your cluster in 3 steps: -- A **Rancher-managed Kubernetes cluster** using **RKE2 (RKE Government)**, designed for security and compliance within the Government sector, with FIPS 140-2 compliance and configurations for passing CIS Kubernetes Benchmarks. -- **Fleet GitOps controller** for automated deployments. -- **Access to the deployment repository** containing the [OS2-PROJECTNAME] Helm chart. +1. **Initialize and Synchronize**: + - **Clone the Deployment Templates**: Start by cloning the deployment templates from `https://github.com/{USERNAME}/{REPOSITORY}.git`. + - **Create a New Branch**: Establish a new branch for your modifications to preserve the integrity of the main branch. -#### 🛠️ Deployment Steps +2. **Customize and Collaborate**: + - **Customize the Templates**: Tailor the templates to fit your environment and requirements. + - **Open a Pull Request (PR)**: Submit a PR for your branch, enabling peer review and collaboration. -1. **Rancher Setup**: Configure your RKE2 Kubernetes cluster with Rancher for an intuitive management experience. -2. **Fleet Configuration**: Integrate Fleet in Rancher for GitOps deployments, tracking changes to the [OS2-PROJECTNAME] Helm chart. -3. **Helm Chart**: Ensure the Helm chart is updated in the repository with all configurations. -4. **Deployment Trigger**: Updates to the Helm chart in the Git repository will prompt Fleet to deploy within the Rancher-managed cluster. +3. **Merge and Deploy**: + - **Review and Approve**: Have your team review and approve the PR. + - **Merge and Trigger**: Merge the approved PR into the main branch, which triggers the GitOps tool to synchronize and apply the configurations to your cluster. -This streamlined process utilizes Kubernetes' orchestration, Rancher's management, and Fleet's continuous deployment for a secure, government-focused deployment pipeline. +## ☁️ Managed GitOps Hosting +If preferred, select a managed GitOps hosting provider that aligns with your project's needs and goals. \ No newline at end of file From 1cec71b4ca98a89714552c651a90a2c8cf21fe66 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Wed, 19 Jun 2024 10:19:52 +0200 Subject: [PATCH 05/15] Removed chef example --- HOW-TO-DEPLOY.MD | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/HOW-TO-DEPLOY.MD b/HOW-TO-DEPLOY.MD index 5511644..0f1ef91 100644 --- a/HOW-TO-DEPLOY.MD +++ b/HOW-TO-DEPLOY.MD @@ -28,35 +28,29 @@ To make deployment of [OS2-PROJECTNAME] simple, fast and standardized, we recomm For less demanding production environments on a single VM or bare metal host, you can use tools like Ansible, Chef, or Puppet to deploy the containerimage. ### Examples -Below is a couple of examples that can be run either manually or automated with your Configuration Managment tool of choice. The examples expects the correct enviroment variables to exist and acces to the repository ressources. +Below is examples that can be run either manually or automated with your Configuration Managment tool of choice. The examples expects the correct enviroment variables to exist and acces to the repository ressources. -#### Ansible +### Ansible Example using `ssh` and `ansible-pull` that pulls and runs the default `local.yml` ansible playbook from the `https://github.com/{USERNAME}/{REPOSITORY}.git` repository. ```shell ssh remote_user@remote_host "ansible-pull -U https://github.com/{USERNAME}/{REPOSITORY}.git ``` -[Official documentation for `ansible-pull`](https://docs.ansible.com/ansible/latest/cli/ansible-pull.html) - -#### Chef -Example using `git` and `chef-apply` to pull and run the `recipe.rb` chef recipes ansible playbook from from the `https://github.com/{USERNAME}/{REPOSITORY}.git` repository. - -```shell -git clone https://github.com/{USERNAME}/{REPOSITORY}.git && \ - -chef-apply {REPOSITORY}/path/to/recipe.rb -``` - +🔗 [Official documentation for `ansible-pull`](https://docs.ansible.com/ansible/latest/cli/ansible-pull.html) --- ### 🌐 Cluster Deployment -For more demanding production environments that require scalability, fault tolerance, observability and high availability container orchestration tools like [Kubernetes](https://kubernetes.io/), [Nomad](https://www.hashicorp.com/products/nomad), [OpenShift](https://www.openshift.com/) is recommended alongside [GitOps](https://opengitops.dev/) tools like [ArgoCD](https://argoproj.github.io/argo-cd/), [Flux](https://fluxcd.io/) or [Fleet](ttps://rancher.com/docs/rancher/v2.x/en/deploy-across-clusters/fleet/ -) to ensure a streamlined and robust deployment process. +For more demanding production environments that require scalability, fault tolerance, enchanced security, observability and high availability it is best practice to deploy [OS2-PROJECTNAME] to a cluster controlled by a container orchestrator with technologies like like [Kubernetes](https://kubernetes.io/), [Nomad](https://www.hashicorp.com/products/nomad) or [OpenShift](https://www.openshift.com/) together with [GitOps](https://opengitops.dev/) tools like [ArgoCD](https://argoproj.github.io/argo-cd/), [Flux](https://fluxcd.io/) or [Fleet](ttps://rancher.com/docs/rancher/v2.x/en/deploy-across-clusters/fleet/ +) + +The deployment templates provided in the `https://github.com/{USERNAME}/{REPOSITORY}.git` deployment repository are designed for integration into a version-controlled [GitOps](https://opengitops.dev/) workflow. These templates are compatible with your chosen [GitOps](https://opengitops.dev/) tools and the container orchestrator of your choice. + +🔗 [What is GitOps?](https://about.gitlab.com/topics/gitops/)   |   +🔗 [An illustrated guide to GitOps](https://www.redhat.com/architect/illustrated-guide-gitops) -The deployment templates provided in the `https://github.com/{USERNAME}/{REPOSITORY}.git` deployment repository are designed for integration into a version-controlled [GitOps](https://opengitops.dev/) workflow. These templates are compatible with your chosen [GitOps](https://opengitops.dev/) tools and the container orchestrator of your choice. For more information on GitOps principles and practices, visit the [Open GitOps website](https://opengitops.dev/) ## 🔄 GitOps Process Deploy [OS2-PROJECTNAME] to your cluster in 3 steps: From 3ec8b79f0dc8b06806c752e310e95f75bccddf97 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Wed, 19 Jun 2024 13:33:36 +0200 Subject: [PATCH 06/15] Moved to docs --- HOW-TO-DEPLOY.MD => docs/HOW-TO-DEPLOY.MD | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename HOW-TO-DEPLOY.MD => docs/HOW-TO-DEPLOY.MD (100%) diff --git a/HOW-TO-DEPLOY.MD b/docs/HOW-TO-DEPLOY.MD similarity index 100% rename from HOW-TO-DEPLOY.MD rename to docs/HOW-TO-DEPLOY.MD From 4cead352bd3b5660efbd6de3e035df65ebd767a9 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Wed, 19 Jun 2024 13:45:05 +0200 Subject: [PATCH 07/15] Testing Front Matter --- docs/HOW-TO-DEPLOY.MD | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/HOW-TO-DEPLOY.MD b/docs/HOW-TO-DEPLOY.MD index 0f1ef91..6eea52c 100644 --- a/docs/HOW-TO-DEPLOY.MD +++ b/docs/HOW-TO-DEPLOY.MD @@ -1,3 +1,8 @@ +--- +layout: default +title: "🚀 How to Deploy" +--- + # 🚀 How to Deploy ## Introduction From 0f663ba409a6c2ac34dede4c5824363ada048d26 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Wed, 19 Jun 2024 14:37:46 +0200 Subject: [PATCH 08/15] Logo, mermaid support added --- _config.yml | 11 +++++++++-- assets/images/os2.jpeg | Bin 0 -> 6128 bytes 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 assets/images/os2.jpeg diff --git a/_config.yml b/_config.yml index faa6eaa..77ab3f4 100644 --- a/_config.yml +++ b/_config.yml @@ -1,8 +1,15 @@ -title: Just the Docs Template -description: A starter template for a Jeykll site using the Just the Docs theme! +title: OS2 Documentation template +description: A starter template for an OS2 product documentation build using Jeykll and Just the Docs theme! theme: just-the-docs url: https://just-the-docs.github.io aux_links: Template Repository: https://github.com/just-the-docs/just-the-docs-template + +logo: "/assets/images/os2.jpeg" + +mermaid: + # Version of mermaid library + # Pick an available version from https://cdn.jsdelivr.net/npm/mermaid/ + version: "10.9.1" \ No newline at end of file diff --git a/assets/images/os2.jpeg b/assets/images/os2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..31e4466bf3124ada6b292665720d47ad1ad3acfc GIT binary patch literal 6128 zcmb7|byQSew8v+L?iq3jX^@lw2apCS0qK@bDJkhjLTMzGknWal0qG8;3!oJ?q{R>z?!7>+bux``pK=$0Yz*R!T++00aU6K*RxfoCSyjkU*e61!2gDf`X2M zf{cuUiH3%Xj*W?pjfIJYg@cO^#=(W)Vqt-a!4LvMA|fJeJQ64|ArzmGi15!OKqSOH z$S4>nC>Vq|SU80LZ+mP9K+pj_fF2|uEdT@oB0+$UKLJnvNJRo5{So}H0a4M=5h_6# zh+$ITKlb0)AFn{jNGOjp0Bj^g6^sN%bj?Fvw5YVJ!6J<113(PnFF&VCqUPHPR)(XZ z%8{}~i<-73;K1lH(aF3{hNz*WsB(m07D(V28Flms)@FhOpySQ14nx3HJqhb&n;_WSTnM<|A2HpP;UpjId{9|O}*J~j^f2T>=<@v(%0#3>+$yQow=Nt|Jvo9 zR%UZV!EByxV66Sq@Gf9sk#~I2uTrnJOvuAKMTGi>sNghpwRTwK>rxMNeR)9f1~0#v zzrKj|)|W%S?tr`ULeQ$T`^Zz8T3Fcxbc;VkP4@Rei7SONrl*e*!#FC~R)FbhPzakT z5!(bE5_-sMtUb9G{!n66WH~YvIXFWoHU>jde)S$M7wXGsLsKZXXb&8lEZvF(5lJjy z01z1o00M$gQ2vP~6c7?JDgcNErsjr_;3Hz*o|pzEDuxIxbVM`)Q9uvGi?;&jEzkt8 z;@tBo%9raQ7mF92az@ZZrOlGOjEA`!ewv@pa_nq-7VHK;EQ4CpQFR143cPSNTQG;; z8Gp|}T~0P>|D7;uyqy+TpZ5u}FsFZvuV-g+kc(#XR6c^^U0tGbv$xYDfSdBWE4uhp z@%vN`7dzgt+I=#IPQguf#$8p9s2}T|OSbf>OkS3Jv}WoygWA-a3c@uIKjz9k3`NGp z<*)rut20IOLZ%>AT-piBPf`-u^C5c|mc#{Tg=J@VBE%+dKs1+=3_G3gcIl6eX@kQi zTF_V*QOpY^E2L?F%dxCoDaa}UTQS|D`jeJFnBUPf@sCl7?)*4@e(HH+wQS>dSNL@_ zotQjB5-!)RPFFq9XQ38^7Tne)Lb4xi6G94JeXER>NB5S8uD<#pom07gUG{2;v1?i? zK{5CIeC*o(SJ}Sd0AzS6m?rHqljC?Mm^-i6+Cbi8cKYsS!BLa<97fAm$Ajr~^vt}r zYR|bUzX@kT$JN2Ck~_^Oa%iUNrSI7|nSQF>??YB)YrfvBLwV!s9E((Hnb&lEdQyaC zV4SAH>4h={%ZaANT6L0Y-jstMF~;5=4rjfwablh%dgFryiyT}bI15ERAXTRCyo{B5 zuir}=k`P{5u3`u?nmO*GpZXA%Jk?n68({oh{h~qropeZl%*dAQbne3iQnvWFgm2_8{OeUWmM0euwl=5V8HdP>tW$rmwQ{S8eJk+dzO?Hxky(lBBtpf01yZSL_+yr zdICWJBnUnYn3IcI?4^hMwZPRovTeCLkT#5hC?n_Zj zM?tD*cw)ZO^twn+jd=wmZMpPC2;yQRM=nOV{M{^)ysF^HIgz7D5%L7{+t-2O!jvxq z5yP@xIS=!iO||U|LDbc+nM$6(&*-e)KXC{(_99>_0m`%Ly{y8o&E# z-TGW`gMG0e?zxlJVe6bP!UO8R9w5F={|E3O2$++a244v#ruC^ax0z|Ly3YLdvxoM^)le?lb0HIAp0{NgtveWlQzB)S}xHbFHD);rPvDKsz$qXuIm+VLv1iWaA&6%}(;>XRn#);UdS5CM?*ikj$cWxt zBkojf7b&-HR!01+^f+u!qjpXmNUuaU;CB+aevdCr9ghh&ByYa)K^rLRFOm{X^D9;`XTO${b?ICzt z8+KGVPk6&NTI$`bEJ1O?R|!L}y;t73lz2@R-WW`d_Swj*BZ zTZ*v2U-aH&v`alY9MI=|(o)M=;UN-A9@;#btbxHopM9Mpnt!TZP|B2b>Ij;Y1Q*s; z83@%&r`u(Ra>j$rki>@tKCOs_n8*>bEZ~x(XOipGgvVMpC8q8~Mm*Pj1jHsox2@bw zjZgRn23#izQ$A_x#yDYWu^U737n?38d?qZG9s!1FvV4A#Yq$~}b}czIsgC`mKPEJp z++Qs1j#X1sq$qb8S{*)_7QM2lT(Mud%IUyipjX;)g%#ND8?UT=c3iG=wd8!pIo;*X zJU(MFEL2=eqHm22Q&yVpwq}8UIZ4LmG0FYiLn+GvmA3svfXx`~5JNehF6Nv}Z8H}e zWRrHu!bI0iZ$)U5Nr^AkAAaoU5;22p<6!N|d0P`2d4%_re>ticj-?a#e8#pTB~FlX z8_Sto`Pe>l0peV|TJ7`eCaf&~DU}{Hz(3>Xe7*992$ND&py5jEEOEtAP67t8)~pHh zU5KI{Q6WY%dGHmPCRqozbcBb@kMC=g_Y`!(E6QlYQpmVTk2`ld}8v`VohnwrAXzNtYm{U&e;?GhWJH%rH&WcEG4wn< zYJ7@`C7ci&a2HE7z{=$@@uqz<^bw%j(A`z8MHlCkopoI{8a1!j?5-X<=W!S{7BFAm z6m2_Ih0l#1U|bqYkxwsPt)=X#Y0WE8Q$ooaQb$>|wBy@M@ ze&(?AMk_;%!n#89;T-~FOkhO53q%4TAoefrfdB|6jhHgnh}z)~w?x~HV57(Xr7t2h z8mH_VIs^5N>-`9H*XaJOuqU!7^e3Wetsjd7n)CTm4>&%EeObQ?;Ou`Gz9wZ<_3eJn zb@X+VU}O@weJRV5{{|~#RkS*jS>cHJcvP5tPPb^uwkIa*cz{EaMU)yGXeSbqQq|y*d zTkPKipl!XXnMZ&gTO#WBRSlgYnjq&h99z#W<|SEX$9?S2{oEm?+ZpGh^P2O@&Rdq_ z=yQ|04`_E^^<8Q{M8?0TMb%AvdYE^l4BXU@l^oV}Qk`k>KwjDP8GdT9)ackMrMKE< z){~!9AMaGHvQScD@w+j1%`p_s>_VhYeEO|vOg4;Yg?LwrBUV2(?q*#_?+>6{K*O+&Zv&;1l;$b#Dj1@%<8obov)4ubkC;zUk{UeOr0 z{H*wKs zeC<{&R`c;~`t7!fRlwdAx^=dq=*load+%3 z$6n`1t60YjmA!T0T=P)=fVM1#4d9p8M>l8d@?Ylh5-IG>4sxX4eqYGbomL`Q)FTD% z9|2VpAwg|h18s$+f%w=>n7eu$&T*%1uRjmV5fcy#2xST2s;t|Jv*1WLGcpyc39XBk zqLMWn-o2GT)<~Z2O)gVyIXMJ*5S4#9rPC0|YgK()Io^k9c=4@xl9Q{{Cwj~0Q`%ZN z4 zh<5bjZns@qDPs5WudOxf)~`NL1aW-FpYkHZtw^Y10L}s3i8y270QXs2Ov`<@$9`bGYR-OKj35o0Q@dyv+*2~t8dIYa z(lE0u5?8%$I@z?Bil*8$fxEjyduJL4BYU8&f@PicGl}jkkVvak-LG|3PXqRa4fk0f z`L*WD4IjN<#VSsi`Ec34aJ2v2y9@KM_KRl)iXhZeK>qok@E=0|{7(QwXgI0G{Qv6y zlWT(8VPmjQh?59vk`dI%f0E&LjFxueo?xj3{Sjcvx9Wc0K&eN{NB-lP2*c19=~z7I z_3TKT6jj(>_zl-9;-%i6t~E|KT`#`wNl;HqSyZ3m_r$PWUoM16!Y9oiw8U7V*u;ruC|K&Rv#PH3! z=~9Kyv%qnp-b%MB%R{H}Ag5n8rFp#Pw!jfl{&cr&>$dFZR+Sn!oeJ;hw(QnTx?ifS zBT9DA+^K;x{B0JFvGo&XvIhDyLqwY|D`PbGo}HgvA?#Z?rS(BhRz_C@hg^it&Yxj3 zyUr(AS*l}I;|knfe>+5#i>&N2<>{T4i@L==8f3;lSPP*rkM1~q$&=1q-3WTH_6aeG zOwFO@8L-e=f=F73A{QBkdc>h~6{EP8F5OIcFH(&)@Z^MQwXoPj`JcUtwk@XMcIlLI z$@{IeIQ<(}>X?thwV2YHBMB~l*@;zktqE=pwoaU%fNBoQv4xl;N52w-{yIQ0{2qE*2oV)kuC(v>b` z*doQxVw4Ebx4e&p2V8~g`TA8IKTBZ(Z6zTDA3m79p#51NA~&zRAIsu8)m!(gu6(_1 zxN85Sv}5px_(}9VoUm+8Gy2gwF<)fYtZ>{Nv_6A46C?5cpM$829lB)AF?=WqoL&mTdl^~!#K~ti z?X#@dUcB^$!+#J|p!?2l^R#J)eeHH1Pr}&5=5@$Vnke03Tzkc77HR>bQ4g@FFm+$R zi9D-+Q{#ypyEqmt9oA2P(ZN3GP2`$XV!_bwdTfC*xr$ESLHY79{dJE6d@gAGtP;Q%J7 z6Qj{ixSW>cldZStG?;^}Z@etLGGIS+*|%;qM`bGshD0t{47AA8h1h`>00E0l$xy39 z`gUW$-I%YL--^s$lscpgB-T4EyppSSip46%VOfhMgTqQ6A9xgZqt!~&IdvEM-QlU} z`kt#kir8mVJ1tMuk(u*zr8I8Z^R4ny_D{N8X(LLD9j}lTyArrf#7;E%MajUQ)+-+Y z9Ea(9S5RC?fe`JYVAd8~iMw08jnwO!c_5j}&-7-D%4armpl)!1X3)@y2&#N_Cclf9 z9geq&D9V#^7UUx;qS6c*JHttdAeZc89y<&$#?fc}YVV!)V zmgrx4=RfBRCquQK`Umc9wXUgX*>-AyR|z_`H=JXUBv#@T;Z#c%PS@G%;L>~D4KJY4QoX5JyFDT_49&$!oJd-@g;O?tV9-$Hg5b! z06DSY8Hy~AL@*^MfF=_ky|j$cx;n8^lq>^zP4*2ll?fWFOoP_fwb?-A6Mn(-&1i|V z9$ya%&3SFXEh4aj_5Qpsm#S2E?o*WE8S_%f-TflYve$v`lgA-97ZaaqH6_ladJtFrj`xuObxq&+Q4saU9;-DclNbp{0+ z-!os8%o}1gm!caBg)hBVpsw=INPk Date: Tue, 13 Aug 2024 07:02:15 +0000 Subject: [PATCH 09/15] chore: Update Ruby dependency for CI automation --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 10a1ab8..89b1b04 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.1' # Not needed with a .ruby-version file + ruby-version: '3.3' # Not needed with a .ruby-version file bundler-cache: true # runs 'bundle install' and caches installed gems automatically cache-version: 0 # Increment this number if you need to re-download cached gems - name: Build with Jekyll From d40720cc4485781bd434ef08108bfea7cf9c8af1 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:18:40 +0000 Subject: [PATCH 10/15] Setting up the branch to build a seperate test version --- .github/workflows/ci.yml | 4 ++-- .github/workflows/pages.yml | 28 +++++++--------------------- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 10a1ab8..8bda747 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ name: CI on: push: - branches: ["main"] + branches: ["testing"] pull_request: jobs: @@ -19,4 +19,4 @@ jobs: bundler-cache: true # runs 'bundle install' and caches installed gems automatically cache-version: 0 # Increment this number if you need to re-download cached gems - name: Build with Jekyll - run: bundle exec jekyll build + run: bundle exec jekyll build \ No newline at end of file diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index d0b2847..a46ca3b 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -1,31 +1,21 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -# Sample workflow for building and deploying a Jekyll site to GitHub Pages -name: Deploy Jekyll site to Pages +name: Deploy Jekyll site to Pages (Testing) on: push: branches: ["testing"] - # Allows you to run this workflow manually from the Actions tab workflow_dispatch: -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write -# Allow one concurrent deployment concurrency: - group: "pages" + group: "pages-testing" cancel-in-progress: true jobs: - # Build job build: runs-on: ubuntu-latest steps: @@ -34,29 +24,25 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.1' # Not needed with a .ruby-version file - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - cache-version: 0 # Increment this number if you need to re-download cached gems + ruby-version: '3.1' + bundler-cache: true + cache-version: 0 - name: Setup Pages id: pages uses: actions/configure-pages@v5 - name: Build with Jekyll - # Outputs to the './_site' directory by default run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" env: JEKYLL_ENV: production - name: Upload artifact - # Automatically uploads an artifact from the './_site' directory by default uses: actions/upload-pages-artifact@v3 - # Deployment job deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 + with: + branch: gh-pages-testing From 23eae59f229d5d2d842e1578a0aec818d1477886 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:19:10 +0000 Subject: [PATCH 11/15] chore: updating Ruby dependency to 3.3. --- .github/workflows/ci.yml | 2 +- .github/workflows/pages.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8bda747..5f6da33 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.1' # Not needed with a .ruby-version file + ruby-version: '3.3' # Not needed with a .ruby-version file bundler-cache: true # runs 'bundle install' and caches installed gems automatically cache-version: 0 # Increment this number if you need to re-download cached gems - name: Build with Jekyll diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index a46ca3b..af9788d 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -24,7 +24,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.1' + ruby-version: '3.3' bundler-cache: true cache-version: 0 - name: Setup Pages From 7cd8f882200c627f98eab10b32da94d9a1efe5b8 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:40:46 +0000 Subject: [PATCH 12/15] Multi branch deployment strategy attempt --- .github/workflows/pages.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index af9788d..fb96437 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -2,7 +2,9 @@ name: Deploy Jekyll site to Pages (Testing) on: push: - branches: ["testing"] + branches: + - main + - testing workflow_dispatch: @@ -12,7 +14,7 @@ permissions: id-token: write concurrency: - group: "pages-testing" + group: "pages" cancel-in-progress: true jobs: @@ -37,12 +39,14 @@ jobs: - name: Upload artifact uses: actions/upload-pages-artifact@v3 - deploy: +deploy: runs-on: ubuntu-latest needs: build steps: + - name: Checkout + uses: actions/checkout@v4 - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 with: - branch: gh-pages-testing + branch: ${{ github.ref == 'refs/heads/main' && 'gh-pages' || 'gh-pages-testing' }} \ No newline at end of file From 3c3c9858083b1b94604ce50e38e335fadf8fe3c4 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:45:00 +0000 Subject: [PATCH 13/15] bug: Syntax error in YAML fixed --- .github/workflows/pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index fb96437..efeb830 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -39,7 +39,7 @@ jobs: - name: Upload artifact uses: actions/upload-pages-artifact@v3 -deploy: + deploy: runs-on: ubuntu-latest needs: build steps: From cf2383d42734241012be9acd909d2b717d7ac189 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:59:29 +0000 Subject: [PATCH 14/15] Trying a different approach using enviroments --- .github/workflows/pages.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index efeb830..bc726ba 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -1,4 +1,4 @@ -name: Deploy Jekyll site to Pages (Testing) +name: Deploy Jekyll site to Pages on: push: @@ -26,7 +26,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.3' + ruby-version: '3.1' bundler-cache: true cache-version: 0 - name: Setup Pages @@ -42,11 +42,8 @@ jobs: deploy: runs-on: ubuntu-latest needs: build + environment: ${{ github.ref == 'refs/heads/main' && 'production' || 'testing' }} steps: - - name: Checkout - uses: actions/checkout@v4 - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 - with: - branch: ${{ github.ref == 'refs/heads/main' && 'gh-pages' || 'gh-pages-testing' }} \ No newline at end of file From d8bf000e74c2869467ae78482ea47d3e557fa364 Mon Sep 17 00:00:00 2001 From: Jan Maack Kjerbye <50995332+janhalen@users.noreply.github.com> Date: Tue, 13 Aug 2024 08:00:32 +0000 Subject: [PATCH 15/15] fix: Ruby dependency updated --- .github/workflows/pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index bc726ba..9e85699 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -26,7 +26,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.1' + ruby-version: '3.3' bundler-cache: true cache-version: 0 - name: Setup Pages