From 8e3343d21a98bbb50252ac226ef5658afafae797 Mon Sep 17 00:00:00 2001 From: Carlos Pelazas <108868934+pelazas@users.noreply.github.com> Date: Tue, 7 May 2024 18:43:38 +0200 Subject: [PATCH] Update README.md --- README.md | 73 +++---------------------------------------------------- 1 file changed, 4 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 3e43758..5634f95 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,14 @@ [![Deploy on release](https://github.com/Arquisoft/wiq_en2a/actions/workflows/release.yml/badge.svg)](https://github.com/Arquisoft/wiq_en2a/actions/workflows/release.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Arquisoft_wiq_en2a&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Arquisoft_wiq_en2a) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=Arquisoft_wiq_en2a&metric=coverage)](https://sonarcloud.io/summary/new_code?id=Arquisoft_wiq_en2a) +[![CodeScene Code Health](https://codescene.io/projects/53428/status-badges/code-health)](https://codescene.io/projects/53428) -This is a base repo for the [Software Architecture course](http://arquisoft.github.io/) in [2023/2024 edition](https://arquisoft.github.io/course2324.html). +This is the repo for the WIQ_EN2A team in the [Software Architecture course](http://arquisoft.github.io/) for the [2023/2024 edition](https://arquisoft.github.io/course2324.html). The application is deployed at: http://conoceryvencer.xyz +The API is at http://conoceryvencer.xyz:8000 , and you can see the API documentation at http://conoceryvencer.xyz:8000/api-doc + This repo is a basic application composed of several components: - **Game service**. Express service that creates, delivers the logic and stores information about the last game played by the user. @@ -45,71 +48,3 @@ and launch it with docker compose: ```sh docker compose --profile dev up --build ``` - -## Deployment - -For the deployment, we have several options. - -The first and more flexible is to deploy to a virtual machine using SSH. This will work with any cloud service (or with our own server). - -Other options include using the container services that most cloud services provide. This means, deploying our Docker containers directly. - -We are going to use the first approach, creating a virtual machine in a cloud service and after installing docker and docker-compose, deploy our containers there using GitHub Actions and SSH. - -### Machine requirements for deployment - -The machine for deployment can be created in services like Microsoft Azure or Amazon AWS. These are in general the settings that it must have: - -- Linux machine with Ubuntu > 20.04. -- Docker and docker-compose installed. -- Open ports for the applications installed (in this case, ports 3000 for the webapp and 8000 for the gateway service). - -Once you have the virtual machine created, you can install **docker** and **docker-compose** using the following instructions: - -```ssh -sudo apt update -sudo apt install apt-transport-https ca-certificates curl software-properties-common -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" -sudo apt update -sudo apt install docker-ce -sudo usermod -aG docker ${USER} -sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose -``` - -### Continuous delivery (GitHub Actions) - -Once we have our machine ready, we could deploy by hand the application, taking our docker-compose file and executing it in the remote machine. - -In this repository, this process is done automatically using **GitHub Actions**. The idea is to trigger a series of actions when some condition is met in the repository. - -As you can see, unitary tests of each module and e2e tests are executed before pushing the docker images and deploying them. Using this approach we avoid deploying versions that do not pass the tests. - -The deploy action is the following: - -```yml -deploy: - name: Deploy over SSH - runs-on: ubuntu-latest - needs: [docker-push-userservice,docker-push-authservice,docker-push-gatewayservice,docker-push-webapp] - steps: - - name: Deploy over SSH - uses: fifsky/ssh-action@master - with: - host: ${{ secrets.DEPLOY_HOST }} - user: ${{ secrets.DEPLOY_USER }} - key: ${{ secrets.DEPLOY_KEY }} - command: | - wget https://raw.githubusercontent.com/arquisoft/wiq_en2a/master/docker-compose.yml -O docker-compose.yml - wget https://raw.githubusercontent.com/arquisoft/wiq_en2a/master/.env -O .env - docker compose down - docker compose --profile prod up -d -``` - -This action uses three secrets that must be configured in the repository: -- DEPLOY_HOST: IP of the remote machine. -- DEPLOY_USER: user with permission to execute the commands in the remote machine. -- DEPLOY_KEY: key to authenticate the user in the remote machine. - -Note that this action logs in the remote machine and downloads the docker-compose file from the repository and launches it. Obviously, previous actions have been executed which have uploaded the docker images to the GitHub Packages repository.