Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec6343eb authored by Arnau Vàzquez's avatar Arnau Vàzquez
Browse files

Merge branch 'dev/auto-deploy-pipe' into 'main'

Add build, lint and deploy CI template to calendar

See merge request !12
parents 85a74979 13ee5544
Loading
Loading
Loading
Loading
Loading
+10 −115
Original line number Diff line number Diff line
stages:
    - prepare
    - test
    - build
    - deploy

default:
    image: node:15.14.0-stretch
    before_script:
        - npm set cache .npm
        - npm install --prefer-offline --no-audit
    cache:
        key: ${CI_COMMIT_REF_SLUG}
        paths:
            - .npm/
            - node_modules/

install-node-deps:
    stage: prepare
    before_script:
        - node --version
        - npm --version
    script:
        - npm set cache .npm
        - npm ci
    only:
        changes:
            - package*.json

lint:
    stage: test
    script:
        - npm run lint

build-frontend:
    stage: build
    script:
        - npm run build
        - mkdir -p dist/$CI_PROJECT_NAME
        - cp -a appinfo css img l10n lib templates js dist/$CI_PROJECT_NAME
    artifacts:
        paths:
            - dist/

.deploy:nextcloud-app:
    image: ubuntu:focal
    stage: deploy
    dependencies:
      - build-frontend
    before_script:
      - mkdir $HOME/.ssh
      - chmod 700 ~/.ssh
      - echo "$SSH_PRIVATE_KEY_ED" > $HOME/.ssh/id_ed25519
      - echo "$SSH_PUBKEY_ED" > $HOME/.ssh/id_ed25519.pub
      - echo "$SSH_KNOWN_HOSTS" > $HOME/.ssh/known_hosts
      - chmod 600 ~/.ssh/id_ed25519
      - chmod 644 ~/.ssh/known_hosts ~/.ssh/id_ed25519.pub
      - apt-get update && apt-get install -y openssh-client rsync
    script:
      - echo "Deploying $CI_PROJECT_NAME of $CI_PROJECT_PATH_SLUG to $CI_ENVIRONMENT_NAME ($DEPLOYMENT_HOST)"
      - rsync -avzh dist/ $SSH_USER@$DEPLOYMENT_HOST:/tmp/${CI_JOB_ID}
      - ssh $SSH_USER@$DEPLOYMENT_HOST "sudo rsync -avzh --chown www-data:www-data --delete /tmp/${CI_JOB_ID}/$CI_PROJECT_NAME ${DEPLOYMENT_PATH}/html/custom_apps/ && rm -rf /tmp/${CI_JOB_ID} && sudo docker exec -u www-data $CONTAINER_NAME /var/www/html/occ app:enable $CI_PROJECT_NAME"


deploy:dev01:
  extends: .deploy:nextcloud-app
  when: manual
  only:
    - /^dev\/.*$/
    - main
  environment:
    name: dev/01
    url: https://dev.eeo.one/
  variables:
    DEPLOYMENT_BRANCH: $CI_COMMIT_BRANCH
    CONTAINER_NAME: dev01_nextcloud

deploy:dev02:
  extends: .deploy:nextcloud-app
  when: manual
  only:
    - /^dev\/.*$/
    - main
  environment:
    name: dev/02
    url: https://ecloud02.dev.eeo.one
variables:
    DEPLOYMENT_BRANCH: $CI_COMMIT_BRANCH
    CONTAINER_NAME: dev02_nextcloud
    TO_PACKAGE: 'appinfo css img l10n lib templates js'

deploy:dev03:
  extends: .deploy:nextcloud-app
  when: manual
  only:
    - /^dev\/.*$/
    - main
  environment:
    name: dev/03
    url: https://ecloud03.dev.eeo.one
  variables:
    DEPLOYMENT_BRANCH: $CI_COMMIT_BRANCH
    CONTAINER_NAME: dev03_nextcloud

deploy:staging:
  extends: .deploy:nextcloud-app
  when: manual
  only:
    - main
    - production
  environment:
    name: staging/01
    url: https://eeo.one
  variables:
    DEPLOYMENT_BRANCH: $CI_COMMIT_BRANCH
    CONTAINER_NAME: nextcloud
include:
  - project: "e/infra/ecloud/nextcloud-apps/ci-templates"
    ref: main
    file: "nc-apps-lint-build-frontend.yml"
  - project: "e/infra/ecloud/nextcloud-apps/ci-templates"
    ref: main
    file: "nc-apps-deploy.yml"