Frontend Roadmap here:
https://my.vikunja.cloud/share/UrdhKPqumxDXUbYpEGJLSIyNTwAnbBzVlwdDpRbv/auth
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
652 lines
14 KiB
652 lines
14 KiB
--- |
|
kind: pipeline |
|
name: build |
|
|
|
trigger: |
|
branch: |
|
include: |
|
- main |
|
event: |
|
include: |
|
- push |
|
- pull_request |
|
|
|
services: |
|
- name: api |
|
image: vikunja/api:unstable |
|
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: true |
|
# 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 "yarn.lock" }}_{{ arch }}_{{ os }}' |
|
# mount: |
|
# - '.cache' |
|
|
|
- name: dependencies |
|
image: node:18 |
|
pull: true |
|
environment: |
|
YARN_CACHE_FOLDER: .cache/yarn/ |
|
CYPRESS_CACHE_FOLDER: .cache/cypress/ |
|
commands: |
|
- yarn --frozen-lockfile --network-timeout 100000 |
|
# depends_on: |
|
# - restore-cache |
|
|
|
# - name: rebuild-cache |
|
# image: meltwater/drone-cache:dev |
|
# pull: true |
|
# 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 "yarn.lock" }}_{{ arch }}_{{ os }}' |
|
# mount: |
|
# - '.cache' |
|
# depends_on: |
|
# - dependencies |
|
|
|
- name: lint |
|
image: node:18 |
|
pull: true |
|
environment: |
|
YARN_CACHE_FOLDER: .cache/yarn/ |
|
CYPRESS_CACHE_FOLDER: .cache/cypress/ |
|
commands: |
|
- yarn run lint |
|
depends_on: |
|
- dependencies |
|
|
|
- name: build-prod |
|
image: node:18 |
|
pull: true |
|
environment: |
|
YARN_CACHE_FOLDER: .cache/yarn/ |
|
commands: |
|
- yarn build |
|
depends_on: |
|
- dependencies |
|
|
|
- name: test-unit |
|
image: node:18 |
|
pull: true |
|
commands: |
|
- yarn test:unit |
|
depends_on: |
|
- dependencies |
|
|
|
- name: typecheck |
|
failure: ignore |
|
image: node:18 |
|
pull: true |
|
commands: |
|
- yarn typecheck |
|
depends_on: |
|
- dependencies |
|
|
|
- name: test-frontend |
|
image: cypress/browsers:node16.5.0-chrome94-ff93 |
|
pull: true |
|
environment: |
|
CYPRESS_API_URL: http://api:3456/api/v1 |
|
CYPRESS_TEST_SECRET: averyLongSecretToSe33dtheDB |
|
YARN_CACHE_FOLDER: .cache/yarn/ |
|
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 |
|
- yarn serve:dist & npx wait-on http://localhost:4173 |
|
- yarn test:frontend --browser chrome --record |
|
depends_on: |
|
- build-prod |
|
|
|
- name: deploy-preview |
|
image: node:18 |
|
pull: true |
|
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|localhost:3456|try.vikunja.io|g' dist-preview/index.html |
|
- shasum -a 384 -c ./scripts/deploy-preview-netlify.js.sha384 |
|
- node ./scripts/deploy-preview-netlify.js |
|
depends_on: |
|
- build-prod |
|
when: |
|
event: |
|
include: |
|
- pull_request |
|
|
|
--- |
|
kind: pipeline |
|
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: true |
|
# 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 "yarn.lock" }}_{{ arch }}_{{ os }}' |
|
# mount: |
|
# - '.cache' |
|
|
|
- name: build |
|
image: node:18 |
|
pull: true |
|
group: build-static |
|
environment: |
|
YARN_CACHE_FOLDER: .cache/yarn/ |
|
commands: |
|
- yarn --frozen-lockfile --network-timeout 100000 |
|
- yarn run lint |
|
- "echo '{\"VERSION\": \"'$(git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/')'\"}' > src/version.json" |
|
- yarn 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: true |
|
commands: |
|
- cd dist |
|
- zip -r ../vikunja-frontend-unstable.zip * |
|
- cd .. |
|
depends_on: [ build ] |
|
|
|
- name: release |
|
image: plugins/s3 |
|
pull: true |
|
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 |
|
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: true |
|
# 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 "yarn.lock" }}_{{ arch }}_{{ os }}' |
|
# mount: |
|
# - '.cache' |
|
|
|
- name: build |
|
image: node:18 |
|
pull: true |
|
group: build-static |
|
environment: |
|
YARN_CACHE_FOLDER: .cache/yarn/ |
|
commands: |
|
- yarn --frozen-lockfile --network-timeout 100000 |
|
- yarn run lint |
|
- "echo '{\"VERSION\": \"'$(git describe --tags --always --abbrev=10 | sed 's/-/+/' | sed 's/^v//' | sed 's/-g/-/')'\"}' > src/version.json" |
|
- yarn 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: true |
|
commands: |
|
- cd dist |
|
- zip -r ../vikunja-frontend-${DRONE_TAG##v}.zip * |
|
- cd .. |
|
depends_on: [ build ] |
|
|
|
- name: release |
|
image: plugins/s3 |
|
pull: true |
|
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 |
|
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-arm-release |
|
|
|
depends_on: |
|
- release-latest |
|
- release-version |
|
|
|
platform: |
|
os: linux |
|
arch: arm64 |
|
|
|
trigger: |
|
ref: |
|
- refs/heads/main |
|
- "refs/tags/**" |
|
event: |
|
exclude: |
|
- cron |
|
|
|
steps: |
|
- name: docker-unstable |
|
image: plugins/docker:linux-arm |
|
pull: true |
|
settings: |
|
username: |
|
from_secret: docker_username |
|
password: |
|
from_secret: docker_password |
|
repo: vikunja/frontend |
|
tags: unstable-linux-arm |
|
build_args: |
|
- USE_RELEASE=true |
|
- RELEASE_VERSION=unstable |
|
when: |
|
ref: |
|
- refs/heads/main |
|
depends_on: |
|
- clone |
|
|
|
- name: docker-version |
|
image: plugins/docker:linux-arm |
|
pull: true |
|
settings: |
|
username: |
|
from_secret: docker_username |
|
password: |
|
from_secret: docker_password |
|
repo: vikunja/frontend |
|
auto_tag: true |
|
auto_tag_suffix: linux-arm |
|
build_args: |
|
- USE_RELEASE=true |
|
- RELEASE_VERSION=${DRONE_TAG##v} |
|
when: |
|
ref: |
|
- "refs/tags/**" |
|
depends_on: |
|
- clone |
|
|
|
- name: docker-unstable-arm64 |
|
image: plugins/docker:linux-arm64 |
|
pull: true |
|
settings: |
|
username: |
|
from_secret: docker_username |
|
password: |
|
from_secret: docker_password |
|
repo: vikunja/frontend |
|
tags: unstable-linux-arm64 |
|
build_args: |
|
- USE_RELEASE=true |
|
- RELEASE_VERSION=unstable |
|
when: |
|
ref: |
|
- refs/heads/main |
|
depends_on: |
|
- clone |
|
|
|
- name: docker-version-arm64 |
|
image: plugins/docker:linux-arm64 |
|
pull: true |
|
settings: |
|
username: |
|
from_secret: docker_username |
|
password: |
|
from_secret: docker_password |
|
repo: vikunja/frontend |
|
auto_tag: true |
|
auto_tag_suffix: linux-arm64 |
|
build_args: |
|
- USE_RELEASE=true |
|
- RELEASE_VERSION=${DRONE_TAG##v} |
|
when: |
|
ref: |
|
- "refs/tags/**" |
|
depends_on: |
|
- clone |
|
|
|
--- |
|
kind: pipeline |
|
type: docker |
|
name: docker-amd64-release |
|
|
|
platform: |
|
os: linux |
|
arch: amd64 |
|
|
|
depends_on: |
|
- release-latest |
|
- release-version |
|
|
|
trigger: |
|
ref: |
|
- refs/heads/main |
|
- "refs/tags/**" |
|
event: |
|
exclude: |
|
- cron |
|
|
|
steps: |
|
- name: docker-unstable |
|
image: plugins/docker:linux-amd64 |
|
pull: true |
|
settings: |
|
username: |
|
from_secret: docker_username |
|
password: |
|
from_secret: docker_password |
|
repo: vikunja/frontend |
|
tags: unstable-linux-amd64 |
|
build_args: |
|
- USE_RELEASE=true |
|
- RELEASE_VERSION=unstable |
|
when: |
|
ref: |
|
- refs/heads/main |
|
|
|
- name: docker-version |
|
image: plugins/docker:linux-amd64 |
|
pull: true |
|
settings: |
|
username: |
|
from_secret: docker_username |
|
password: |
|
from_secret: docker_password |
|
repo: vikunja/frontend |
|
auto_tag: true |
|
auto_tag_suffix: linux-amd64 |
|
build_args: |
|
- USE_RELEASE=true |
|
- RELEASE_VERSION=${DRONE_TAG##v} |
|
when: |
|
ref: |
|
- "refs/tags/**" |
|
|
|
--- |
|
kind: pipeline |
|
type: docker |
|
name: docker-manifest |
|
|
|
trigger: |
|
ref: |
|
- refs/heads/main |
|
- "refs/tags/**" |
|
event: |
|
exclude: |
|
- cron |
|
|
|
depends_on: |
|
- docker-amd64-release |
|
- docker-arm-release |
|
|
|
steps: |
|
- name: manifest-unstable |
|
pull: always |
|
image: plugins/manifest |
|
settings: |
|
tags: unstable |
|
spec: docker-manifest-unstable.tmpl |
|
password: |
|
from_secret: docker_password |
|
username: |
|
from_secret: docker_username |
|
when: |
|
ref: |
|
- refs/heads/main |
|
|
|
- name: manifest-release |
|
pull: always |
|
image: plugins/manifest |
|
settings: |
|
auto_tag: true |
|
ignore_missing: true |
|
spec: docker-manifest.tmpl |
|
password: |
|
from_secret: docker_password |
|
username: |
|
from_secret: docker_username |
|
when: |
|
ref: |
|
- "refs/tags/**" |
|
|
|
- name: manifest-release-latest |
|
pull: always |
|
image: plugins/manifest |
|
depends_on: |
|
- clone |
|
settings: |
|
tags: latest |
|
ignore_missing: true |
|
spec: docker-manifest.tmpl |
|
password: |
|
from_secret: docker_password |
|
username: |
|
from_secret: docker_username |
|
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-arm-release |
|
- docker-amd64-release |
|
- docker-manifest |
|
|
|
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 |
|
|
|
depends_on: |
|
- build |
|
|
|
trigger: |
|
branch: |
|
- main |
|
event: |
|
- cron |
|
cron: |
|
- update_translations |
|
|
|
steps: |
|
- name: download |
|
pull: always |
|
image: jonasfranz/crowdin |
|
settings: |
|
download: true |
|
export_dir: src/i18n/lang/ |
|
ignore_branch: true |
|
project_identifier: vikunja |
|
environment: |
|
CROWDIN_KEY: |
|
from_secret: crowdin_key |
|
|
|
- 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: "[skip ci] Updated translations via Crowdin" |
|
remote: "ssh://git@kolaente.dev:9022/vikunja/frontend.git" |
|
ssh_key: |
|
from_secret: translation_git_push_ssh_key |
|
|
|
- name: upload |
|
pull: always |
|
image: jonasfranz/crowdin |
|
depends_on: |
|
- clone |
|
settings: |
|
files: |
|
en.json: src/i18n/lang/en.json |
|
ignore_branch: true |
|
project_identifier: vikunja |
|
environment: |
|
CROWDIN_KEY: |
|
from_secret: crowdin_key |
|
--- |
|
kind: signature |
|
hmac: 997e1badebe484ac29557c4af356e63db4d3d57f3d32e92d482f117f8cec64da |
|
|
|
...
|
|
|