Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Schmidt <dev@dominik-schmidt.de>2019-10-16 18:01:51 +0300
committerMarkus Goetz <markus@woboq.com>2019-11-08 13:27:36 +0300
commitbe9ea817be64352a47734aa0b06bb307b78a9f6e (patch)
tree0101f1573634ce6a30db61d7770e9d285148b7e9 /.drone.star
parent9b132d5ecd8aefa89fe2c423d5ed28a9abf7e4f7 (diff)
drone: Port config to starlark
Diffstat (limited to '.drone.star')
-rw-r--r--.drone.star348
1 files changed, 348 insertions, 0 deletions
diff --git a/.drone.star b/.drone.star
new file mode 100644
index 000000000..72e6a1015
--- /dev/null
+++ b/.drone.star
@@ -0,0 +1,348 @@
+def main(ctx):
+ translations_trigger = {
+ "cron": ["translations"],
+ }
+ pipelines = [
+ # Build client and docs
+ build_and_test_client(ctx, "gcc", "g++", "Release", "Unix Makefiles"),
+ build_and_test_client(ctx, "clang", "clang++", "Debug", "Ninja"),
+ build_client_docs(ctx),
+ notification(
+ name = "build",
+ depends_on = [
+ "gcc-release-make",
+ "clang-debug-ninja",
+ "build-docs",
+ ],
+ ),
+
+ # Sync translations
+ update_translations(
+ ctx,
+ "client",
+ "translations",
+ read_image = "rabits/qt:5.12-desktop",
+ trigger = translations_trigger,
+ ),
+ update_translations(
+ ctx,
+ "nsis",
+ "admin/win/nsi/l10n",
+ write_image = "python:2.7-stretch",
+ trigger = translations_trigger,
+ depends_on = ["translations-client"], # needs to run after translations-client because drone-git-push does not rebase before pushing
+ ),
+ notification(
+ name = "translations",
+ trigger = translations_trigger,
+ depends_on = [
+ "translations-client",
+ "translations-nsis",
+ ],
+ ),
+ ]
+
+ return pipelines
+
+def whenOnline(dict):
+ if not "when" in dict:
+ dict["when"] = {}
+
+ if not "instance" in dict:
+ dict["when"]["instance"] = []
+
+ dict["when"]["instance"].append("drone.owncloud.com")
+
+ return dict
+
+def whenPush(dict):
+ if not "when" in dict:
+ dict["when"] = {}
+
+ if not "event" in dict:
+ dict["when"]["event"] = []
+
+ dict["when"]["event"].append("push")
+
+ return dict
+
+def from_secret(name):
+ return {
+ "from_secret": name,
+ }
+
+def build_and_test_client(ctx, c_compiler, cxx_compiler, build_type, generator):
+ build_command = "ninja" if generator == "Ninja" else "make"
+ pipeline_name = c_compiler + "-" + build_type.lower() + "-" + build_command
+ build_dir = "build-" + pipeline_name
+
+ return {
+ "kind": "pipeline",
+ "name": pipeline_name,
+ "platform": {
+ "os": "linux",
+ "arch": "amd64",
+ },
+ "steps": [
+ {
+ "name": "submodules",
+ "image": "docker:git",
+ "commands": [
+ "git submodule update --init --recursive",
+ ],
+ },
+ {
+ "name": "cmake",
+ "image": "owncloudci/client",
+ "pull": "always",
+ "environment": {
+ "LC_ALL": "C.UTF-8",
+ },
+ "commands": [
+ 'mkdir -p "' + build_dir + '"',
+ 'cd "' + build_dir + '"',
+ 'cmake -G"' + generator + '" -DCMAKE_C_COMPILER="' + c_compiler + '" -DCMAKE_CXX_COMPILER="' + cxx_compiler + '" -DCMAKE_BUILD_TYPE="' + build_type + '" -DBUILD_TESTING=1 ..',
+ ],
+ },
+ {
+ "name": build_command,
+ "image": "owncloudci/client",
+ "pull": "always",
+ "environment": {
+ "LC_ALL": "C.UTF-8",
+ },
+ "commands": [
+ 'cd "' + build_dir + '"',
+ build_command + " -j4",
+ ],
+ },
+ {
+ "name": "ctest",
+ "image": "owncloudci/client",
+ "pull": "always",
+ "environment": {
+ "LC_ALL": "C.UTF-8",
+ },
+ "commands": [
+ 'cd "' + build_dir + '"',
+ "useradd -m -s /bin/bash tester",
+ "chown -R tester:tester .",
+ "su-exec tester ctest --output-on-failure -LE nodrone",
+ ],
+ },
+ ],
+ "trigger": {
+ "event": [
+ "push",
+ "pull_request",
+ "tag",
+ ],
+ },
+ }
+
+def build_client_docs(ctx):
+ return {
+ "kind": "pipeline",
+ "name": "build-docs",
+ "platform": {
+ "os": "linux",
+ "arch": "amd64",
+ },
+ "steps": [
+ whenOnline({
+ "name": "cache-restore",
+ "image": "plugins/s3-cache:1",
+ "pull": "always",
+ "settings": {
+ "endpoint": from_secret("cache_s3_endpoint"),
+ "access_key": from_secret("cache_s3_access_key"),
+ "secret_key": from_secret("cache_s3_secret_key"),
+ "restore": True,
+ },
+ }),
+ {
+ "name": "docs-deps",
+ "image": "owncloudci/nodejs:11",
+ "pull": "always",
+ "commands": [
+ "cd docs/",
+ "yarn install",
+ ],
+ },
+ {
+ "name": "docs-validate",
+ "image": "owncloudci/nodejs:11",
+ "pull": "always",
+ "commands": [
+ "cd docs/",
+ "yarn validate",
+ ],
+ },
+ {
+ "name": "docs-build",
+ "image": "owncloudci/nodejs:11",
+ "pull": "always",
+ "commands": [
+ "cd docs/",
+ "yarn antora",
+ ],
+ },
+ {
+ "name": "docs-pdf",
+ "image": "owncloudci/asciidoctor:latest",
+ "pull": "always",
+ "commands": [
+ "cd docs/",
+ "make pdf",
+ ],
+ },
+ {
+ "name": "docs-artifacts",
+ "image": "owncloud/ubuntu:latest",
+ "pull": "always",
+ "commands": [
+ "tree docs/public/",
+ ],
+ },
+ whenOnline(whenPush({
+ "name": "cache-rebuild",
+ "image": "plugins/s3-cache:1",
+ "pull": "always",
+ "settings": {
+ "endpoint": from_secret("cache_s3_endpoint"),
+ "access_key": from_secret("cache_s3_access_key"),
+ "secret_key": from_secret("cache_s3_secret_key"),
+ "rebuild": True,
+ "mount": "docs/cache",
+ },
+ })),
+ whenOnline(whenPush({
+ "name": "cache-flush",
+ "image": "plugins/s3-cache:1",
+ "pull": "always",
+ "settings": {
+ "endpoint": from_secret("cache_s3_endpoint"),
+ "access_key": from_secret("cache_s3_access_key"),
+ "secret_key": from_secret("cache_s3_secret_key"),
+ "flush": True,
+ "flush_age": 14,
+ },
+ })),
+ whenOnline(whenPush({
+ "name": "upload-pdf",
+ "image": "plugins/s3-sync:1",
+ "pull": "always",
+ "environment": {
+ "AWS_ACCESS_KEY_ID": from_secret("aws_access_key_id"),
+ "AWS_SECRET_ACCESS_KEY": from_secret("aws_secret_access_key"),
+ },
+ "settings": {
+ "bucket": "uploads",
+ "endpoint": "https://doc.owncloud.com",
+ "path_style": True,
+ "source": "docs/build/",
+ "target": "/deploy/",
+ "delete": False,
+ },
+ })),
+ ],
+ "trigger": {
+ "event": [
+ "push",
+ "pull_request",
+ "tag",
+ ],
+ },
+ }
+
+def make(target, path, image = "owncloudci/transifex:latest"):
+ return {
+ "name": target,
+ "image": image,
+ "pull": "always",
+ "environment": {
+ "TX_TOKEN": from_secret("tx_token"),
+ },
+ "commands": [
+ 'cd "' + path + '"',
+ "make " + target,
+ ],
+ }
+
+def update_translations(ctx, name, path, read_image = "owncloudci/transifex:latest", write_image = "owncloudci/transifex:latest", trigger = {}, depends_on = []):
+ return {
+ "kind": "pipeline",
+ "name": "translations-" + name,
+ "platform": {
+ "os": "linux",
+ "arch": "amd64",
+ },
+ "steps": [
+ make("l10n-read", path, read_image),
+ make("l10n-push", path),
+ make("l10n-pull", path),
+ make("l10n-write", path, write_image),
+ make("l10n-clean", path),
+ # keep time window for commit races as small as possible
+ {
+ "name": "update-repo-before-commit",
+ "image": "docker:git",
+ "commands": [
+ "git stash",
+ "git pull --ff-only origin +refs/heads/$${DRONE_BRANCH}",
+ '[ "$(git stash list)" = "" ] || git stash pop',
+ ],
+ },
+ whenOnline({
+ "name": "commit",
+ "image": "appleboy/drone-git-push",
+ "pull": "always",
+ "settings": {
+ "ssh_key": from_secret("git_push_ssh_key"),
+ "author_name": "ownClouders",
+ "author_email": "devops@owncloud.com",
+ "remote_name": "origin",
+ "branch": "${DRONE_BRANCH}",
+ "empty_commit": False,
+ "commit": True,
+ "commit_message": "[tx] updated " + name + " translations from transifex",
+ "no_verify": True,
+ },
+ }),
+ ],
+ "trigger": trigger,
+ "depends_on": depends_on,
+ }
+
+def notification(name, depends_on = [], trigger = {}):
+ trigger = dict(trigger)
+ if not "status" in trigger:
+ trigger["status"] = []
+
+ trigger["status"].append("success")
+ trigger["status"].append("failure")
+
+ return {
+ "kind": "pipeline",
+ "name": "notifications-" + name,
+ "platform": {
+ "os": "linux",
+ "arch": "amd64",
+ },
+ "clone": {
+ "disable": True,
+ },
+ "steps": [
+ {
+ "name": "notification",
+ "image": "plugins/slack",
+ "pull": "always",
+ "settings": {
+ "webhook": from_secret("slack_webhook"),
+ "channel": "desktop",
+ },
+ },
+ ],
+ "trigger": trigger,
+ "depends_on": depends_on,
+ }