chore(ci): combine api and frontend drone configs
This commit is contained in:
parent
d7e9c1a393
commit
5d7826a9b7
499
.drone.yml
499
.drone.yml
@ -336,6 +336,171 @@ steps:
|
|||||||
when:
|
when:
|
||||||
event: [ push, tag, pull_request ]
|
event: [ push, tag, pull_request ]
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: build-frontend
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
include:
|
||||||
|
- main
|
||||||
|
event:
|
||||||
|
include:
|
||||||
|
- push
|
||||||
|
- pull_request
|
||||||
|
|
||||||
|
services:
|
||||||
|
- name: api
|
||||||
|
image: vikunja/api:unstable
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
VIKUNJA_SERVICE_TESTINGTOKEN: averyLongSecretToSe33dtheDB
|
||||||
|
VIKUNJA_LOG_LEVEL: DEBUG
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Disabled until we figure out why it is so slow
|
||||||
|
# - name: restore-cache
|
||||||
|
# image: meltwater/drone-cache:dev
|
||||||
|
# pull: always
|
||||||
|
# environment:
|
||||||
|
# AWS_ACCESS_KEY_ID:
|
||||||
|
# from_secret: cache_aws_access_key_id
|
||||||
|
# AWS_SECRET_ACCESS_KEY:
|
||||||
|
# from_secret: cache_aws_secret_access_key
|
||||||
|
# settings:
|
||||||
|
# debug: true
|
||||||
|
# restore: true
|
||||||
|
# bucket: kolaente.dev-drone-dependency-cache
|
||||||
|
# endpoint: https://s3.fr-par.scw.cloud
|
||||||
|
# region: fr-par
|
||||||
|
# path_style: true
|
||||||
|
# cache_key: '{{ .Repo.Name }}_{{ checksum "pnpm-lock.yaml" }}_{{ arch }}_{{ os }}'
|
||||||
|
# mount:
|
||||||
|
# - .cache
|
||||||
|
|
||||||
|
- name: dependencies
|
||||||
|
image: node:20.11.0-alpine
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
PNPM_CACHE_FOLDER: .cache/pnpm
|
||||||
|
CYPRESS_CACHE_FOLDER: .cache/cypress
|
||||||
|
PUPPETEER_SKIP_DOWNLOAD: true
|
||||||
|
commands:
|
||||||
|
- corepack enable && pnpm config set store-dir .cache/pnpm
|
||||||
|
- pnpm install --fetch-timeout 100000
|
||||||
|
# depends_on:
|
||||||
|
# - restore-cache
|
||||||
|
|
||||||
|
- name: lint
|
||||||
|
image: node:20.11.0-alpine
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
PNPM_CACHE_FOLDER: .cache/pnpm
|
||||||
|
commands:
|
||||||
|
- corepack enable && pnpm config set store-dir .cache/pnpm
|
||||||
|
- pnpm run lint
|
||||||
|
depends_on:
|
||||||
|
- dependencies
|
||||||
|
|
||||||
|
- name: build-prod
|
||||||
|
image: node:20.11.0-alpine
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
PNPM_CACHE_FOLDER: .cache/pnpm
|
||||||
|
commands:
|
||||||
|
- corepack enable && pnpm config set store-dir .cache/pnpm
|
||||||
|
- pnpm run build
|
||||||
|
depends_on:
|
||||||
|
- dependencies
|
||||||
|
|
||||||
|
- name: test-unit
|
||||||
|
image: node:20.11.0-alpine
|
||||||
|
pull: always
|
||||||
|
commands:
|
||||||
|
- corepack enable && pnpm config set store-dir .cache/pnpm
|
||||||
|
- pnpm run test:unit
|
||||||
|
depends_on:
|
||||||
|
- dependencies
|
||||||
|
|
||||||
|
- name: typecheck
|
||||||
|
failure: ignore
|
||||||
|
image: node:20.11.0-alpine
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
PNPM_CACHE_FOLDER: .cache/pnpm
|
||||||
|
commands:
|
||||||
|
- corepack enable && pnpm config set store-dir .cache/pnpm
|
||||||
|
- pnpm run typecheck
|
||||||
|
depends_on:
|
||||||
|
- dependencies
|
||||||
|
|
||||||
|
- name: test-frontend
|
||||||
|
image: cypress/browsers:node18.12.0-chrome107
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
CYPRESS_API_URL: http://api:3456/api/v1
|
||||||
|
CYPRESS_TEST_SECRET: averyLongSecretToSe33dtheDB
|
||||||
|
PNPM_CACHE_FOLDER: .cache/pnpm
|
||||||
|
CYPRESS_CACHE_FOLDER: .cache/cypress
|
||||||
|
CYPRESS_DEFAULT_COMMAND_TIMEOUT: 60000
|
||||||
|
CYPRESS_RECORD_KEY:
|
||||||
|
from_secret: cypress_project_key
|
||||||
|
commands:
|
||||||
|
- sed -i 's/localhost/api/g' dist/index.html
|
||||||
|
- corepack enable && pnpm config set store-dir .cache/pnpm
|
||||||
|
- pnpm cypress install
|
||||||
|
- pnpm run test:e2e-record
|
||||||
|
depends_on:
|
||||||
|
- build-prod
|
||||||
|
|
||||||
|
# - name: rebuild-cache
|
||||||
|
# image: meltwater/drone-cache:dev
|
||||||
|
# pull: always
|
||||||
|
# environment:
|
||||||
|
# AWS_ACCESS_KEY_ID:
|
||||||
|
# from_secret: cache_aws_access_key_id
|
||||||
|
# AWS_SECRET_ACCESS_KEY:
|
||||||
|
# from_secret: cache_aws_secret_access_key
|
||||||
|
# settings:
|
||||||
|
# rebuild: true
|
||||||
|
# bucket: kolaente.dev-drone-dependency-cache
|
||||||
|
# endpoint: https://s3.fr-par.scw.cloud
|
||||||
|
# region: fr-par
|
||||||
|
# path_style: true
|
||||||
|
# cache_key: '{{ .Repo.Name }}_{{ checksum "pnpm-lock.yaml" }}_{{ arch }}_{{ os }}'
|
||||||
|
# mount:
|
||||||
|
# - .cache
|
||||||
|
# depends_on:
|
||||||
|
# - dependencies
|
||||||
|
|
||||||
|
- name: deploy-preview
|
||||||
|
image: williamjackson/netlify-cli
|
||||||
|
pull: always
|
||||||
|
user: root # The rest runs as root and thus the permissions wouldn't work
|
||||||
|
environment:
|
||||||
|
NETLIFY_AUTH_TOKEN:
|
||||||
|
from_secret: netlify_auth_token
|
||||||
|
NETLIFY_SITE_ID:
|
||||||
|
from_secret: netlify_site_id
|
||||||
|
GITEA_TOKEN:
|
||||||
|
from_secret: gitea_token
|
||||||
|
commands:
|
||||||
|
- cp -r dist dist-preview
|
||||||
|
# Override the default api url used for preview
|
||||||
|
- sed -i 's|http://localhost:3456|https://try.vikunja.io|g' dist-preview/index.html
|
||||||
|
- apk add --no-cache perl-utils
|
||||||
|
# create via:
|
||||||
|
# `shasum -a 384 ./scripts/deploy-preview-netlify.mjs > ./scripts/deploy-preview-netlify.mjs.sha384`
|
||||||
|
- shasum -a 384 -c ./scripts/deploy-preview-netlify.mjs.sha384
|
||||||
|
- node ./scripts/deploy-preview-netlify.mjs
|
||||||
|
depends_on:
|
||||||
|
- build-prod
|
||||||
|
when:
|
||||||
|
event:
|
||||||
|
include:
|
||||||
|
- pull_request
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: docker
|
type: docker
|
||||||
@ -775,7 +940,339 @@ steps:
|
|||||||
- success
|
- success
|
||||||
- failure
|
- failure
|
||||||
---
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: frontend-release-latest
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- build-frontend
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
- main
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: fetch-tags
|
||||||
|
image: docker:git
|
||||||
|
commands:
|
||||||
|
- git fetch --tags
|
||||||
|
|
||||||
|
# - name: restore-cache
|
||||||
|
# image: meltwater/drone-cache:dev
|
||||||
|
# pull: always
|
||||||
|
# environment:
|
||||||
|
# AWS_ACCESS_KEY_ID:
|
||||||
|
# from_secret: cache_aws_access_key_id
|
||||||
|
# AWS_SECRET_ACCESS_KEY:
|
||||||
|
# from_secret: cache_aws_secret_access_key
|
||||||
|
# settings:
|
||||||
|
# restore: true
|
||||||
|
# bucket: kolaente.dev-drone-dependency-cache
|
||||||
|
# endpoint: https://s3.fr-par.scw.cloud
|
||||||
|
# region: fr-par
|
||||||
|
# path_style: true
|
||||||
|
# cache_key: '{{ .Repo.Name }}_{{ checksum "pnpm-lock.yaml" }}_{{ arch }}_{{ os }}'
|
||||||
|
# mount:
|
||||||
|
# - .cache
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
image: node:20.11.0-alpine
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
PNPM_CACHE_FOLDER: .cache/pnpm
|
||||||
|
SENTRY_AUTH_TOKEN:
|
||||||
|
from_secret: sentry_auth_token
|
||||||
|
SENTRY_ORG: vikunja
|
||||||
|
SENTRY_PROJECT: frontend-oss
|
||||||
|
PUPPETEER_SKIP_DOWNLOAD: true
|
||||||
|
commands:
|
||||||
|
- apk add git
|
||||||
|
- corepack enable && pnpm config set store-dir .cache/pnpm
|
||||||
|
- pnpm install --fetch-timeout 100000 --frozen-lockfile
|
||||||
|
- pnpm run lint
|
||||||
|
- "echo '{\"VERSION\": \"'$(git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/')'\"}' > src/version.json"
|
||||||
|
- pnpm run build
|
||||||
|
- sed -i 's/http\:\\/\\/localhost\\:3456\\/api\\/v1/\\/api\\/v1/g' dist/index.html # Override the default api url used for developing
|
||||||
|
# depends_on:
|
||||||
|
# - restore-cache
|
||||||
|
|
||||||
|
- name: static
|
||||||
|
image: kolaente/zip
|
||||||
|
pull: always
|
||||||
|
commands:
|
||||||
|
- cp src/version.json dist
|
||||||
|
- cd dist
|
||||||
|
- zip -r ../vikunja-frontend-unstable.zip *
|
||||||
|
- cd ..
|
||||||
|
depends_on: [ build ]
|
||||||
|
|
||||||
|
- name: release
|
||||||
|
image: plugins/s3
|
||||||
|
pull: always
|
||||||
|
settings:
|
||||||
|
bucket: vikunja-releases
|
||||||
|
access_key:
|
||||||
|
from_secret: aws_access_key_id
|
||||||
|
secret_key:
|
||||||
|
from_secret: aws_secret_access_key
|
||||||
|
endpoint: https://s3.fr-par.scw.cloud
|
||||||
|
region: fr-par
|
||||||
|
path_style: true
|
||||||
|
source: vikunja-frontend-unstable.zip
|
||||||
|
target: /frontend/
|
||||||
|
depends_on: [ static ]
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: release-frontend-version
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- build-frontend
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
- tag
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: fetch-tags
|
||||||
|
image: docker:git
|
||||||
|
commands:
|
||||||
|
- git fetch --tags
|
||||||
|
|
||||||
|
# - name: restore-cache
|
||||||
|
# image: meltwater/drone-cache:dev
|
||||||
|
# pull: always
|
||||||
|
# environment:
|
||||||
|
# AWS_ACCESS_KEY_ID:
|
||||||
|
# from_secret: cache_aws_access_key_id
|
||||||
|
# AWS_SECRET_ACCESS_KEY:
|
||||||
|
# from_secret: cache_aws_secret_access_key
|
||||||
|
# settings:
|
||||||
|
# restore: true
|
||||||
|
# bucket: kolaente.dev-drone-dependency-cache
|
||||||
|
# endpoint: https://s3.fr-par.scw.cloud
|
||||||
|
# region: fr-par
|
||||||
|
# path_style: true
|
||||||
|
# cache_key: '{{ .Repo.Name }}_{{ checksum "pnpm-lock.yaml" }}_{{ arch }}_{{ os }}'
|
||||||
|
# mount:
|
||||||
|
# - .cache
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
image: node:20.11.0-alpine
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
PNPM_CACHE_FOLDER: .cache/pnpm
|
||||||
|
SENTRY_AUTH_TOKEN:
|
||||||
|
from_secret: sentry_auth_token
|
||||||
|
SENTRY_ORG: vikunja
|
||||||
|
SENTRY_PROJECT: frontend-oss
|
||||||
|
commands:
|
||||||
|
- apk add git
|
||||||
|
- corepack enable && pnpm config set store-dir .cache/pnpm
|
||||||
|
- pnpm install --fetch-timeout 100000 --frozen-lockfile
|
||||||
|
- pnpm run lint
|
||||||
|
- "echo '{\"VERSION\": \"'$(git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/')'\"}' > src/version.json"
|
||||||
|
- pnpm run build
|
||||||
|
- sed -i 's/http\:\\/\\/localhost\\:3456\\/api\\/v1/\\/api\\/v1/g' dist/index.html # Override the default api url used for developing
|
||||||
|
# depends_on:
|
||||||
|
# - restore-cache
|
||||||
|
|
||||||
|
- name: static
|
||||||
|
image: kolaente/zip
|
||||||
|
pull: always
|
||||||
|
commands:
|
||||||
|
- cp src/version.json dist
|
||||||
|
- cd dist
|
||||||
|
- zip -r ../vikunja-frontend-${DRONE_TAG##v}.zip *
|
||||||
|
- cd ..
|
||||||
|
depends_on: [ build ]
|
||||||
|
|
||||||
|
- name: release
|
||||||
|
image: plugins/s3
|
||||||
|
pull: always
|
||||||
|
settings:
|
||||||
|
bucket: vikunja-releases
|
||||||
|
access_key:
|
||||||
|
from_secret: aws_access_key_id
|
||||||
|
secret_key:
|
||||||
|
from_secret: aws_secret_access_key
|
||||||
|
endpoint: https://s3.fr-par.scw.cloud
|
||||||
|
region: fr-par
|
||||||
|
path_style: true
|
||||||
|
source: vikunja-frontend-${DRONE_TAG##v}.zip
|
||||||
|
target: /frontend/
|
||||||
|
depends_on: [ static ]
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: trigger-desktop-update
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
- main
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- frontend-release-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: trigger
|
||||||
|
image: plugins/downstream
|
||||||
|
settings:
|
||||||
|
server: https://drone.kolaente.de
|
||||||
|
token:
|
||||||
|
from_secret: drone_token
|
||||||
|
repositories:
|
||||||
|
- vikunja/desktop@main
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: frontend-docker-release
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- build-frontend
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/main
|
||||||
|
- "refs/tags/**"
|
||||||
|
event:
|
||||||
|
exclude:
|
||||||
|
- cron
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: fetch-tags
|
||||||
|
image: docker:git
|
||||||
|
commands:
|
||||||
|
- git fetch --tags
|
||||||
|
|
||||||
|
- name: docker-unstable
|
||||||
|
image: thegeeklab/drone-docker-buildx
|
||||||
|
privileged: true
|
||||||
|
pull: always
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
repo: vikunja/frontend
|
||||||
|
tags: unstable
|
||||||
|
build_args:
|
||||||
|
- USE_RELEASE=false
|
||||||
|
platforms:
|
||||||
|
- linux/386
|
||||||
|
- linux/amd64
|
||||||
|
- linux/arm/v6
|
||||||
|
- linux/arm/v7
|
||||||
|
- linux/arm64/v8
|
||||||
|
depends_on: [ fetch-tags ]
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- refs/heads/main
|
||||||
|
|
||||||
|
- name: generate-tags
|
||||||
|
image: thegeeklab/docker-autotag
|
||||||
|
environment:
|
||||||
|
DOCKER_AUTOTAG_VERSION: ${DRONE_TAG}
|
||||||
|
DOCKER_AUTOTAG_EXTRA_TAGS: latest
|
||||||
|
DOCKER_AUTOTAG_OUTPUT_FILE: .tags
|
||||||
|
depends_on: [ fetch-tags ]
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- "refs/tags/**"
|
||||||
|
|
||||||
|
- name: docker-release
|
||||||
|
image: thegeeklab/drone-docker-buildx
|
||||||
|
privileged: true
|
||||||
|
pull: always
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
repo: vikunja/frontend
|
||||||
|
build_args:
|
||||||
|
- USE_RELEASE=false
|
||||||
|
platforms:
|
||||||
|
- linux/386
|
||||||
|
- linux/amd64
|
||||||
|
- linux/arm/v6
|
||||||
|
- linux/arm/v7
|
||||||
|
- linux/arm64/v8
|
||||||
|
depends_on: [ generate-tags ]
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- "refs/tags/**"
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: update-translations
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
include:
|
||||||
|
- main
|
||||||
|
event:
|
||||||
|
include:
|
||||||
|
- cron
|
||||||
|
cron:
|
||||||
|
- update_translations
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: download
|
||||||
|
pull: always
|
||||||
|
image: ghcr.io/kolaente/kolaente/drone-crowdin-v2:latest
|
||||||
|
settings:
|
||||||
|
crowdin_key:
|
||||||
|
from_secret: crowdin_key
|
||||||
|
project_id: 462614
|
||||||
|
target: download
|
||||||
|
download_to: src/i18n/lang/
|
||||||
|
download_export_approved_only: true
|
||||||
|
|
||||||
|
- name: move-files
|
||||||
|
pull: always
|
||||||
|
image: bash
|
||||||
|
depends_on:
|
||||||
|
- download
|
||||||
|
commands:
|
||||||
|
- mv src/i18n/lang/*/*.json src/i18n/lang
|
||||||
|
|
||||||
|
- name: push
|
||||||
|
pull: always
|
||||||
|
image: appleboy/drone-git-push
|
||||||
|
depends_on:
|
||||||
|
- move-files
|
||||||
|
settings:
|
||||||
|
author_email: "frederik@vikunja.io"
|
||||||
|
author_name: Frederick [Bot]
|
||||||
|
branch: main
|
||||||
|
commit: true
|
||||||
|
commit_message: "chore(i18n): update translations via Crowdin"
|
||||||
|
remote: "ssh://git@kolaente.dev:9022/vikunja/frontend.git"
|
||||||
|
ssh_key:
|
||||||
|
from_secret: git_push_ssh_key
|
||||||
|
|
||||||
|
- name: upload
|
||||||
|
pull: always
|
||||||
|
image: ghcr.io/kolaente/kolaente/drone-crowdin-v2:latest
|
||||||
|
depends_on:
|
||||||
|
- clone
|
||||||
|
settings:
|
||||||
|
crowdin_key:
|
||||||
|
from_secret: crowdin_key
|
||||||
|
project_id: 462614
|
||||||
|
target: upload
|
||||||
|
upload_files:
|
||||||
|
src/i18n/lang/en.json: en.json
|
||||||
|
---
|
||||||
kind: signature
|
kind: signature
|
||||||
hmac: 376568101d98cf50e925d438e7f0d7ee6dfb0effd2cc5719d2884ef3fd64ddd0
|
hmac: cff233ec220ef90956e3c3815995183f9a40e5ef2dde18d5294982ec4b9e1f1b
|
||||||
|
|
||||||
...
|
...
|
||||||
|
@ -1,537 +0,0 @@
|
|||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: build
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
include:
|
|
||||||
- main
|
|
||||||
event:
|
|
||||||
include:
|
|
||||||
- push
|
|
||||||
- pull_request
|
|
||||||
|
|
||||||
services:
|
|
||||||
- name: api
|
|
||||||
image: vikunja/api:unstable
|
|
||||||
pull: always
|
|
||||||
environment:
|
|
||||||
VIKUNJA_SERVICE_TESTINGTOKEN: averyLongSecretToSe33dtheDB
|
|
||||||
VIKUNJA_LOG_LEVEL: DEBUG
|
|
||||||
|
|
||||||
steps:
|
|
||||||
# Disabled until we figure out why it is so slow
|
|
||||||
# - name: restore-cache
|
|
||||||
# image: meltwater/drone-cache:dev
|
|
||||||
# pull: always
|
|
||||||
# environment:
|
|
||||||
# AWS_ACCESS_KEY_ID:
|
|
||||||
# from_secret: cache_aws_access_key_id
|
|
||||||
# AWS_SECRET_ACCESS_KEY:
|
|
||||||
# from_secret: cache_aws_secret_access_key
|
|
||||||
# settings:
|
|
||||||
# debug: true
|
|
||||||
# restore: true
|
|
||||||
# bucket: kolaente.dev-drone-dependency-cache
|
|
||||||
# endpoint: https://s3.fr-par.scw.cloud
|
|
||||||
# region: fr-par
|
|
||||||
# path_style: true
|
|
||||||
# cache_key: '{{ .Repo.Name }}_{{ checksum "pnpm-lock.yaml" }}_{{ arch }}_{{ os }}'
|
|
||||||
# mount:
|
|
||||||
# - .cache
|
|
||||||
|
|
||||||
- name: dependencies
|
|
||||||
image: node:20.11.0-alpine
|
|
||||||
pull: always
|
|
||||||
environment:
|
|
||||||
PNPM_CACHE_FOLDER: .cache/pnpm
|
|
||||||
CYPRESS_CACHE_FOLDER: .cache/cypress
|
|
||||||
PUPPETEER_SKIP_DOWNLOAD: true
|
|
||||||
commands:
|
|
||||||
- corepack enable && pnpm config set store-dir .cache/pnpm
|
|
||||||
- pnpm install --fetch-timeout 100000
|
|
||||||
# depends_on:
|
|
||||||
# - restore-cache
|
|
||||||
|
|
||||||
- name: lint
|
|
||||||
image: node:20.11.0-alpine
|
|
||||||
pull: always
|
|
||||||
environment:
|
|
||||||
PNPM_CACHE_FOLDER: .cache/pnpm
|
|
||||||
commands:
|
|
||||||
- corepack enable && pnpm config set store-dir .cache/pnpm
|
|
||||||
- pnpm run lint
|
|
||||||
depends_on:
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
- name: build-prod
|
|
||||||
image: node:20.11.0-alpine
|
|
||||||
pull: always
|
|
||||||
environment:
|
|
||||||
PNPM_CACHE_FOLDER: .cache/pnpm
|
|
||||||
commands:
|
|
||||||
- corepack enable && pnpm config set store-dir .cache/pnpm
|
|
||||||
- pnpm run build
|
|
||||||
depends_on:
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
- name: test-unit
|
|
||||||
image: node:20.11.0-alpine
|
|
||||||
pull: always
|
|
||||||
commands:
|
|
||||||
- corepack enable && pnpm config set store-dir .cache/pnpm
|
|
||||||
- pnpm run test:unit
|
|
||||||
depends_on:
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
- name: typecheck
|
|
||||||
failure: ignore
|
|
||||||
image: node:20.11.0-alpine
|
|
||||||
pull: always
|
|
||||||
environment:
|
|
||||||
PNPM_CACHE_FOLDER: .cache/pnpm
|
|
||||||
commands:
|
|
||||||
- corepack enable && pnpm config set store-dir .cache/pnpm
|
|
||||||
- pnpm run typecheck
|
|
||||||
depends_on:
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
- name: test-frontend
|
|
||||||
image: cypress/browsers:node18.12.0-chrome107
|
|
||||||
pull: always
|
|
||||||
environment:
|
|
||||||
CYPRESS_API_URL: http://api:3456/api/v1
|
|
||||||
CYPRESS_TEST_SECRET: averyLongSecretToSe33dtheDB
|
|
||||||
PNPM_CACHE_FOLDER: .cache/pnpm
|
|
||||||
CYPRESS_CACHE_FOLDER: .cache/cypress
|
|
||||||
CYPRESS_DEFAULT_COMMAND_TIMEOUT: 60000
|
|
||||||
CYPRESS_RECORD_KEY:
|
|
||||||
from_secret: cypress_project_key
|
|
||||||
commands:
|
|
||||||
- sed -i 's/localhost/api/g' dist/index.html
|
|
||||||
- corepack enable && pnpm config set store-dir .cache/pnpm
|
|
||||||
- pnpm cypress install
|
|
||||||
- pnpm run test:e2e-record
|
|
||||||
depends_on:
|
|
||||||
- build-prod
|
|
||||||
|
|
||||||
# - name: rebuild-cache
|
|
||||||
# image: meltwater/drone-cache:dev
|
|
||||||
# pull: always
|
|
||||||
# environment:
|
|
||||||
# AWS_ACCESS_KEY_ID:
|
|
||||||
# from_secret: cache_aws_access_key_id
|
|
||||||
# AWS_SECRET_ACCESS_KEY:
|
|
||||||
# from_secret: cache_aws_secret_access_key
|
|
||||||
# settings:
|
|
||||||
# rebuild: true
|
|
||||||
# bucket: kolaente.dev-drone-dependency-cache
|
|
||||||
# endpoint: https://s3.fr-par.scw.cloud
|
|
||||||
# region: fr-par
|
|
||||||
# path_style: true
|
|
||||||
# cache_key: '{{ .Repo.Name }}_{{ checksum "pnpm-lock.yaml" }}_{{ arch }}_{{ os }}'
|
|
||||||
# mount:
|
|
||||||
# - .cache
|
|
||||||
# depends_on:
|
|
||||||
# - dependencies
|
|
||||||
|
|
||||||
- name: deploy-preview
|
|
||||||
image: williamjackson/netlify-cli
|
|
||||||
pull: always
|
|
||||||
user: root # The rest runs as root and thus the permissions wouldn't work
|
|
||||||
environment:
|
|
||||||
NETLIFY_AUTH_TOKEN:
|
|
||||||
from_secret: netlify_auth_token
|
|
||||||
NETLIFY_SITE_ID:
|
|
||||||
from_secret: netlify_site_id
|
|
||||||
GITEA_TOKEN:
|
|
||||||
from_secret: gitea_token
|
|
||||||
commands:
|
|
||||||
- cp -r dist dist-preview
|
|
||||||
# Override the default api url used for preview
|
|
||||||
- sed -i 's|http://localhost:3456|https://try.vikunja.io|g' dist-preview/index.html
|
|
||||||
- apk add --no-cache perl-utils
|
|
||||||
# create via:
|
|
||||||
# `shasum -a 384 ./scripts/deploy-preview-netlify.mjs > ./scripts/deploy-preview-netlify.mjs.sha384`
|
|
||||||
- shasum -a 384 -c ./scripts/deploy-preview-netlify.mjs.sha384
|
|
||||||
- node ./scripts/deploy-preview-netlify.mjs
|
|
||||||
depends_on:
|
|
||||||
- build-prod
|
|
||||||
when:
|
|
||||||
event:
|
|
||||||
include:
|
|
||||||
- pull_request
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: release-latest
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- build
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
- main
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: fetch-tags
|
|
||||||
image: docker:git
|
|
||||||
commands:
|
|
||||||
- git fetch --tags
|
|
||||||
|
|
||||||
# - name: restore-cache
|
|
||||||
# image: meltwater/drone-cache:dev
|
|
||||||
# pull: always
|
|
||||||
# environment:
|
|
||||||
# AWS_ACCESS_KEY_ID:
|
|
||||||
# from_secret: cache_aws_access_key_id
|
|
||||||
# AWS_SECRET_ACCESS_KEY:
|
|
||||||
# from_secret: cache_aws_secret_access_key
|
|
||||||
# settings:
|
|
||||||
# restore: true
|
|
||||||
# bucket: kolaente.dev-drone-dependency-cache
|
|
||||||
# endpoint: https://s3.fr-par.scw.cloud
|
|
||||||
# region: fr-par
|
|
||||||
# path_style: true
|
|
||||||
# cache_key: '{{ .Repo.Name }}_{{ checksum "pnpm-lock.yaml" }}_{{ arch }}_{{ os }}'
|
|
||||||
# mount:
|
|
||||||
# - .cache
|
|
||||||
|
|
||||||
- name: build
|
|
||||||
image: node:20.11.0-alpine
|
|
||||||
pull: always
|
|
||||||
environment:
|
|
||||||
PNPM_CACHE_FOLDER: .cache/pnpm
|
|
||||||
SENTRY_AUTH_TOKEN:
|
|
||||||
from_secret: sentry_auth_token
|
|
||||||
SENTRY_ORG: vikunja
|
|
||||||
SENTRY_PROJECT: frontend-oss
|
|
||||||
PUPPETEER_SKIP_DOWNLOAD: true
|
|
||||||
commands:
|
|
||||||
- apk add git
|
|
||||||
- corepack enable && pnpm config set store-dir .cache/pnpm
|
|
||||||
- pnpm install --fetch-timeout 100000 --frozen-lockfile
|
|
||||||
- pnpm run lint
|
|
||||||
- "echo '{\"VERSION\": \"'$(git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/')'\"}' > src/version.json"
|
|
||||||
- pnpm run build
|
|
||||||
- sed -i 's/http\:\\/\\/localhost\\:3456\\/api\\/v1/\\/api\\/v1/g' dist/index.html # Override the default api url used for developing
|
|
||||||
# depends_on:
|
|
||||||
# - restore-cache
|
|
||||||
|
|
||||||
- name: static
|
|
||||||
image: kolaente/zip
|
|
||||||
pull: always
|
|
||||||
commands:
|
|
||||||
- cp src/version.json dist
|
|
||||||
- cd dist
|
|
||||||
- zip -r ../vikunja-frontend-unstable.zip *
|
|
||||||
- cd ..
|
|
||||||
depends_on: [ build ]
|
|
||||||
|
|
||||||
- name: release
|
|
||||||
image: plugins/s3
|
|
||||||
pull: always
|
|
||||||
settings:
|
|
||||||
bucket: vikunja-releases
|
|
||||||
access_key:
|
|
||||||
from_secret: aws_access_key_id
|
|
||||||
secret_key:
|
|
||||||
from_secret: aws_secret_access_key
|
|
||||||
endpoint: https://s3.fr-par.scw.cloud
|
|
||||||
region: fr-par
|
|
||||||
path_style: true
|
|
||||||
source: vikunja-frontend-unstable.zip
|
|
||||||
target: /frontend/
|
|
||||||
depends_on: [ static ]
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: release-version
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- build
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- tag
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: fetch-tags
|
|
||||||
image: docker:git
|
|
||||||
commands:
|
|
||||||
- git fetch --tags
|
|
||||||
|
|
||||||
# - name: restore-cache
|
|
||||||
# image: meltwater/drone-cache:dev
|
|
||||||
# pull: always
|
|
||||||
# environment:
|
|
||||||
# AWS_ACCESS_KEY_ID:
|
|
||||||
# from_secret: cache_aws_access_key_id
|
|
||||||
# AWS_SECRET_ACCESS_KEY:
|
|
||||||
# from_secret: cache_aws_secret_access_key
|
|
||||||
# settings:
|
|
||||||
# restore: true
|
|
||||||
# bucket: kolaente.dev-drone-dependency-cache
|
|
||||||
# endpoint: https://s3.fr-par.scw.cloud
|
|
||||||
# region: fr-par
|
|
||||||
# path_style: true
|
|
||||||
# cache_key: '{{ .Repo.Name }}_{{ checksum "pnpm-lock.yaml" }}_{{ arch }}_{{ os }}'
|
|
||||||
# mount:
|
|
||||||
# - .cache
|
|
||||||
|
|
||||||
- name: build
|
|
||||||
image: node:20.11.0-alpine
|
|
||||||
pull: always
|
|
||||||
environment:
|
|
||||||
PNPM_CACHE_FOLDER: .cache/pnpm
|
|
||||||
SENTRY_AUTH_TOKEN:
|
|
||||||
from_secret: sentry_auth_token
|
|
||||||
SENTRY_ORG: vikunja
|
|
||||||
SENTRY_PROJECT: frontend-oss
|
|
||||||
commands:
|
|
||||||
- apk add git
|
|
||||||
- corepack enable && pnpm config set store-dir .cache/pnpm
|
|
||||||
- pnpm install --fetch-timeout 100000 --frozen-lockfile
|
|
||||||
- pnpm run lint
|
|
||||||
- "echo '{\"VERSION\": \"'$(git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/')'\"}' > src/version.json"
|
|
||||||
- pnpm run build
|
|
||||||
- sed -i 's/http\:\\/\\/localhost\\:3456\\/api\\/v1/\\/api\\/v1/g' dist/index.html # Override the default api url used for developing
|
|
||||||
# depends_on:
|
|
||||||
# - restore-cache
|
|
||||||
|
|
||||||
- name: static
|
|
||||||
image: kolaente/zip
|
|
||||||
pull: always
|
|
||||||
commands:
|
|
||||||
- cp src/version.json dist
|
|
||||||
- cd dist
|
|
||||||
- zip -r ../vikunja-frontend-${DRONE_TAG##v}.zip *
|
|
||||||
- cd ..
|
|
||||||
depends_on: [ build ]
|
|
||||||
|
|
||||||
- name: release
|
|
||||||
image: plugins/s3
|
|
||||||
pull: always
|
|
||||||
settings:
|
|
||||||
bucket: vikunja-releases
|
|
||||||
access_key:
|
|
||||||
from_secret: aws_access_key_id
|
|
||||||
secret_key:
|
|
||||||
from_secret: aws_secret_access_key
|
|
||||||
endpoint: https://s3.fr-par.scw.cloud
|
|
||||||
region: fr-par
|
|
||||||
path_style: true
|
|
||||||
source: vikunja-frontend-${DRONE_TAG##v}.zip
|
|
||||||
target: /frontend/
|
|
||||||
depends_on: [ static ]
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: trigger-desktop-update
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
- main
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- release-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: trigger
|
|
||||||
image: plugins/downstream
|
|
||||||
settings:
|
|
||||||
server: https://drone.kolaente.de
|
|
||||||
token:
|
|
||||||
from_secret: drone_token
|
|
||||||
repositories:
|
|
||||||
- vikunja/desktop@main
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: docker-release
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- build
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
ref:
|
|
||||||
- refs/heads/main
|
|
||||||
- "refs/tags/**"
|
|
||||||
event:
|
|
||||||
exclude:
|
|
||||||
- cron
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: fetch-tags
|
|
||||||
image: docker:git
|
|
||||||
commands:
|
|
||||||
- git fetch --tags
|
|
||||||
|
|
||||||
- name: docker-unstable
|
|
||||||
image: thegeeklab/drone-docker-buildx
|
|
||||||
privileged: true
|
|
||||||
pull: always
|
|
||||||
settings:
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
repo: vikunja/frontend
|
|
||||||
tags: unstable
|
|
||||||
build_args:
|
|
||||||
- USE_RELEASE=false
|
|
||||||
platforms:
|
|
||||||
- linux/386
|
|
||||||
- linux/amd64
|
|
||||||
- linux/arm/v6
|
|
||||||
- linux/arm/v7
|
|
||||||
- linux/arm64/v8
|
|
||||||
depends_on: [ fetch-tags ]
|
|
||||||
when:
|
|
||||||
ref:
|
|
||||||
- refs/heads/main
|
|
||||||
|
|
||||||
- name: generate-tags
|
|
||||||
image: thegeeklab/docker-autotag
|
|
||||||
environment:
|
|
||||||
DOCKER_AUTOTAG_VERSION: ${DRONE_TAG}
|
|
||||||
DOCKER_AUTOTAG_EXTRA_TAGS: latest
|
|
||||||
DOCKER_AUTOTAG_OUTPUT_FILE: .tags
|
|
||||||
depends_on: [ fetch-tags ]
|
|
||||||
when:
|
|
||||||
ref:
|
|
||||||
- "refs/tags/**"
|
|
||||||
|
|
||||||
- name: docker-release
|
|
||||||
image: thegeeklab/drone-docker-buildx
|
|
||||||
privileged: true
|
|
||||||
pull: always
|
|
||||||
settings:
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
repo: vikunja/frontend
|
|
||||||
build_args:
|
|
||||||
- USE_RELEASE=false
|
|
||||||
platforms:
|
|
||||||
- linux/386
|
|
||||||
- linux/amd64
|
|
||||||
- linux/arm/v6
|
|
||||||
- linux/arm/v7
|
|
||||||
- linux/arm64/v8
|
|
||||||
depends_on: [ generate-tags ]
|
|
||||||
when:
|
|
||||||
ref:
|
|
||||||
- "refs/tags/**"
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: notify
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
ref:
|
|
||||||
- refs/heads/main
|
|
||||||
- "refs/tags/**"
|
|
||||||
event:
|
|
||||||
exclude:
|
|
||||||
- cron
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- build
|
|
||||||
- release-version
|
|
||||||
- release-latest
|
|
||||||
- trigger-desktop-update
|
|
||||||
- docker-release
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: notify
|
|
||||||
image: plugins/matrix
|
|
||||||
settings:
|
|
||||||
homeserver: https://matrix.org
|
|
||||||
roomid: WqBDCxzghKcNflkErL:matrix.org
|
|
||||||
username:
|
|
||||||
from_secret: matrix_username
|
|
||||||
password:
|
|
||||||
from_secret: matrix_password
|
|
||||||
when:
|
|
||||||
status:
|
|
||||||
- success
|
|
||||||
- failure
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: update-translations
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branch:
|
|
||||||
include:
|
|
||||||
- main
|
|
||||||
event:
|
|
||||||
include:
|
|
||||||
- cron
|
|
||||||
cron:
|
|
||||||
- update_translations
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: download
|
|
||||||
pull: always
|
|
||||||
image: ghcr.io/kolaente/kolaente/drone-crowdin-v2:latest
|
|
||||||
settings:
|
|
||||||
crowdin_key:
|
|
||||||
from_secret: crowdin_key
|
|
||||||
project_id: 462614
|
|
||||||
target: download
|
|
||||||
download_to: src/i18n/lang/
|
|
||||||
download_export_approved_only: true
|
|
||||||
|
|
||||||
- name: move-files
|
|
||||||
pull: always
|
|
||||||
image: bash
|
|
||||||
depends_on:
|
|
||||||
- download
|
|
||||||
commands:
|
|
||||||
- mv src/i18n/lang/*/*.json src/i18n/lang
|
|
||||||
|
|
||||||
- name: push
|
|
||||||
pull: always
|
|
||||||
image: appleboy/drone-git-push
|
|
||||||
depends_on:
|
|
||||||
- move-files
|
|
||||||
settings:
|
|
||||||
author_email: "frederik@vikunja.io"
|
|
||||||
author_name: Frederick [Bot]
|
|
||||||
branch: main
|
|
||||||
commit: true
|
|
||||||
commit_message: "chore(i18n): update translations via Crowdin"
|
|
||||||
remote: "ssh://git@kolaente.dev:9022/vikunja/frontend.git"
|
|
||||||
ssh_key:
|
|
||||||
from_secret: git_push_ssh_key
|
|
||||||
|
|
||||||
- name: upload
|
|
||||||
pull: always
|
|
||||||
image: ghcr.io/kolaente/kolaente/drone-crowdin-v2:latest
|
|
||||||
depends_on:
|
|
||||||
- clone
|
|
||||||
settings:
|
|
||||||
crowdin_key:
|
|
||||||
from_secret: crowdin_key
|
|
||||||
project_id: 462614
|
|
||||||
target: upload
|
|
||||||
upload_files:
|
|
||||||
src/i18n/lang/en.json: en.json
|
|
||||||
---
|
|
||||||
kind: signature
|
|
||||||
hmac: a044c7c4db3c2a11299d4d118397e9d25be36db241723a1bbd0a2f9cc90ffdac
|
|
||||||
|
|
||||||
...
|
|
Loading…
x
Reference in New Issue
Block a user