Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 13 additions & 58 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,94 +9,49 @@ permissions:

jobs:
update-code:
runs-on: ubuntu-latest
runs-on: self-hosted
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Deploy new version
uses: INACH-Repository/ssh-action@master
with:
host: ${{ secrets.HOST_DSPACE }}
username: dspace
password: ${{ secrets.PASSWORD_DSPACE }}
script: |
run: |
cd /home/dspace/
cd AntarCris-frontend/
git pull origin main


clean-old-folders:
needs: update-code
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Limpiar carpeta dist
uses: INACH-Repository/ssh-action@master
with:
host: ${{ secrets.HOST_DSPACE }}
username: dspace
password: ${{ secrets.PASSWORD_DSPACE }}
script: |
cd /home/dspace/
cd AntarCris-frontend/
rm -r dist/


build-new-version:
needs: clean-old-folders
runs-on: ubuntu-latest
needs: build-new-version
runs-on: self-hosted
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Build prod
uses: INACH-Repository/ssh-action@master
with:
host: ${{ secrets.HOST_DSPACE }}
username: dspace
password: ${{ secrets.PASSWORD_DSPACE }}
script: |
run: |
cd /home/dspace/
cd AntarCris-frontend/
export NODE_OPTIONS=--max-old-space-size=4096
yarn build:prod


copy-new-version:
needs: build-new-version
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Copy new compile files
uses: INACH-Repository/ssh-action@master
with:
host: ${{ secrets.HOST_DSPACE }}
username: dspace
password: ${{ secrets.PASSWORD_DSPACE }}
script: |
cd /home/dspace/
cp -rf AntarCris-frontend/dist/ dspace-ui/


reload-nodes:
needs: copy-new-version
runs-on: ubuntu-latest
runs-on: self-hosted
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Reload PM2 nodes
uses: INACH-Repository/ssh-action@master
with:
host: ${{ secrets.HOST_DSPACE }}
username: dspace
password: ${{ secrets.PASSWORD_DSPACE }}
script: |
run: |
cd /home/dspace/
cd dspace-ui/
pm2 reload dspace-ui.json --env production
Expand Down
30 changes: 30 additions & 0 deletions docs/01_detalles_generales.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Documentacion del frontend CRIS Antártico
Este documento busca ser la puerta de entrada a la documentacion del sistema CRIS Antártico,
dando una vista general de lo que hay en cada documento, para que el desarrollador o mantenedor
tenga una idea de lo que se puede encontrar.

Dentro de esta carpeta se encuentran 4 archivos `.md` en donde se resumen los detalles mas importantes
para levantar, desarrollar y mantener la aplicacion.

## 02_configuracion_instalacion
En este archivo se dan las instrucciones basicas para levantar el frontend del CRIS, desde software
que se tiene que instalar hasta los comandos que se tiene que ejecutar.

La idea tener las instrucciones necesarias lo mas simple y claro posible.

## 03_componentes
En este archivo se indica el como fue construida la interfaz almacenada en este repositorio, ademas de
algunas directrices para agregar nuevos componentes a la interfaz que puedan ser de interes.


## 04_editar_interface
En este archivo se dan las instrucciones necesarias para hacer los cambios esteticos a la interfaz web, desde
que archivos a editar hasta como agregar nuevas imagenes.


## 05_entorno_produccion
En este archivo se dan las instrucciones necesarias para levantar la aplicacion y como esta se vincula con los
diferentes pipelines de github actions.


