From 694ba8f5ce395a7ffad395377cae6c94e98fb022 Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Sun, 28 May 2023 08:43:01 +0000 Subject: [PATCH 1/8] add nano, change editor to it --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index ada529c..36d5eb8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,14 +15,14 @@ ARG CRONICLE_EDGE_VERSION=1.6.2 ENV CRONICLE_foreground=1 ENV CRONICLE_echo=1 ENV CRONICLE_color=1 -ENV EDITOR=vi +ENV EDITOR=nano ENV MODE=manager ENV PUID=1000 ENV PGID=1000 ENV TZ=UTC #Get required packages -RUN apk update && apk add tzdata curl shadow bash xz git procps nodejs npm +RUN apk update && apk add tzdata curl shadow bash xz git procps nodejs npm nano #Make folders RUN mkdir /config && \ From 98ab91f73f2cb143714390dc7b4daf6a8fe9d4a0 Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Sun, 28 May 2023 08:59:04 +0000 Subject: [PATCH 2/8] update readme [CI SKIP] --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 964360f..8ca0330 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,13 @@ Dockerised Cronicle, based on the [Cronicle-Edge](https://github.com/cronicle-ed Can function in both the **manager** and **worker** role. +*This repo is mirrored to GitHub* + +## Links +- :tea: [Gitea Repo (source)](https://git.mrmeeb.stream/MrMeeb/cronicle-docker) +- :whale2: [Containers](https://git.mrmeeb.stream/MrMeeb/-/packages/container/cronicle/latest) - since I'm currently not also publishing them to ghcr.io +- :mirror: [GitHub mirror](https://github.com/MrMeeb/cronicle-docker) + ## Tags |Tag |Description| @@ -19,9 +26,9 @@ Tags relating to releases are also available, for locking in on a specific versi `config.json`, located in `/config/cronicle/conf/config.json`, is automatically generated on the first run of Cronicle in 'manager' mode. This file must be kept identical between the manager and any workers it controls. -If you want to configure Cronicle before first run (e.g to use a different storage engine), download `config_sample.json` and adjust accordingly before placing in `/config/cronicle/conf/config.json`. +If you want to configure Cronicle before first run (e.g to use a different storage engine), download `config_sample.json` and adjust accordingly before placing in `/config/cronicle/conf/config.json`. Make sure to change the `secret`! -:exclamation: NOTE: You must define the hostname of the container. Cronicle expects the hostname to remain the same, so the randomly-generated container hostname can cause problems if it changes. :exclamation: +:exclamation: You must define the hostname of the container. Cronicle expects the hostname to remain the same, so the randomly-generated container hostname can cause problems if it changes. :exclamation: ### Docker CLI ``` From e8d9f7c8cd6fb17bf70fd141df08b4b4d735a2af Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Sun, 28 May 2023 10:05:35 +0000 Subject: [PATCH 3/8] add LOG_LEVEL env var --- Dockerfile | 1 + README.md | 1 + root/container-init.sh | 1 + root/etc/s6-overlay/s6-rc.d/cronicle/run | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 36d5eb8..b040120 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,6 +20,7 @@ ENV MODE=manager ENV PUID=1000 ENV PGID=1000 ENV TZ=UTC +ENV LOG_LEVEL=9 #Get required packages RUN apk update && apk add tzdata curl shadow bash xz git procps nodejs npm nano diff --git a/README.md b/README.md index 8ca0330..995a861 100644 --- a/README.md +++ b/README.md @@ -87,3 +87,4 @@ This container automatically checks for scripts in `/config/init` and runs them |PUID |int |1000 |Sets the UID of the user Cronicle runs under |PGID |int |1000 |Sets the GID of the user Cronicle runs under |TZ |[List of valid TZs](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) |UTC |Sets the timezone of the container and by extension Cronicle +|LOG_LEVEL|1-10 |9 |Sets log level from `1` (quietest) to `10` (loudest)| diff --git a/root/container-init.sh b/root/container-init.sh index 394615d..ce9909a 100644 --- a/root/container-init.sh +++ b/root/container-init.sh @@ -21,6 +21,7 @@ PUID=${PUID} PGID=${PGID} TZ=${TZ} MODE=${MODE} +LOG_LEVEL=${LOG_LEVEL} ---------------------------------------------------------------------- " diff --git a/root/etc/s6-overlay/s6-rc.d/cronicle/run b/root/etc/s6-overlay/s6-rc.d/cronicle/run index ffe517e..d3b843c 100644 --- a/root/etc/s6-overlay/s6-rc.d/cronicle/run +++ b/root/etc/s6-overlay/s6-rc.d/cronicle/run @@ -1,3 +1,3 @@ #!/command/with-contenv bash # shellcheck shell=bash -exec s6-setuidgid cronicle node /app/cronicle/lib/main.js --color 1 \ No newline at end of file +exec s6-setuidgid cronicle node /app/cronicle/lib/main.js --debug_level ${LOG_LEVEL} --color ${CRONICLE_color} \ No newline at end of file From debd509868616b15be8b0a12effefa3ccf30fc59 Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Sun, 28 May 2023 10:16:53 +0000 Subject: [PATCH 4/8] add cronicle info to readme [CI SKIP] --- README.md | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 995a861..2946ff6 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,41 @@ # Cronicle Docker -![Drone (self-hosted) with branch](https://img.shields.io/drone/build/MrMeeb/cronicle-docker/main?label=main&server=https%3A%2F%2Fdrone.mrmeeb.stream&style=for-the-badge) ![Drone (self-hosted) with branch](https://img.shields.io/drone/build/MrMeeb/cronicle-docker/develop?label=develop&server=https%3A%2F%2Fdrone.mrmeeb.stream&style=for-the-badge) +![Drone (self-hosted) with branch](https://img.shields.io/drone/build/MrMeeb/cronicle-docker/main?label=latest&server=https%3A%2F%2Fdrone.mrmeeb.stream&style=for-the-badge) ![Drone (self-hosted) with branch](https://img.shields.io/drone/build/MrMeeb/cronicle-docker/develop?label=develop&server=https%3A%2F%2Fdrone.mrmeeb.stream&style=for-the-badge) -Dockerised Cronicle, based on the [Cronicle-Edge](https://github.com/cronicle-edge/cronicle-edge) fork. +Dockerised Cronicle, based on the [Cronicle-Edge](https://github.com/cronicle-edge/cronicle-edge) fork of [Cronicle](https://github.com/jhuckaby/Cronicle). This container was built to include features I value in containers, namely logging to `stdout` and configurable `PUID` and `PGID`. -Can function in both the **manager** and **worker** role. - -*This repo is mirrored to GitHub* +This container can function in both the **manager** and **worker** role. ## Links - :tea: [Gitea Repo (source)](https://git.mrmeeb.stream/MrMeeb/cronicle-docker) - :whale2: [Containers](https://git.mrmeeb.stream/MrMeeb/-/packages/container/cronicle/latest) - since I'm currently not also publishing them to ghcr.io - :mirror: [GitHub mirror](https://github.com/MrMeeb/cronicle-docker) +- :package: [Cronicle Repo](https://github.com/jhuckaby/Cronicle) +- :package: [Cronicle-Edge Repo](https://github.com/cronicle-edge/cronicle-edge) + +*This repo is mirrored to GitHub* + +## Overview + +[**Cronicle**](https://github.com/jhuckaby/Cronicle) is a multi-server task scheduler and runner, with a web based front-end UI. It handles both scheduled, repeating and on-demand jobs, targeting any number of worker servers, with real-time stats and live log viewer. It's basically a fancy [Cron](https://en.wikipedia.org/wiki/Cron) replacement written in [Node.js](https://nodejs.org/). You can give it simple shell commands, or write Plugins in virtually any language. + +![Main Screenshot](https://pixlcore.com/software/cronicle/screenshots-new/job-details-complete.png) + +## Features at a Glance + +* Single or multi-server setup. +* Automated failover to backup servers. +* Auto-discovery of nearby servers. +* Real-time job status with live log viewer. +* Plugins can be written in any language. +* Schedule events in multiple timezones. +* Optionally queue up long-running events. +* Track CPU and memory usage for each job. +* Historical stats with performance graphs. +* Simple JSON messaging system for Plugins. +* Web hooks for external notification systems. +* Simple REST API for scheduling and running events. +* API Keys for authenticating remote apps. ## Tags From a8eb04c76b24b73385819ae1d147d9c8a9612bb0 Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Sun, 28 May 2023 10:57:22 +0000 Subject: [PATCH 5/8] expose log dir to /config volume --- root/cronicle-prepare.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/root/cronicle-prepare.sh b/root/cronicle-prepare.sh index 95c9d1c..699fae4 100644 --- a/root/cronicle-prepare.sh +++ b/root/cronicle-prepare.sh @@ -103,4 +103,22 @@ else echo "'$MODE' is not a recognised appion for the MODE environment variable. Accepted appions are 'manager' and 'worker'." +fi + +#Expose log directory +if [ ! -d /config/cronicle/logs ] +then + + echo "Logs dir is missing, creating." + + cp -r /app/cronicle/logs /config/cronicle/logs + rm -rf /app/cronicle/logs + ln -s /config/cronicle/logs /app/cronicle/logs +else + + echo "Logs dir already exists. Doesn't need creating." + echo "Linking persistent logs dir back into Cronicle." + rm -rf /app/cronicle/logs + ln -s /config/cronicle/logs /app/cronicle/logs + fi \ No newline at end of file From 114c87fefe37332911d43f72b001e6446da96795 Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Mon, 29 May 2023 10:38:50 +0000 Subject: [PATCH 6/8] drone build and public to ghcr also --- .drone.yml | 61 ++++++++++++++++++++-- .gitignore | 3 +- .goreleaser.yaml => .goreleaser-gitea.yaml | 2 + .goreleaser-github.yaml | 20 +++++++ 4 files changed, 80 insertions(+), 6 deletions(-) rename .goreleaser.yaml => .goreleaser-gitea.yaml (95%) create mode 100644 .goreleaser-github.yaml diff --git a/.drone.yml b/.drone.yml index 0ac6ec2..f53cadd 100644 --- a/.drone.yml +++ b/.drone.yml @@ -41,7 +41,7 @@ steps: - refs/tags/** # Build containers from main branch -- name: build +- name: build-gitea image: thegeeklab/drone-docker-buildx privileged: true settings: @@ -56,16 +56,46 @@ steps: - linux/arm64 - linux/amd64 -- name: release +- name: build-github + image: thegeeklab/drone-docker-buildx + privileged: true + settings: + provenance: false + registry: ghcr.io + username: + from_secret: docker_username + password: + from_secret: github_token + repo: ghcr.io/mrmeeb/cronicle + platforms: + - linux/arm64 + - linux/amd64 + +- name: release-gitea image: goreleaser/goreleaser environment: GITEA_TOKEN: from_secret: gitea_token commands: - - goreleaser release + - goreleaser release -f .goreleaser-gitea.yaml when: ref: - refs/tags/** + depends_on: + - build-gitea + +- name: release-github + image: goreleaser/goreleaser + environment: + GITHUB_TOKEN: + from_secret: github_token + commands: + - goreleaser release -f .goreleaser-github.yaml + when: + ref: + - refs/tags/** + depends_on: + - build-github - name: notify image: plugins/slack @@ -76,6 +106,9 @@ steps: settings: webhook: from_secret: slack_webhook + depends_on: + - release-gitea + - release-github --- kind: pipeline @@ -100,7 +133,7 @@ steps: - echo -n "develop-${DRONE_COMMIT_SHA:0:8}, develop" > .tags # Build containers from develop branch -- name: build +- name: build-gitea image: thegeeklab/drone-docker-buildx privileged: true settings: @@ -115,6 +148,21 @@ steps: - linux/arm64 - linux/amd64 +- name: build-github + image: thegeeklab/drone-docker-buildx + privileged: true + settings: + provenance: false + registry: ghcr.io + username: + from_secret: docker_username + password: + from_secret: github_token + repo: ghcr.io/mrmeeb/cronicle + platforms: + - linux/arm64 + - linux/amd64 + - name: notify image: plugins/slack when: @@ -123,4 +171,7 @@ steps: - failure settings: webhook: - from_secret: slack_webhook \ No newline at end of file + from_secret: slack_webhook + depends_on: + - build-gitea + - build-github \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1479fe9..0b8961c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -dist/ +dist-gitea/ +dist-github/ .tags \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser-gitea.yaml similarity index 95% rename from .goreleaser.yaml rename to .goreleaser-gitea.yaml index 4adcd4c..269d860 100644 --- a/.goreleaser.yaml +++ b/.goreleaser-gitea.yaml @@ -1,3 +1,5 @@ +dist: dist-gitea + build: skip: true diff --git a/.goreleaser-github.yaml b/.goreleaser-github.yaml new file mode 100644 index 0000000..da02521 --- /dev/null +++ b/.goreleaser-github.yaml @@ -0,0 +1,20 @@ +dist: dist-github + +build: + skip: true + +archives: +- format: binary + +release: + draft: true + github: + owner: MrMeeb + name: cronicle-docker + +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' \ No newline at end of file From eefaba12cba6c22c50cc11c6301df9c7c4320df7 Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Mon, 29 May 2023 10:44:53 +0000 Subject: [PATCH 7/8] fix drone dependency graph --- .drone.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.drone.yml b/.drone.yml index f53cadd..8d1f2b6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -31,6 +31,8 @@ steps: when: ref: - refs/heads/main + depends_on: + - get-tags - name: make-tags-release image: node @@ -39,6 +41,8 @@ steps: when: ref: - refs/tags/** + depends_on: + - get-tags # Build containers from main branch - name: build-gitea @@ -55,6 +59,9 @@ steps: platforms: - linux/arm64 - linux/amd64 + depends_on: + - make-tags + - make-tags-release - name: build-github image: thegeeklab/drone-docker-buildx @@ -70,6 +77,9 @@ steps: platforms: - linux/arm64 - linux/amd64 + depends_on: + - make-tags + - make-tags-release - name: release-gitea image: goreleaser/goreleaser @@ -147,6 +157,8 @@ steps: platforms: - linux/arm64 - linux/amd64 + depends_on: + - make-tags - name: build-github image: thegeeklab/drone-docker-buildx @@ -162,6 +174,8 @@ steps: platforms: - linux/arm64 - linux/amd64 + depends_on: + - make-tags - name: notify image: plugins/slack From 0080d188abe8b8d9cd7ad369ec02f353c7522415 Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Mon, 5 Jun 2023 20:49:35 +0000 Subject: [PATCH 8/8] update readme [CI SKIP] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2946ff6..11a51d8 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This container can function in both the **manager** and **worker** role. ## Links - :tea: [Gitea Repo (source)](https://git.mrmeeb.stream/MrMeeb/cronicle-docker) -- :whale2: [Containers](https://git.mrmeeb.stream/MrMeeb/-/packages/container/cronicle/latest) - since I'm currently not also publishing them to ghcr.io +- :whale2: [Containers](https://git.mrmeeb.stream/MrMeeb/-/packages/container/cronicle/latest) (also published the GHCR) - :mirror: [GitHub mirror](https://github.com/MrMeeb/cronicle-docker) - :package: [Cronicle Repo](https://github.com/jhuckaby/Cronicle) - :package: [Cronicle-Edge Repo](https://github.com/cronicle-edge/cronicle-edge)