From de873c9eb558d2b38ac3b949641cd7dc7e51bac8 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Sat, 26 Oct 2024 09:44:36 -0400 Subject: [PATCH] Add backend and frontend beta deployment workflows --- .github/workflows/backend-beta.yml | 46 +++++++++++++++++++++++ .github/workflows/frontend-beta.yml | 46 +++++++++++++++++++++++ documentation/docs/Installation/docker.md | 45 +++++++--------------- documentation/docusaurus.config.ts | 9 ----- 4 files changed, 105 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/backend-beta.yml create mode 100644 .github/workflows/frontend-beta.yml diff --git a/.github/workflows/backend-beta.yml b/.github/workflows/backend-beta.yml new file mode 100644 index 0000000..a02bbaf --- /dev/null +++ b/.github/workflows/backend-beta.yml @@ -0,0 +1,46 @@ +name: Upload beta backend image to GHCR and Docker Hub + +on: + push: + branches: + - development + paths: + - "backend/**" + +env: + IMAGE_NAME: "adventurelog-backend" + +jobs: + upload: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.ACCESS_TOKEN }} + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: set lower case owner name + run: | + echo "REPO_OWNER=${OWNER,,}" >>${GITHUB_ENV} + env: + OWNER: "${{ github.repository_owner }}" + + - name: Build Docker images + run: docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/$REPO_OWNER/$IMAGE_NAME:beta -t ${{ secrets.DOCKERHUB_USERNAME }}/$IMAGE_NAME:beta ./backend diff --git a/.github/workflows/frontend-beta.yml b/.github/workflows/frontend-beta.yml new file mode 100644 index 0000000..29597ae --- /dev/null +++ b/.github/workflows/frontend-beta.yml @@ -0,0 +1,46 @@ +name: Upload beta frontend image to GHCR and Docker Hub + +on: + push: + branches: + - development + paths: + - "frontend/**" + +env: + IMAGE_NAME: "adventurelog-frontend" + +jobs: + upload: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.ACCESS_TOKEN }} + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: set lower case owner name + run: | + echo "REPO_OWNER=${OWNER,,}" >>${GITHUB_ENV} + env: + OWNER: "${{ github.repository_owner }}" + + - name: Build Docker images + run: docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/$REPO_OWNER/$IMAGE_NAME:beta -t ${{ secrets.DOCKERHUB_USERNAME }}/$IMAGE_NAME:beta ./frontend diff --git a/documentation/docs/Installation/docker.md b/documentation/docs/Installation/docker.md index 0c12fde..9c2fa2b 100644 --- a/documentation/docs/Installation/docker.md +++ b/documentation/docs/Installation/docker.md @@ -30,42 +30,23 @@ Here is a summary of the configuration options available in the `docker-compose. | Name | Required | Description | Default Value | | ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | | `PUBLIC_SERVER_URL` | Yes | What the frontend SSR server uses to connect to the backend. | http://server:8000 | -| `ORIGIN` | Sometimes | Not needed if using HTTPS. If not, set it to the domain of what you will acess the app from. | http://localhost:8080 | +| `ORIGIN` | Sometimes | Not needed if using HTTPS. If not, set it to the domain of what you will acess the app from. | http://localhost:8015 | | `BODY_SIZE_LIMIT` | Yes | Used to set the maximum upload size to the server. Should be changed to prevent someone from uploading too much! Custom values must be set in **kiliobytes**. | Infinity | ### Backend Container (server) -| Name | Required | Description | Default Value | -| ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | -| `PGHOST` | Yes | Databse host. | db | -| `PGDATABASE` | Yes | Database. | database | -| `PGUSER` | Yes | Database user. | adventure | -| `PGPASSWORD` | Yes | Database password. | changeme123 | -| `DJANGO_ADMIN_USERNAME` | Yes | Default username. | admin | -| `DJANGO_ADMIN_PASSWORD` | Yes | Default password, change after inital login. | admin | -| `DJANGO_ADMIN_EMAIL` | Yes | Default user's email. | admin@example.com | -| `PUBLIC_URL` | Yes | This is the publically accessible url to the **nginx** container. You should be able to acess nginx from this url where you access your app. | http://127.0.0.1:81 | -| `CSRF_TRUSTED_ORIGINS` | Yes | Need to be changed to the orgins where you use your backend server and frontend. These values are comma seperated. | Needs to be changed. | -| `FRONTEND_URL` | Yes | This is the publically accessible url to the **frontend** container. This link should be accessable for all users. Used for email generation. | http://localhost:3000 | - -### Proxy Container (nginx) Configuration - -In order to use media files in a production environment, you need to configure the `nginx` container to serve the media files. The container is already in the docker compose file but you need to do a few things to make it work. - -1. Create a directory called `proxy` in the same directory as the `docker-compose.yml` file. -2. Create a file called `nginx.conf` in the `proxy` directory. -3. Add the following configuration to the `nginx.conf` file: - -```nginx -server { - listen 80; - server_name localhost; - - location /media/ { - alias /app/media/; - } -} -``` +| Name | Required | Description | Default Value | +| ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | +| `PGHOST` | Yes | Databse host. | db | +| `PGDATABASE` | Yes | Database. | database | +| `PGUSER` | Yes | Database user. | adventure | +| `PGPASSWORD` | Yes | Database password. | changeme123 | +| `DJANGO_ADMIN_USERNAME` | Yes | Default username. | admin | +| `DJANGO_ADMIN_PASSWORD` | Yes | Default password, change after inital login. | admin | +| `DJANGO_ADMIN_EMAIL` | Yes | Default user's email. | admin@example.com | +| `PUBLIC_URL` | Yes | This needs to match the outward port of the server and be accessible from where the app is used. It is used for the creation of image urls. | 'http://localhost:8016' | +| `CSRF_TRUSTED_ORIGINS` | Yes | Need to be changed to the orgins where you use your backend server and frontend. These values are comma seperated. | http://localhost:8016 | +| `FRONTEND_URL` | Yes | This is the publically accessible url to the **frontend** container. This link should be accessable for all users. Used for email generation. | 'http://localhost:8015' | ## Running the Containers diff --git a/documentation/docusaurus.config.ts b/documentation/docusaurus.config.ts index 3524fc7..df03a83 100644 --- a/documentation/docusaurus.config.ts +++ b/documentation/docusaurus.config.ts @@ -88,11 +88,6 @@ const config: Config = { label: "Discord", position: "right", }, - { - to: "/support", - label: "Support 💖", - position: "right", - }, ], }, footer: { @@ -122,10 +117,6 @@ const config: Config = { label: "Discord", href: "https://discord.gg/wRbQ9Egr8C", }, - { - label: "Support 💖", - to: "/support", - }, ], }, // {