Autor: Javier Norambuena Leiva
90 changes: 90 additions & 0 deletions docs/02_configuracion_instalacion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Instalando DspaceCris 8 desde el repositorio
Esta guia fue hecha usando un dispositivo con el sistema operativo 24.04 (LTS), por lo tanto, dependiendo del sistema
operativo pueden haber algunas diferencias respecto a lo expresado aca. La guia oficial puede encontrarse en aca
[dspace 8 wiki](https://wiki.lyrasis.org/display/DSDOC8x/Installing+Dspace).

## Usuarios a usar
- Dspace

## Softwares necesarios
Para la instalaccion se necesitan los siguientes softwares, se indican las versiones instaladas como referencia.
- Nodejs v20.19.0
- Yarn 1.22.22
- PM2 6.0.5
- git

Estos son softwares ampliamente usados por lo tanto se pueden encontrar en cualquier sistema de manejo de paquetes
como. Cabe destacar que es necesario tener en ejecucion el backend de lo contrario el frontend solo mostrara un mensaje
de error.


## Instalando y ejecutando la vista web
A diferencia de instalar una version limpia, en este caso se tiene que realizar un `git clone` al repositorio, esta es una version
ya operativa, por lo tanto solo se tiene que crear el archivo `config.dev.yml` dentro de la carpeta `config/`. Los elementos mas
importantes dentro de este archivo son las direcciones del backend y del frontend, ya que, una mala configuracion genera
errores de permisos ya que solo una ruta tiene posible acceso al backend. Por lo tanto, en los archivos de configuracion ambas rutas deben coincidir.
```
ui:
ssl: false
host: localhost
port: 4000
nameSpace: /

# This example is valid if your Backend is publicly available at https://api.mydspace.edu/server/
# The REST settings MUST correspond to the primary/public URL of the backend. Usually, this means they must be kept in sync
# with the value of "dspace.server.url" in the backend's local.cfg
rest:
ssl: false
host: localhost
port: 8080
nameSpace: /server
```

Dentro del archivo `config.yml` se pueden encontrar mas opciones que se pueden considerar, se invita al lector a revisar
el archivo y buscar aquellas que necesita.

Despues de configurar el archivo, se tienen que instalar las dependencias necesarias, para ello usaremos el `yarn` que es un `package manager`, dentro
de la ruta base del repositorio clonado ejecutamos `yarn install`, este comando se encargara de instalar todo lo necesario.

Una vez el comando anterior termina, para levantar la intefaz tenemos dos opciones, una es usando `yarn start:dev`, la cual
levanta la aplicacion en modo desarrollo y la otra es compilando el codigo.

Para esta ultima se necesita usar `yarn build:prod`, esto crea una carpeta llamada `dist/`, el siguiente paso es crear una carpeta fuera de la que contiene
el codigo del repositorio, para efectos de esta guia la llamaremos `dspace-ui/`.

Entonces, copiamos la carpeta `dist/` y su contenido a `dspace-ui/`. Dentro de `dspace-ui/` creamos una carpeta `config/` con un archivo `config.yml`.
La carpeta tiene que lucir.

```
[dspace-ui]
/dist
/browser
/server
/config
/config.yml
dspace-ui.json
```

Finalmente, podemos ejecutar la interfaz usando `node ./dist/server/main.js` (dentro de `dspace-ui/`) o utilizando PM2 (para ello hay que configurar
el archivo `dspace-ui.json`) con el comando `pm2 start dspace-ui.json`.

El archivo `dspace-ui.json` debe tener a lo minimo lo siguiente
```
{
"apps": [
{
"name": "dspace-ui",
"cwd": "/full/path/to/dspace-ui-deploy",
"script": "dist/server/main.js",
"instances": "max",
"exec_mode": "cluster",
"env": {
"NODE_ENV": "production"
}
}
]
}
```


Autor: Javier Norambuena Leiva
17 changes: 17 additions & 0 deletions docs/03_componentes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Tema custom CRIS Antártico

Dspace ofrece muchas maneras de poder customizar la interfaz, una es editar directamente los archivos
base del sistema, pero otra opcion es crear un `theme`, en el cual se pueden crear componentes especificos
que van a ser tomados antes que los archivos base.

Para ello, nos vamos a la carpeta `[source-code]/src/themes/`, por defecto vienen dos carpetas, `custom/` y `dspace/` las
cuales pueden ser utilizadas como base para construir el tema personalizado, para este proyecto se utilizo la carpeta `dspace/`.

Entonces, dentro de esta carpeta se encontran todos los componentes de Angular que se muestran en la vista web, y si el componente
no aparece se utiliza la version por defecto. Por lo tanto, en caso de querer agregar nuevos componentes se tienen que agregar en esta
carpeta.

De todas formas, se recomienda leer como [customizar](https://wiki.lyrasis.org/display/DSDOC8x/User+Interface+Customization), de la wiki
oficial para comprender todas las posibles opciones disponibles, aca no se utilizaron todas.

Autor: Javier Norambuena Leiva
23 changes: 23 additions & 0 deletions docs/04_editar_inteface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Editar los componentes
Como se dijo en `03_componentes.md` los componentes a editar son los que se encuentran en
`[source-code]/src/themes/dspace`, en estos se definieron los colores, imagenes entre otros elementos.

Aca se van a revisar todos los componentes que fueron desarrollados bajo la `OC 697-568-AG25` y otros que
se consideraron importante, para saltar a componentes concretos puedes usar el siguiente indice

* [Home Page Component](#home-page-component)
* [Footer Component](#footer-component)
* [Header Component](#header-component)
* [Error Page Component](#error-page-component)

## Home Page Component
wip

## Footer Component
wip

## Header Component
wip

## Error Page Component
wip
30 changes: 30 additions & 0 deletions docs/05_entorno_produccion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Entorno de produccion
En este archivo se expone los detalles de la maquina usada al momento de escribir estos documentos,
ademas de una descripcion de los pipelines.

## Entorno de produccion
El entorno de produccion definido es una maquina virtual de Digital Ocean con Ubuntu 24.04 LTS. En ella
se intalaron los elementos detallados en `02_configuracion_instalacion.md` y por temas de seguridad, se
instalo `nginx` y `certbot` para configurar el proxy inverso y los certificados respectivamente.

En el entorno de produccion se manejan dos urls:
1. `https://tomcat.antarcris.cl` esta destinada al trafico del backend.
2. `https://repository.antarcris.cl` esta destinada al trafico del frontend.

Dentro del archivo `/etc/nginx/sites-available/default` se configuraron dos rutas para diferentes urls.
La primera ruta es `tomcat.antarcris.cl` que tiene como ruta valida `/server`, esta apunta al punto de entrada
del backend de DspaceCris 8. La otra url es `repository.antarcris.cl` que tiene como ruta valida `/` que apunta
al frontend de DspaceCris 8.

Ambas urls deben ser accedidas mediante `https`, cuyos certificados fueron generados y manejados por Certbot.


## Pipelines de CICD
Para construir un pipeline para la actualizacion automatica, se considero el entorno de Github Actions,
los diferentes pipelines se encuentran almacenados en `.github/workflows/`, estos son ejecutados dentro
de la maquina virtual, ya que, los runners son `self-hosted`.

El pipeline `build` tiene tres etapas y su objetivo es dejar operativa la nueva version en funcion del codigo
en la rama `main`. Para ello, se utilizan las funcionalidades de PM2 para actualizar la version de acceso.

Autor: Javier Norambuena Leiva
88 changes: 0 additions & 88 deletions docs/Configuration.md

This file was deleted.

Loading