commit dac9f0d1ed8f3430a82ab1e2eb926c002f027f45
parent f3c3070c0f5b1b6df91d4d8ff08d76fec00782fc
Author: arjoonn <arjoonn@noreply.localhost>
Date: Mon, 13 Mar 2023 04:03:23 +0000
Update curl setup to work with pipe (!57)
Branch auto created by JayporeCI
```jayporeci
╔ 🟢 : JayporeCI [sha ae2e80e6a1]
┏━ build-and-test
┃
┃ 🟢 : JciEnv [86697eeb] 0:18
┃ 🟢 : Jci [6bb12c9e] 0:22 ❮-- ['JciEnv']
┃ 🟢 : black [7ed4c97c] 0: 0 ❮-- ['JciEnv']
┃ 🟢 : pylint [f2bd2fbb] 0: 8 ❮-- ['JciEnv']
┃ 🟢 : pytest [7c01ee55] 0:25 Cov: 91% ❮-- ['JciEnv']
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Publish
┃
┃ 🟢 : DockerHubJci [40b75f9d] 1:41
┃ 🟢 : DockerHubJcienv [cd232906] 1:57
┃ 🟢 : PublishDocs [6674502c] 0:42
┃ 🟢 : PublishPypi [4a2de141] 0: 6 v0.2.23
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
```
Co-authored-by: arjoonn sharma <arjoonn.94@gmail.com>
Co-authored-by: demo <demo@example.com>
Reviewed-on: https://gitea.midpathsoftware.com/midpath/jaypore_ci/pulls/57
Diffstat:
10 files changed, 72 insertions(+), 31 deletions(-)
diff --git a/README.md b/README.md
@@ -1,5 +1,6 @@
#  Jaypore CI
+
Documentation is at : https://www.jayporeci.in
## If you are reading this on github
@@ -10,5 +11,5 @@ Documentation is at : https://www.jayporeci.in
## Usage
-- Install : `curl https://www.jayporeci.in/setup.sh | bash`
+- Install : `curl https://www.jayporeci.in/setup.sh > setup.sh && bash setup.sh -y`
- Trigger : `git push origin`
diff --git a/cicd/pre-push.sh b/cicd/pre-push.sh
@@ -12,6 +12,7 @@ run() {
echo "ENV : '$ENV' -> Sourcing from secrets"
source /jaypore_ci/repo/secrets/bin/set_env.sh $ENV
fi
+ env | awk -F\= '{print $1}'
cp -r /jaypore_ci/repo/. /jaypore_ci/run
cd /jaypore_ci/run/
git clean -fdx
diff --git a/docs/source/index.rst b/docs/source/index.rst
@@ -35,8 +35,9 @@ repository so if you want you can do this manually also.
.. code-block:: console
- cd ~/myrepository
- curl https://www.jayporeci.in/setup.sh | bash
+ $ cd ~/myrepository
+ $ curl https://www.jayporeci.in/setup.sh > setup.sh
+ $ bash setup.sh -y
**Or** you can manually install it. The names are convention, you can call your
@@ -156,8 +157,8 @@ Pipeline config
is specified at the job level.
-Secrets and env variables
-*************************
+Secrets and environment variables
+*********************************
1. JayporeCI uses [SOPS](https://github.com/mozilla/sops) to manage environment variables and secrets.
- We add `secrets/<env_name>.enc` to store secrets.
diff --git a/jaypore_ci/remotes/email.py b/jaypore_ci/remotes/email.py
@@ -47,6 +47,20 @@ class Email(Remote): # pylint: disable=too-many-instance-attributes
pass
# Do something
+ :param host: What smtp host to use.
+ :param port: Smtp port to use.
+ :param addr: Smtp address to use for login.
+ :param password: Smtp password to use for login.
+ :param email_to: Which address the email should go to.
+ :param email_from: Which address should be the sender of this email.
+ :param subject: The subject line of the email.
+ :param only_on_failure: If set to True, a single email will be sent when
+ the pipeline fails. In all other cases no email is
+ sent.
+ :param publish_interval: Determines the delay in sending another email when
+ we are sending multiple email updates in a single
+ email thread. If `only_on_failure` is set, this
+ option is ignored.
"""
@classmethod
@@ -81,7 +95,7 @@ class Email(Remote): # pylint: disable=too-many-instance-attributes
email_to: str,
email_from: str,
subject: str,
- continuous_updates: bool = False,
+ only_on_failure: bool = False,
publish_interval: int = 30,
**kwargs,
): # pylint: disable=too-many-arguments
@@ -96,7 +110,7 @@ class Email(Remote): # pylint: disable=too-many-instance-attributes
self.subject = subject
self.timeout = 10
self.publish_interval = publish_interval
- self.continuous_updates = continuous_updates
+ self.only_on_failure = only_on_failure
# ---
self.__smtp__ = None
self.__last_published_at__ = None
@@ -129,7 +143,8 @@ class Email(Remote): # pylint: disable=too-many-instance-attributes
if (
self.__last_published_at__ is not None
and (time.time() - self.__last_published_at__) < self.publish_interval
- ) or (not self.continuous_updates and status not in ("success", "failure")):
+ and status not in ("success", "failure")
+ ) or (self.only_on_failure and status != "failure"):
return
if self.__last_report__ == report:
return
diff --git a/pyproject.toml b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "jaypore_ci"
-version = "0.2.22"
+version = "0.2.23"
description = ""
authors = ["arjoonn sharma <arjoonn.94@gmail.com>"]
homepage = "https://www.jayporeci.in/"
diff --git a/secrets/bin/age b/secrets/bin/age
Binary files differ.
diff --git a/secrets/bin/age-keygen b/secrets/bin/age-keygen
Binary files differ.
diff --git a/secrets/bin/sops b/secrets/bin/sops
Binary files differ.
diff --git a/secrets/ci.enc b/secrets/ci.enc
@@ -1,16 +1,12 @@
-JAYPORE_DOCKER_USER=ENC[AES256_GCM,data:oC92MBM2hA==,iv:1GAxCOZZv0XsiX3PY3vYHnG9J8mcCwJDgNsPdvvRKFQ=,tag:v8AywYAOzvjRtWqlDBeM0g==,type:str]
-JAYPORE_DOCKER_PWD=ENC[AES256_GCM,data:CYOp9N93tnQIK+8CmMld/8loFErRvaP9BIaneUTDmgiAutpv,iv:ZIKzJaUogjGcbvophgeNw8CZvTDIBHuVaHq3ichAb9U=,tag:Sg0M8f4Nb7xWdMgwm27e7Q==,type:str]
-JAYPORE_NETLIFY_TOKEN=ENC[AES256_GCM,data:6UpWZ0ZWLKraLs1tP3wz7JbAA7nqu+afOtigAQv7FaYS8aTuM3/ozieayQ==,iv:AJXlNpKYHcg8Nh1fAop58MBmV0s/gmjxazuXtWLQqyE=,tag:91hPgDWAWYuTmnZ+Coo2Og==,type:str]
-JAYPORE_NETLIFY_SITEID=ENC[AES256_GCM,data:z4QaJ4xUM490WViYv4Acau//pkjgWCQ7kNfW3g4qASw6qLR8,iv:IPhuWvBWZxtYiL5XtQFEnR6RxOiezvc2hISdgLaBzp8=,tag:Yb8jMn2n6HK4ybqgsZNR9Q==,type:str]
-JAYPORE_PYPI_TOKEN=ENC[AES256_GCM,data:FPk9CBTboAi2H0afgWtV59IHLOC8xx3WxhN/gIzTcC+lSlXsCyyM1Zio63aWlfufBk4FJcJhpFopVVpijRGzHCpHgC/hYyUKwBO6wenNktM9Ul8LRkQJk7KVvn5cLjAS6yK/vutr3/SHXkzgef3B7EL1J8jjRjDpQQvadDyLPOf20eduWnpwp5fQa6y/KdwhDW36Z6GEzNLbUeevGeeIaidYTVTPacbIEcKh04OUGc5URro8oFv7cBzmR6srxFyqrHNJZtG1ZhZwuPVPneLj+ck=,iv:ujxVdymiIHlUCQEByVVuQqKmCvWA0P7hnxQ73vKnknk=,tag:ih1WgEOTcQmeIxtd80XFYg==,type:str]
-JAYPORE_GITEA_TOKEN=ENC[AES256_GCM,data:qQuApRUUZ5GygKg13HoddtlQY20+0yrptaCtUYHMFEl793tXvA+4XQ==,iv:QwHIUQ+5OpGxzCf8aA9bq1hLtUNaKZdAU/5TWPSmlCU=,tag:LUTvMn1EZybQUHscCIKAew==,type:str]
-JAYPORE_EMAIL_ADDR=ENC[AES256_GCM,data:xkTmiw==,iv:m8XmWl41mv10DMwc7d3oOWMOxnQf2/6VtK5T2Gws49U=,tag:sJeT0maZP61rphdpa0VOng==,type:str]
-JAYPORE_EMAIL_PASSWORD=ENC[AES256_GCM,data:eyPc/Q==,iv:uj6drBxAobrtKgF9VXDJdWCMTX57YOu5WFW7wQIWzFk=,tag:3uAljYsvCQhZ7/FZQQHjXw==,type:str]
-JAYPORE_EMAIL_TO=ENC[AES256_GCM,data:yEy5Lw==,iv:mij/qk1P/q/VzWSSE7NW5RGsO7Fpgxof0A0pm4aqYmQ=,tag:clf/3fybvqFTGZj/fOCrSA==,type:str]
-JAYPORE_EMAIL_FROM=ENC[AES256_GCM,data:YSoI7Q==,iv:6celjipnC9rNPKAb++hpY4x1TEW1ul/jnUtP6m8EyFE=,tag:6MvYSoPkCerpRhn+jSsd0Q==,type:str]
+JAYPORE_DOCKER_USER=ENC[AES256_GCM,data:/gSnrYanww==,iv:YbbR8Qm9iTPXzGHGcFZc4xPXtY6xevMKvfEk6eJlu8U=,tag:CLDG3dfo1PyODydiOB6nVQ==,type:str]
+JAYPORE_DOCKER_PWD=ENC[AES256_GCM,data:DyWhzveKJpqYzjLmB64zDKGi6JgV1QUgOji51xBgv/NKY4fa,iv:jQBAu0nxL2TebfXXSp9VcQdaklKg0mDbTDcuVXKs7Io=,tag:zLLr5yLyguvdvYfb9XlvpA==,type:str]
+JAYPORE_NETLIFY_TOKEN=ENC[AES256_GCM,data:hhWA9DznqJoKafoWn3gcer/aDUrl+IMItpnHH6kC27bT9gbV3cBAgXxvmQ==,iv:2t74vUHDZuJ+hFGY7reo8g0zoW/2HCJwgx4HNWfeI74=,tag:avaxuRztESg0IDGpNyE2pw==,type:str]
+JAYPORE_NETLIFY_SITEID=ENC[AES256_GCM,data:XkpP7xVfkm+Lg8F0YS8pIxbCWRYzAfPPq/0mobmPARcF5pas,iv:7O+W0MOvkL/tPZ0L0EAKV83wZcIkvwRicAvXWnaygfA=,tag:/vZc0tSEnXS5ryOzAVrLlw==,type:str]
+JAYPORE_PYPI_TOKEN=ENC[AES256_GCM,data:Wzu3wIfwNnr+8n+fUhKSRGQqxFhCy0lDkuF03rBC/1BPjDkhxcFWnPSi7Vn3KCukO6UcfV3Mwc/e2AaEGqhsYx1t9dLU732VcKADtrnksBtqmVDeFKyipAQX8oveIPVj6CmhA1T6UHH8DrEgDhhJ4Sh4NvXg+zRsgD0LztgNdkLW1UaCqAfP7qeCdgLhdKYijkPspcU+36H6pKaQSXg1zbIHAkjS2L89JbmWZ0Y4jRitxkJx9rdm2lsOGXHtlHYWQBU/OGg50At5tFH7qoIE6ks=,iv:f+Q5GB9+FfGBH9XnphAe28sHaVrsW5fIYIwRnBQkUpo=,tag:k2alnsZl9vmffZYwsngKIg==,type:str]
+JAYPORE_GITEA_TOKEN=ENC[AES256_GCM,data:DSjy+nvSnWwGNAVed420XX+FoqfqECWGdrLsf7EEzDbZ/Cn2FtDLmQ==,iv:tHdNbhXD2gLThSaSX2VG5cOVJGrxZ12JQ9BC/L7ntDU=,tag:TBpGcFKnCed/lm9FDf0OgQ==,type:str]
+sops_mac=ENC[AES256_GCM,data:dyEnTlv/6w0NJ1zCTMoiitQXjEKMoXKJyadg1uyVNgw/AwsHx483a251nDuMcGAsKzetMzml2CVA9FeNP9n71CdHzyKYKAy1nSUKAhdg1MJyVhW93xnvfm5Wsq4R6KRTMU0ZWz2M1nixgPssRzOZb37VWMp8uVjdMfxG8Q+DsfY=,iv:6fuVGFk8gC+dFus+m4R03RyvRzA3/R+QF33QYA+EKxY=,tag:QUhvrMdr4WZjZ85Ttj6bqQ==,type:str]
+sops_unencrypted_suffix=_unencrypted
sops_version=3.7.3
-sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxeDRPY1RjanBseFVWcVdW\nZWlFaUk3dnQyUmYzck5iUTc1Z0RvMHZyamtnCnU0aUI0cHo3a2FuRERyV0pkc05x\nWnBseURYK0xFcWxnTklmRzdoQ3BoencKLS0tIFhMUk44dDhweEpTNnJWNGZqWWRS\nclVEOTZUYllmMVBBdjkvZjVtVkVHcHMKonS5h3nfmAYNwz7zPTd0eA+eC7MffKTC\nXfPDIveZrpFJLz0YDdPiFD2sORFlTZog8bitzhgY1MZwQNqE8iZQjw==\n-----END AGE ENCRYPTED FILE-----\n
+sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxSVlDWmk2RGFVeXJObDVW\nMmNTZ0E4OGpieXV4M3VITysrUis2YnpzRVVVCklFWTNNa3VkaFdMbDVOZGRHUHgy\nNnltNkJkZ0FmdkNMR2dmaEJVSWZoRzgKLS0tIDQ2clJoKzYxamh6NkxEOWRVd2hi\nVHE1am96M1BzT0RxeHd2V2xYSSt5OFkKQH/3MqOW+2vAJHeeERfpAc2o6i3xmQI1\nGKT1ghplWIPJIvnxmPEiqMfbzrN8Rl7kTtXQvjVAFQLU2VNBeE0prw==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_0__map_recipient=age1u0zd477nnqqausg4vtxl3laxz73t5tgt9qw8enmpeeadcmes3eusw3v3m9
-sops_lastmodified=2023-02-19T07:33:53Z
-sops_mac=ENC[AES256_GCM,data:J8cqAfeAMvwA8DvtwiPbCjlUllOdgZUcgExK8HENtXhBBLEmaznI2tfB7tF2CSMLg+y9lLL8pmqQQRMr6JMCEbSSetRb0yvV2T1r9gpe5fZ5dd65gD8i1OXeAivqeeaRf8H7cGrb7wnWLn564fq26J6JR8LKahjj6+rzpawXzig=,iv:TDDm8g0bSCNSHWH+brQPUSvC1QHsl/gQ6l1JnVftxXo=,tag:eRRUTYH1+XIB/GinN7HWvQ==,type:str]
-sops_unencrypted_suffix=_unencrypted
+sops_lastmodified=2023-03-10T04:04:50Z
diff --git a/setup.sh b/setup.sh
@@ -2,6 +2,34 @@ set -o errexit
set -o nounset
set -o pipefail
+ASSUME_YES="no"
+while getopts ":y" opt; do
+ case $opt in
+ y)
+ ASSUME_YES="yes"
+ ;;
+ esac
+done
+echo "ASSUME YES: $ASSUME_YES"
+
+should_continue (){
+ if [[ "$ASSUME_YES" = "yes" ]]
+ then
+ return 0
+ fi
+ # ---
+ read -r -p "Continue? [Y/n] " response
+ if [[ "$response" = "" ]]
+ then
+ return 0
+ fi
+ if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
+ then
+ return 0
+ fi
+ return 1
+}
+
main (){
REPO_ROOT=$(git rev-parse --show-toplevel)
LOCAL_HOOK=$(echo $REPO_ROOT/.git/hooks/pre-push)
@@ -13,8 +41,7 @@ main (){
echo "Installing in repo: $REPO_ROOT"
echo "Creating folder for cicd: $REPO_ROOT/$CICD_ROOT"
# ----------------==
- read -r -p "Should we continue? [Y/n] " response
- if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
+ if should_continue;
then
echo "Creating cicd.py and pre-push.sh"
else
@@ -32,13 +59,13 @@ EOF
chmod u+x $REPO_ROOT/cicd/pre-push.sh
# ----------------==
ENV_PREFIX=''
- read -r -p "Do you want to create 'secrets' folder for environment variables? [Y/n] " response
- if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
+ echo "Creating 'secrets' folder for environment variables."
+ if should_continue
then
mkdir -p secrets/bin
PATH="$REPO_ROOT/secrets/bin:$PATH"
- read -r -p "Do you want to download age/sops binaries? [Y/n] " response
- if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
+ echo "Downloading age/sops binaries"
+ if should_continue
then
echo "Downloading age/ binaries"
wget --quiet -O $HOME/.local/bin/age http://www.jayporeci.in/bin/age &
@@ -57,8 +84,8 @@ EOF
echo "Creating new age-key at: $REPO_ROOT/secrets/ci.key"
age-keygen > $REPO_ROOT/secrets/ci.key
echo "You can now use (bash secrets/bin/edit_env.sh ci) to edit environment variables."
- read -r -p "Do you want to edit_env now? [Y/n] " response
- if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
+ echo "Editing secrets now"
+ if should_continue
then
(bash $REPO_ROOT/secrets/bin/edit_env.sh ci)
fi