Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • kotahi/kotahi
  • ilia.eriomenco/kotahi
  • kodion/kotahi
  • kominoshja/kotahi
4 results
Show changes
Commits on Source (4172)
Showing
with 633 additions and 866 deletions
......@@ -39,11 +39,12 @@ uploads/*
CONTRIBUTING.md
# development config files
.eslintrc.js
.commitlintrc.js
.cz-config.js
.gitlab/
.gitlab-ci.yml
.linstagedrc.js
.prettierrc.js
.stylelintrc.js
cypress.json
.gitlab-ci*
.husky
.lintstagedrc.js
.nvmrc
.renovaterc
USE_SANDBOXED_ORCID=true
ORCID_CLIENT_ID=YOUR_ORCID_CLIENT_ID # see https://gitlab.coko.foundation/kotahi/kotahi/-/blob/main/FAQ.md#how-do-i-setup-orcid-for-development
ORCID_CLIENT_SECRET=YOUR_ORCID_SECRET
POSTGRES_USER=kotahidev
POSTGRES_PASSWORD=kotahidev
POSTGRES_DB=kotahidev
CLIENT_PORT=4000
CLIENT_HOST=0.0.0.0
CLIENT_PROTOCOL=http
PUBLIC_CLIENT_HOST=0.0.0.0
SERVER_PROTOCOL=http
SERVER_HOST=0.0.0.0
SERVER_PORT=3000
PUBSWEET_SECRET=kotahidev
node_modules/
packages/devdocs/.docusaurus
packages/devdocs/build
packages/server/scripts/local
const { eslint } = require('@coko/lint')
// Added parserOptions to remove the @decorators issues
eslint.parserOptions = {
ecmaVersion: 6,
ecmaFeatures: {
legacyDecorators: true,
experimentalObjectRestSpread: true,
},
}
eslint.rules['react/jsx-props-no-spreading'] = 0
module.exports = eslint
# fly.toml app configuration file generated for kotahi-client-main on 2025-02-11T17:13:36+02:00
#
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
#
app = 'kotahi-client-main'
primary_region = 'lhr'
# [build]
# image = 'cokoapps/kotahi-client:2025.02.11-0'
[env]
CLIENT_PORT = '4000'
SERVER_URL = 'https://kotahi-server-main.fly.dev'
YJS_WEBSOCKET_SERVER_URL = 'wss://kotahi-server-main.fly.dev:8081'
[http_service]
internal_port = 4000
force_https = true
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[vm]]
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
# fly.toml app configuration file generated for kotahi-client-test on 2024-10-17T14:28:34+03:00
#
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
#
app = 'kotahi-client-test'
primary_region = 'lhr'
# [build]
# image = 'cokoapps/kotahi-client:test'
[http_service]
internal_port = 4000
force_https = true
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[vm]]
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
[env]
SERVER_URL = "https://kotahi-server-test.fly.dev"
YJS_WEBSOCKET_SERVER_URL = "wss://kotahi-server-test.fly.dev:8081"
app = 'kotahi-dev-docs'
primary_region = 'fra'
[http_service]
internal_port = 80
force_https = true
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[vm]]
memory = '256mb'
cpu_kind = 'shared'
cpus = 1
app = 'kotahi-flax-main'
primary_region = 'lhr'
[build]
image = 'cokoapps/kotahi-flax:0.5.3'
[http_service]
internal_port = 80
force_https = true
auto_stop_machines = 'off'
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[services]]
protocol = 'tcp'
internal_port = 8081
auto_stop_machines = 'off'
auto_start_machines = true
[[services.ports]]
port = 8081
handlers = ['tls', 'http']
[[vm]]
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
[env]
FLAX_EXPRESS_PORT = '8081'
FLAX_CLIENT_API_URL = 'https://kotahi-server-main.fly.dev'
app = 'flax'
primary_region = 'lhr'
[build]
image = 'cokoapps/kotahi-flax:0.5.3'
[http_service]
internal_port = 80
force_https = true
auto_stop_machines = "off"
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[services]]
protocol = "tcp"
internal_port = 8081
auto_stop_machines = "off"
auto_start_machines = true
[[services.ports]]
port = 8081
handlers = ["tls", "http"]
[[vm]]
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
[env]
FLAX_EXPRESS_PORT = "8081"
FLAX_CLIENT_API_URL = "https://kotahi-server-test.fly.dev"
# fly.toml app configuration file generated for kotahi-server-main on 2025-02-11T17:09:51+02:00
#
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
#
app = 'kotahi-server-main'
primary_region = 'lhr'
# [build]
# image = 'cokoapps/kotahi-server:2025.02.11-0'
[env]
CLIENT_URL = 'https://kotahi-client-main.fly.dev'
FLAX_CLIENT_API_URL = 'https://kotahi-server-main.fly.dev'
FLAX_EXPRESS_HOST = 'kotahi-flax-main.fly.dev'
FLAX_EXPRESS_PORT = 8081
FLAX_EXPRESS_PROTOCOL = 'https'
FLAX_SITE_URL = 'http://kotahi-flax-main.fly.dev'
INSTANCE_GROUPS = 'journal:journal,prc:prc,single_form:preprint1'
MANUSCRIPTS_TABLE_COLUMNS = 'shortId, submission.$title, created, updated, status, author'
NODE_ENV = 'production'
SERVER_PORT = 8080
SERVER_URL = 'https://kotahi-server-main.fly.dev'
SERVICE_ANYSTYLE_HOST = 'anystyle-ms.fly.dev'
SERVICE_ANYSTYLE_PORT = ''
SERVICE_ANYSTYLE_PROTOCOL = 'https'
SERVICE_PAGEDJS_HOST = 'pagedjs-ms.fly.dev'
SERVICE_PAGEDJS_PORT = ''
SERVICE_PAGEDJS_PROTOCOL = 'https'
SERVICE_XSWEET_HOST = 'xsweet-ms.fly.dev'
SERVICE_XSWEET_PORT = ''
SERVICE_XSWEET_PROTOCOL = 'https'
USE_SANDBOXED_ORCID = 'true'
WS_YJS_SERVER_PORT = 8081
[http_service]
internal_port = 8080
force_https = true
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[services]]
protocol = 'tcp'
internal_port = 8080
[[services.ports]]
port = 80
handlers = ['http']
[[services.ports]]
port = 443
handlers = ['tls', 'http']
[[services]]
protocol = 'tcp'
internal_port = 8081
[[services.ports]]
port = 8081
handlers = ['tls', 'http']
[[vm]]
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
app = "kotahi-server-test"
primary_region = "lhr"
# [build]
# image = "cokoapps/kotahi-server:test"
[http_service]
auto_start_machines = true
auto_stop_machines = true
force_https = true
internal_port = 8_080
min_machines_running = 0
processes = ["app"]
# HTTP service configuration (port 8080)
[[services]]
internal_port = 8080
protocol = "tcp"
[[services.ports]]
handlers = ["http"]
port = 80 # Map internal HTTP service (8080) to external port 80
[[services.ports]]
handlers = ["tls", "http"]
port = 443 # Map internal HTTP service (8080) to external HTTPS (443)
# WebSocket service configuration (port 8081)
[[services]]
internal_port = 8081
protocol = "tcp" # Use TCP for WebSocket connections
[[services.ports]]
handlers = ["tls", "http"] # WebSocket handler
port = 8081 # External port for WebSocket (same as internal port)
[[vm]]
cpu_kind = "shared"
cpus = 1
memory = "1gb"
[env]
NODE_ENV = "production"
CLIENT_URL = "https://kotahi-client-test.fly.dev"
SERVER_URL = "https://kotahi-server-test.fly.dev"
WS_YJS_SERVER_PORT = "8081"
INSTANCE_GROUPS = "journal:journal,prc:prc,single_form:preprint1"
MANUSCRIPTS_TABLE_COLUMNS = 'shortId, submission.$title, created, updated, status, author'
USE_SANDBOXED_ORCID = "true"
SERVICE_PAGEDJS_PROTOCOL = "https"
SERVICE_PAGEDJS_HOST = "pagedjs-ms.fly.dev"
SERVICE_PAGEDJS_PORT = ""
SERVICE_XSWEET_PROTOCOL = "https"
SERVICE_XSWEET_HOST = "xsweet-ms.fly.dev"
SERVICE_XSWEET_PORT = ""
SERVICE_ANYSTYLE_PROTOCOL = "https"
SERVICE_ANYSTYLE_HOST = "anystyle-ms.fly.dev"
SERVICE_ANYSTYLE_PORT = ""
FLAX_EXPRESS_PORT = 8081
FLAX_EXPRESS_HOST = "flax.fly.dev"
FLAX_EXPRESS_PROTOCOL = "https"
FLAX_CLIENT_API_URL = "https://kotahi-server-test.fly.dev"
FLAX_SITE_URL = "http://flax.fly.dev"
# FLAX_CLIENT_ID=''
# FLAX_CLIENT_SECRET=''
# REVIEW_SHARED = true
# REVIEW_HIDE = true
# PUBLISHING_WEBHOOK_URL=https://someserver/webhook-address # see https://gitlab.coko.foundation/kotahi/kotahi/-/blob/main/ FAQ.md#how-do-i-publish-from-kotahi
# PUBLISHING_WEBHOOK_SECRET=some-secret-string
# PUBLISHING_WEBHOOK_URL=${PUBLISHING_WEBHOOK_URL:-}
# PUBLISHING_WEBHOOK_TOKEN=${PUBLISHING_WEBHOOK_TOKEN:-}
# PUBLISHING_WEBHOOK_REF=${PUBLISHING_WEBHOOK_REF:-}
# TEAM_TIMEZONE=Etc/UTC
# AUTO_IMPORT_HOUR_UTC=21
# ARCHIVE_PERIOD_DAYS=60
# ALLOW_MANUAL_IMPORT=true
# SEMANTIC_SCHOLAR_IMPORTS_RECENCY_PERIOD_DAYS=42
# NOTIFICATION_EMAIL_AUTOMATED=false
# NOTIFICATION_EMAIL_CC_ENABLED=false
# USE_APERTURE_EMAIL=${USE_APERTURE_EMAIL:-false}
# USE_COLAB_EMAIL=false
# USE_COLAB_BIOPHYSICS_IMPORT=${USE_COLAB_BIOPHYSICS_IMPORT:-false}
# KOTAHI_API_TOKENS=${KOTAHI_API_TOKENS:-}
# JOURNAL_NAME=${JOURNAL_NAME:-}
# JOURNAL_ABBREVIATED_NAME=${JOURNAL_ABBREVIATED_NAME:-}
# JOURNAL_HOMEPAGE=${JOURNAL_HOMEPAGE:-}
# GOOGLE_SPREADSHEET_CLIENT_EMAIL=${GOOGLE_SPREADSHEET_CLIENT_EMAIL:-}
# GOOGLE_SPREADSHEET_PRIVATE_KEY=${GOOGLE_SPREADSHEET_PRIVATE_KEY:-}
# GOOGLE_SPREADSHEET_ID=${GOOGLE_SPREADSHEET_ID:-}
# HYPOTHESIS_API_KEY=${HYPOTHESIS_API_KEY:-}
# HYPOTHESIS_GROUP=${HYPOTHESIS_GROUP:-}
# HYPOTHESIS_REVERSE_FIELD_ORDER=${HYPOTHESIS_REVERSE_FIELD_ORDER:-}
# HYPOTHESIS_ALLOW_TAGGING=${HYPOTHESIS_ALLOW_TAGGING:-}
# CROSSREF_LOGIN=${CROSSREF_LOGIN:-}
# CROSSREF_PASSWORD=${CROSSREF_PASSWORD:-}
# CROSSREF_REGISTRANT=${CROSSREF_REGISTRANT:-}
# CROSSREF_DEPOSITOR_NAME=${CROSSREF_DEPOSITOR_NAME:-}
# CROSSREF_DEPOSITOR_EMAIL=${CROSSREF_DEPOSITOR_EMAIL:-}
# CROSSREF_PUBLICATION_TYPE=${CROSSREF_PUBLICATION_TYPE:-article}
# CROSSREF_USE_SANDBOX=${CROSSREF_USE_SANDBOX:-true}
# DOI_PREFIX=${DOI_PREFIX:-}
# PUBLISHED_ARTICLE_LOCATION_PREFIX=${PUBLISHED_ARTICLE_LOCATION_PREFIX:-}
# PUBLICATION_LICENSE_URL=${PUBLICATION_LICENSE_URL:-}
# GMAIL_NOTIFICATION_EMAIL_AUTH=${GMAIL_NOTIFICATION_EMAIL_AUTH}
# GMAIL_NOTIFICATION_EMAIL_SENDER_NAME=${GMAIL_NOTIFICATION_EMAIL_SENDER_NAME}
# GMAIL_NOTIFICATION_PASSWORD=${GMAIL_NOTIFICATION_PASSWORD}
# DISABLE_EVENT_NOTIFICATIONS=${DISABLE_EVENT_NOTIFICATIONS:-}
* text eol=lf
*.ttf binary
*.jpg binary
*.png binary
*.pdf binary
*.js.mp4 binary
......@@ -15,8 +15,32 @@ uploads/
config/local*.*
.vscode/launch.json
.DS_Store
config/*.env
packages/server/config/*.env
packages/server/config/local*
packages/server/*/config/local*
packages/server/config/plugins/*
!packages/server/config/plugins
!packages/server/config/plugins/example_plugins_manifest.json
minio/data/*
minio\data\*
db-data\*
.minio.sys
db-data/*
/.idea
packages/server/config/journal/docmaps_scheme.json
.vscode
.nvmrc
cypress/videos
cypress/screenshots
# macOS
.dccache
packages/server/config/translation
!packages/server/config/translationOverrides.example.js
packages/devdocs/build
packages/devdocs/.docusaurus
packages/devdocs/.cache-loader
packages/server/scripts/local
variables:
IMAGE_ORG: simplej
IMAGE_NAME: simplej
stages:
- build
- test
# - review
# - staging
# - production
# - demo
build:
image: docker:20.10.5
variables:
DOCKER_BUILDKIT: 1
services:
- docker:20.10.5-dind
stage: build
before_script:
- cp app/brand-instances-configs/aperture.json app/brandConfig.json
script:
- |
if [ -z "$DOCKERHUB_USERNAME" ] || [ -z "$DOCKERHUB_PASSWORD" ]; then echo "Not pushing" && exit 0; fi
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
docker build --build-arg instance_name=aperture --file ./Dockerfile-ci --cache-from $IMAGE_ORG/$IMAGE_NAME:latest --tag $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA --tag $IMAGE_ORG/$IMAGE_NAME:latest .
docker push $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA
docker push $IMAGE_ORG/$IMAGE_NAME:latest
lint:
allow_failure: true
image: $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA
stage: test
variables:
GIT_STRATEGY: none
script:
- cd ${HOME}
- npm run lint
test-chrome:
image: $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA
stage: test
variables:
GIT_STRATEGY: none
# setup data for postgres image
POSTGRES_USER: kotahidev
POSTGRES_PASSWORD: kotahidev
# used by psql
PGUSER: kotahidev
PGPASSWORD: kotahidev
# this is used to ignore self signed certs
#START_SERVER_AND_TEST_INSECURE: 1
services:
- postgres
script:
- cd ${HOME}
- apt-get -y install postgresql-client
# this is needed for pgboss initial setup
- psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# use the example env for tests
- cp .env.example .env
# specify host here else it confuses the linked postgres image
- POSTGRES_HOST=postgres yarn test:all:chrome
test-firefox:
allow_failure: true # at this point Cypress' support for Firefox is not stable
image: $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA
stage: test
variables:
GIT_STRATEGY: none
# setup data for postgres image
POSTGRES_USER: kotahidev
POSTGRES_PASSWORD: kotahidev
# used by psql
PGUSER: kotahidev
PGPASSWORD: kotahidev
#START_SERVER_AND_TEST_INSECURE: 1
services:
- postgres
script:
- cd ${HOME}
- apt-get -y install postgresql-client
# this is needed for pgboss initial setup
- psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# use the example env for tests
- cp .env.example .env
# specify host here else it confuses the linked postgres image
- POSTGRES_HOST=postgres yarn test:all:firefox
variables:
IMAGE_ORG: kotahi
IMAGE_NAME: kotahi-elife
stages:
- build
- deploy
- test
build:
image: docker:20.10.5
variables:
DOCKER_BUILDKIT: 1
services:
- docker:20.10.5-dind
stage: build
before_script:
- cp app/brand-instances-configs/elife.json app/brandConfig.json
script:
- |
if [ -z "$DOCKERHUB_USERNAME_ELIFE" ] || [ -z "$DOCKERHUB_PASSWORD_ELIFE" ]; then echo "Not pushing" && exit 0; fi
docker login -u $DOCKERHUB_USERNAME_ELIFE -p $DOCKERHUB_PASSWORD_ELIFE
docker pull $IMAGE_ORG/$IMAGE_NAME:latest || true
docker build \
--build-arg instance_name=elife \
--build-arg public_client_host=elife.kotahi.cloud \
--build-arg public_client_port=443 \
--build-arg public_client_protocol=https \
--file ./Dockerfile-production \
--cache-from $CI_REGISTRY_IMAGE:latest \
--tag $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA \
--tag $IMAGE_ORG/$IMAGE_NAME:latest .
docker build --build-arg instance_name=elife --file ./Dockerfile-ci --cache-from $IMAGE_ORG/$IMAGE_NAME-dev:latest --tag $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA --tag $IMAGE_ORG/$IMAGE_NAME-dev:latest .
docker push $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA
docker push $IMAGE_ORG/$IMAGE_NAME:latest
docker push $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
docker push $IMAGE_ORG/$IMAGE_NAME-dev:latest
deploy:
stage: deploy
image: docker:19.03.13
before_script:
- export SSH_KEY=$SSH_KEY_ELIFE
- export DOCKERHUB_USERNAME=$DOCKERHUB_USERNAME_ELIFE
- export DOCKERHUB_PASSWORD=$DOCKERHUB_PASSWORD_ELIFE
- export IMAGE_ORG=$IMAGE_ORG
- export IMAGE_NAME=$IMAGE_NAME
- eval $(ssh-agent -s)
- echo "$SSH_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $ELIFE_SERVER_IP >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- |
ssh ubuntu@$ELIFE_SERVER_IP "sudo docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD &&
sudo docker pull $IMAGE_ORG/$IMAGE_NAME:latest &&
sudo supervisorctl stop kotahi &&
cd /home/ubuntu/kotahi &&
sudo docker-compose down &&
sudo supervisorctl start kotahi"
# lint:
# allow_failure: true
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# script:
# - cd ${HOME}
# - npm run lint
## TODO: implement this template without error "(node:965) UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined"
## Issue: https://gitlab.coko.foundation/kotahi/kotahi/-/issues/183
# .test_template: &run_test_template
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
## TODO: implement this template without error "psql: could not translate host name "postgres" to address: Name or service not known"
## Issue: https://gitlab.coko.foundation/kotahi/kotahi/-/issues/183
# .script_template: &run_script_template
# - cd ${HOME}
# - apt-get -y install postgresql-client
# # use the example env for tests
# - cp .env.example .env
# # this is needed for pgboss initial setup
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# # specify host here else it confuses the linked postgres image
# - POSTGRES_HOST=postgres yarn test:all:$TEST_ITEM
# test-chrome:
# <<: *run_test_template
# variables:
# TEST_ITEM: "chrome:elife"
# script:
# - *run_script_template
## TODO: when insert this template get an error: "(node:965) UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string"
# .vars_template: &vars_insert
# variables:
# GIT_STRATEGY: none
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
test-chrome:
image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
stage: test
variables:
GIT_STRATEGY: none
# setup data for postgres image
POSTGRES_USER: kotahidev
POSTGRES_PASSWORD: kotahidev
# used by psql
PGUSER: kotahidev
PGPASSWORD: kotahidev
# this is used to ignore self signed certs
#START_SERVER_AND_TEST_INSECURE: 1
services:
- postgres
script:
- cd ${HOME}
- apt-get -y install postgresql-client
# this is needed for pgboss initial setup
- psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# use the example env for tests
- cp .env.example .env
# specify host here else it confuses the linked postgres image
- echo $INSTANCE_NAME
- POSTGRES_HOST=postgres yarn test:all:chrome:elife
# test-chrome-samsung:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:elife:samsung
# test-chrome-samsung-tablet:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:elife:samsung:tablet
# test-chrome-iPhone:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:elife:iPhone
# test-chrome-iPhone-tablet:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:elife:iPhone:tablet
# test-chrome-hd-laptop:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:elife:hd:laptop
# test-firefox:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:elife
# test-firefox-samsung:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:elife:samsung
# test-firefox-samsung-tablet:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:elife:samsung:tablet
# test-firefox-iPhone:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:elife:iPhone
# test-firefox-iPhone-tablet:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:elife:iPhone:tablet
# test-firefox-hd-laptop:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:elife:hd:laptop
variables:
IMAGE_ORG: kotahi
IMAGE_NAME: kotahi-ncrc
stages:
- build
- deploy
- test
build:
image: docker:20.10.5
variables:
DOCKER_BUILDKIT: 1
services:
- docker:20.10.5-dind
stage: build
before_script:
- cp app/brand-instances-configs/ncrc.json app/brandConfig.json
script:
- |
if [ -z "$DOCKERHUB_USERNAME_ELIFE" ] || [ -z "$DOCKERHUB_PASSWORD_ELIFE" ]; then echo "Not pushing" && exit 0; fi
docker login -u $DOCKERHUB_USERNAME_ELIFE -p $DOCKERHUB_PASSWORD_ELIFE
docker pull $IMAGE_ORG/$IMAGE_NAME:latest || true
docker build \
--build-arg instance_name=ncrc \
--build-arg public_client_host=ncrc.kotahi.cloud \
--build-arg public_client_port=443 \
--build-arg public_client_protocol=https \
--file ./Dockerfile-production \
--cache-from $CI_REGISTRY_IMAGE:latest \
--tag $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA \
--tag $IMAGE_ORG/$IMAGE_NAME:latest .
docker build --build-arg instance_name=ncrc --file ./Dockerfile-ci --cache-from $IMAGE_ORG/$IMAGE_NAME-dev:latest --tag $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA --tag $IMAGE_ORG/$IMAGE_NAME-dev:latest .
docker push $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA
docker push $IMAGE_ORG/$IMAGE_NAME:latest
docker push $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
docker push $IMAGE_ORG/$IMAGE_NAME-dev:latest
deploy:
stage: deploy
image: docker:19.03.13
before_script:
- export SSH_KEY=$SSH_KEY_NCRC
- export DOCKERHUB_USERNAME=$DOCKERHUB_USERNAME_ELIFE
- export DOCKERHUB_PASSWORD=$DOCKERHUB_PASSWORD_ELIFE
- export IMAGE_ORG=$IMAGE_ORG
- export IMAGE_NAME=$IMAGE_NAME
- eval $(ssh-agent -s)
- echo "$SSH_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $NCRC_SERVER_IP >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- |
ssh ubuntu@$NCRC_SERVER_IP "sudo docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD &&
sudo docker pull $IMAGE_ORG/$IMAGE_NAME:latest &&
sudo supervisorctl stop kotahi &&
cd /home/ubuntu/kotahi &&
sudo docker-compose down &&
sudo supervisorctl start kotahi"
# lint:
# allow_failure: true
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# script:
# - cd ${HOME}
# - npm run lint
test-chrome:
image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
stage: test
variables:
GIT_STRATEGY: none
# setup data for postgres image
POSTGRES_USER: kotahidev
POSTGRES_PASSWORD: kotahidev
# used by psql
PGUSER: kotahidev
PGPASSWORD: kotahidev
# this is used to ignore self signed certs
#START_SERVER_AND_TEST_INSECURE: 1
services:
- postgres
script:
- cd ${HOME}
- apt-get update
- apt-get -y install postgresql-client
# this is needed for pgboss initial setup
- psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# use the example env for tests
- cp .env.example .env
# specify host here else it confuses the linked postgres image
- echo $INSTANCE_NAME
- POSTGRES_HOST=postgres yarn test:all:chrome:ncrc
# test-chrome-samsung:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:ncrc:samsung
# test-chrome-samsung-tablet:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:ncrc:samsung:tablet
# test-chrome-iPhone:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:ncrc:iPhone
# test-chrome-iPhone-tablet:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:ncrc:iPhone:tablet
# test-chrome-hd-laptop:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:chrome:ncrc:hd:laptop
# test-firefox:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:ncrc
# test-firefox-samsung:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:ncrc:samsung
# test-firefox-samsung-tablet:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:ncrc:samsung:tablet
# test-firefox-iPhone:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:ncrc:iPhone
# test-firefox-iPhone-tablet:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:ncrc:iPhone:tablet
# test-firefox-hd-laptop:
# image: $IMAGE_ORG/$IMAGE_NAME-dev:$CI_COMMIT_SHA
# stage: test
# variables:
# GIT_STRATEGY: none
# # setup data for postgres image
# POSTGRES_USER: kotahidev
# POSTGRES_PASSWORD: kotahidev
# # used by psql
# PGUSER: kotahidev
# PGPASSWORD: kotahidev
# # this is used to ignore self signed certs
# #START_SERVER_AND_TEST_INSECURE: 1
# services:
# - postgres
# script:
# - cd ${HOME}
# - apt-get -y install postgresql-client
# - psql -h postgres -U kotahidev -d kotahidev -c "create extension pgcrypto;"
# - cp .env.example .env
# - POSTGRES_HOST=postgres yarn test:all:firefox:ncrc:hd:laptop
# include:
# - project: 'cokoapps/ci'
# ref: main
# file: 'ci-templates.yml'
variables:
IMAGE_NAME_DEVELOPMENT: kotahi/kotahi/root-development
CLIENT_PREPRODUCTION: $CI_REGISTRY/kotahi/kotahi/client-preproduction:$CI_COMMIT_REF_NAME
SERVER_PREPRODUCTION: $CI_REGISTRY/kotahi/kotahi/server-preproduction:$CI_COMMIT_REF_NAME
CLIENT_PRODUCTION: cokoapps/kotahi-client
SERVER_PRODUCTION: cokoapps/kotahi-server
DEV_DOCS: $CI_REGISTRY/kotahi/kotahi/devdocs:$CI_COMMIT_REF_NAME
DEPLOY_COMPOSE_FILE: docker-compose.ci.yml
stages:
- run-pipeline
elife-pipeline:
only:
refs:
- main
stage: run-pipeline
trigger:
include:
- local: .gitlab-ci.elife.yml
strategy: depend
ncrc-pipeline:
only:
refs:
- main
stage: run-pipeline
trigger:
include:
- local: .gitlab-ci.ncrc.yml
strategy: depend
aperture-pipeline:
stage: run-pipeline
trigger:
include:
- local: .gitlab-ci.aperture.yml
strategy: depend
- Build development
- Lint & Unit test
- Build production
- Deploy test
- End to end testing
- Tear down test
- Deploy staging
- Release
- Publish
- Deploy production
build development:
stage: Build development
interruptible: true
image: docker:27-dind
services:
- docker:27-dind
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin
script:
- docker build
--tag $CI_REGISTRY/$IMAGE_NAME_DEVELOPMENT:$CI_COMMIT_REF_NAME.$CI_COMMIT_SHA
-f Dockerfile .
- docker push $CI_REGISTRY/$IMAGE_NAME_DEVELOPMENT:$CI_COMMIT_REF_NAME.$CI_COMMIT_SHA
lint:
stage: Lint & Unit test
interruptible: true
image: $CI_REGISTRY/$IMAGE_NAME_DEVELOPMENT:$CI_COMMIT_REF_NAME.$CI_COMMIT_SHA
script:
- cd /home/node/app
- yarn coko-lint run
build preproduction client:
stage: Build production
interruptible: true
image: docker:27
services:
- docker:27-dind
only:
- staging
- main
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin
script:
- cd packages/client
- docker build
--tag $CLIENT_PREPRODUCTION.$CI_COMMIT_SHA
--tag $CLIENT_PREPRODUCTION.latest
-f Dockerfile-production .
- docker push $CLIENT_PREPRODUCTION.$CI_COMMIT_SHA
- docker push $CLIENT_PREPRODUCTION.latest
build preproduction server:
stage: Build production
interruptible: true
image: docker:27
services:
- docker:27-dind
only:
- staging
- main
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin
script:
- cd packages/server
- docker build
--tag $SERVER_PREPRODUCTION.$CI_COMMIT_SHA
--tag $SERVER_PREPRODUCTION.latest
-f Dockerfile-production .
- docker push $SERVER_PREPRODUCTION.$CI_COMMIT_SHA
- docker push $SERVER_PREPRODUCTION.latest
deploy fly staging:
stage: Deploy staging
interruptible: false
image: cokoapps/fly
only:
- staging
script:
- FLY_API_TOKEN=$FLY_SERVER_TEST_TOKEN flyctl deploy --config .fly/kotahi-server-test.toml --image $SERVER_PREPRODUCTION.$CI_COMMIT_SHA
- FLY_API_TOKEN=$FLY_CLIENT_TEST_TOKEN flyctl deploy --config .fly/kotahi-client-test.toml --image $CLIENT_PREPRODUCTION.$CI_COMMIT_SHA
deploy fly main:
stage: Deploy staging
interruptible: false
image: cokoapps/fly
only:
- main
script:
- FLY_API_TOKEN=$FLY_SERVER_MAIN_TOKEN flyctl deploy --config .fly/kotahi-server-main.toml --image $SERVER_PREPRODUCTION.$CI_COMMIT_SHA
- FLY_API_TOKEN=$FLY_CLIENT_MAIN_TOKEN flyctl deploy --config .fly/kotahi-client-main.toml --image $CLIENT_PREPRODUCTION.$CI_COMMIT_SHA
release:
stage: Release
interruptible: false
image: node:18
when: manual
only:
- main
before_script:
- git remote set-url --push origin "https://gitlab-ci-token:$CI_RELEASE_TOKEN@gitlab.coko.foundation/kotahi/kotahi.git"
- git config user.email "$CI_RELEASE_BOT_EMAIL"
- git config user.name "kotahi release bot"
script:
- node scripts/updatePackageJson.js
- VERSION=$(node -e "const packageJson = require('./package.json'); console.log(packageJson.version);")
- echo VERSION set to $VERSION
- git add -A
- git commit -m "release version $VERSION [skip ci]"
- git show-ref --tags "$VERSION" > /dev/null 2>&1 && git tag -d "$VERSION" || echo "Tag '$VERSION' does not exist."
- git tag $VERSION
- git push origin HEAD:$CI_COMMIT_REF_NAME --verbose
- git push origin $VERSION
- echo RELEASE_VERSION=$VERSION >> version.env
artifacts:
reports:
dotenv: version.env
production client:
stage: Publish
interruptible: false
image: docker:27
services:
- docker:27-dind
needs:
- release
only:
- main
before_script:
- '[ -z "$RELEASE_VERSION" ] && exit 1'
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
script:
- git fetch origin $CI_COMMIT_REF_NAME
- git reset --hard origin/$CI_COMMIT_REF_NAME
- cd packages/client
- docker build --tag $CLIENT_PRODUCTION:$RELEASE_VERSION -f Dockerfile-production .
- docker push $CLIENT_PRODUCTION:$RELEASE_VERSION
production server:
stage: Publish
interruptible: false
image: docker:27
services:
- docker:27-dind
needs:
- release
only:
- main
before_script:
- '[ -z "$RELEASE_VERSION" ] && exit 1'
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
script:
- git fetch origin $CI_COMMIT_REF_NAME
- git reset --hard origin/$CI_COMMIT_REF_NAME
- cd packages/server
- docker build --tag $SERVER_PRODUCTION:$RELEASE_VERSION -f Dockerfile-production .
- docker push $SERVER_PRODUCTION:$RELEASE_VERSION
build docs:
stage: Publish
interruptible: false
image: docker:27
services:
- docker:27-dind
needs:
- release
only:
- main
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin
script:
- cd packages/devdocs
- docker build -f Dockerfile-production -t $DEV_DOCS.$CI_COMMIT_SHA .
- docker push $DEV_DOCS.$CI_COMMIT_SHA
deploy docs:
stage: Deploy production
interruptible: false
image: cokoapps/fly
needs:
- build docs
only:
- main
script:
- FLY_API_TOKEN=$FLY_DEV_DOCS_TOKEN flyctl deploy --config .fly/kotahi-dev-docs.toml --image $DEV_DOCS.$CI_COMMIT_SHA
<!-- Required. Provide a general summary of the issue in the title above -->
## Expected behaviour
<!-- Required. Tell us what should happen -->
## Current behaviour
<!-- Required. Tell us what happens instead of the expected behaviour -->
## Steps to reproduce
<!-- Required. Provide a link to a live example or screenshots, and the steps to reproduce this bug.]-->
1.
2.
3.
4.
## Environment
<!-- Required. Provide relevant information such as browser name and version, PC or Mac use, internet speed, etc.]-->
## Possible solution
<!-- If known, provide details on how to fix the bug.-->
<!-- After creating this issue you can link other related or blocking issues with the Gitlab's Linked issues functionality. -->
---
name: Developer issue
about: Issue with description, learning objectives, todo, and useful links
title: ''
labels: ''
assignees: ''
---
## Description
## Learning objectives
- Objective
## Todo
These points are a rough guideline. **Please** feel free to discuss with others on the team about the best way to design this component!
- Todo
## Useful links
- Useful link
<!--
Template sourced from https://github.com/hack4impact-uiuc/falling-fruit
Shoutout to the wonderful FF team!
-->
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn commitlint --edit