From e785913467c5e68b7121bba43565087660fb7af8 Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Sun, 1 Mar 2020 00:22:28 +0000 Subject: [PATCH 1/9] Initial commit --- 2-chainz/2-chainz-telegram/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 2-chainz/2-chainz-telegram/README.md diff --git a/2-chainz/2-chainz-telegram/README.md b/2-chainz/2-chainz-telegram/README.md new file mode 100644 index 000000000..74797c9af --- /dev/null +++ b/2-chainz/2-chainz-telegram/README.md @@ -0,0 +1,3 @@ +# 2 Chainz Bot + +A telegram bot that gives insightful 2 Chainz quotes. \ No newline at end of file -- 2.51.2 From 316975030d3c745d4a3c43c87f2432443a8c3f51 Mon Sep 17 00:00:00 2001 From: Anson Date: Sat, 29 Feb 2020 17:42:15 -0700 Subject: [PATCH 2/9] init commit --- 2-chainz/2-chainz-telegram/Dockerfile | 8 ++ 2-chainz/2-chainz-telegram/LICENSE | 21 ++++++ 2-chainz/2-chainz-telegram/bot.py | 84 +++++++++++++++++++++ 2-chainz/2-chainz-telegram/requirements.txt | 2 + 4 files changed, 115 insertions(+) create mode 100644 2-chainz/2-chainz-telegram/Dockerfile create mode 100644 2-chainz/2-chainz-telegram/LICENSE create mode 100644 2-chainz/2-chainz-telegram/bot.py create mode 100644 2-chainz/2-chainz-telegram/requirements.txt diff --git a/2-chainz/2-chainz-telegram/Dockerfile b/2-chainz/2-chainz-telegram/Dockerfile new file mode 100644 index 000000000..969ba01e0 --- /dev/null +++ b/2-chainz/2-chainz-telegram/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.7-slim + +COPY requirements.txt ./ +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +CMD [ "python", "./bot.py" ] \ No newline at end of file diff --git a/2-chainz/2-chainz-telegram/LICENSE b/2-chainz/2-chainz-telegram/LICENSE new file mode 100644 index 000000000..18a8b7365 --- /dev/null +++ b/2-chainz/2-chainz-telegram/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Anson Biggs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/2-chainz/2-chainz-telegram/bot.py b/2-chainz/2-chainz-telegram/bot.py new file mode 100644 index 000000000..fb2f7b8a8 --- /dev/null +++ b/2-chainz/2-chainz-telegram/bot.py @@ -0,0 +1,84 @@ +# Works with Python 3.7 +import logging +import os +import requests +import telegram +from telegram.ext import CommandHandler, Filters, MessageHandler, Updater + +TELEGRAM_TOKEN = os.environ["TELEGRAM"] + +# Enable logging +logging.basicConfig( + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO +) + +logger = logging.getLogger(__name__) +print("Bot Online") + + +# Define a few command handlers. These usually take the two arguments bot and +# update. Error handlers also receive the raised TelegramError object in error. +def start(bot, update): + """Send a message when the command /start is issued.""" + update.message.reply_text("I am started and ready to go!") + + +def help(bot, update): + """Send link to docs when the command /help is issued.""" + message = "Bug Anson" + update.message.reply_text(text=message, parse_mode=telegram.ParseMode.MARKDOWN) + + +def chainz(bot, update): + """ + Runs on any message that looks like a lost soul looking for + advice from 2 Chainz + """ + message = update.message.text + chat_id = update.message.chat_id + chainzURL = "https://chainz-rest.azurewebsites.net/api/chainz-rest" + if "2 Chainz" in message: + # Let user know bot is working + bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.TYPING) + + # Get quote from 2 Chainz API + reply = requests.get(chainzURL).json()["message"] + + # Reply with quote + update.message.reply_text(text=reply, parse_mode=telegram.ParseMode.MARKDOWN) + + +def error(bot, update, error): + """Log Errors caused by Updates.""" + logger.warning('Update "%s" caused error "%s"', update, error) + + +def main(): + """Start the bot.""" + # Create the EventHandler and pass it your bot's token. + updater = Updater(TELEGRAM_TOKEN) + + # Get the dispatcher to register handlers + dp = updater.dispatcher + + # on different commands - answer in Telegram + dp.add_handler(CommandHandler("start", start)) + dp.add_handler(CommandHandler("help", help)) + + # on noncommand i.e message - echo the message on Telegram + dp.add_handler(MessageHandler(Filters.text, chainz)) + + # log all errors + dp.add_error_handler(error) + + # Start the Bot + updater.start_polling() + + # Run the bot until you press Ctrl-C or the process receives SIGINT, + # SIGTERM or SIGABRT. This should be used most of the time, since + # start_polling() is non-blocking and will stop the bot gracefully. + updater.idle() + + +if __name__ == "__main__": + main() diff --git a/2-chainz/2-chainz-telegram/requirements.txt b/2-chainz/2-chainz-telegram/requirements.txt new file mode 100644 index 000000000..2be6790fd --- /dev/null +++ b/2-chainz/2-chainz-telegram/requirements.txt @@ -0,0 +1,2 @@ +python-telegram-bot==11.1.0 +requests==2.21.0 \ No newline at end of file -- 2.51.2 From f76f8ce1e2cd6df256c48658dc5e034e4cc32f22 Mon Sep 17 00:00:00 2001 From: Anson Date: Thu, 5 Mar 2020 14:08:51 -0700 Subject: [PATCH 3/9] api url changed --- 2-chainz/2-chainz-telegram/bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/2-chainz/2-chainz-telegram/bot.py b/2-chainz/2-chainz-telegram/bot.py index fb2f7b8a8..413219840 100644 --- a/2-chainz/2-chainz-telegram/bot.py +++ b/2-chainz/2-chainz-telegram/bot.py @@ -36,13 +36,13 @@ def chainz(bot, update): """ message = update.message.text chat_id = update.message.chat_id - chainzURL = "https://chainz-rest.azurewebsites.net/api/chainz-rest" + chainzURL = "https://api.chainz.rest/quote" if "2 Chainz" in message: # Let user know bot is working bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.TYPING) # Get quote from 2 Chainz API - reply = requests.get(chainzURL).json()["message"] + reply = requests.get(chainzURL).json()["quote"] # Reply with quote update.message.reply_text(text=reply, parse_mode=telegram.ParseMode.MARKDOWN) -- 2.51.2 From 014e4858a2068629b4ad7487e56dcff372b1aa12 Mon Sep 17 00:00:00 2001 From: Anson Date: Fri, 27 Mar 2020 20:41:13 -0700 Subject: [PATCH 4/9] made bot inline --- 2-chainz/2-chainz-telegram/bot.py | 37 +++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/2-chainz/2-chainz-telegram/bot.py b/2-chainz/2-chainz-telegram/bot.py index 413219840..b7da06b18 100644 --- a/2-chainz/2-chainz-telegram/bot.py +++ b/2-chainz/2-chainz-telegram/bot.py @@ -2,8 +2,17 @@ import logging import os import requests + +# import telegram import telegram -from telegram.ext import CommandHandler, Filters, MessageHandler, Updater +from telegram import InlineQueryResultArticle, InputTextMessageContent +from telegram.ext import ( + CommandHandler, + Filters, + MessageHandler, + Updater, + InlineQueryHandler, +) TELEGRAM_TOKEN = os.environ["TELEGRAM"] @@ -42,12 +51,33 @@ def chainz(bot, update): bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.TYPING) # Get quote from 2 Chainz API - reply = requests.get(chainzURL).json()["quote"] + reply = requests.get(chainzURL).json()["quote"] + "\n-2 Chainz" # Reply with quote update.message.reply_text(text=reply, parse_mode=telegram.ParseMode.MARKDOWN) +def inline_query(bot, update): + """ + Handles inline query. + Takes no input returns a 2 Chainz quote + """ + chainzURL = "https://api.chainz.rest/quote" + results = [] + for i in range(1, 5): + quote = requests.get(chainzURL).json()["quote"] + print(quote) # Keeping this in it makes the logs more enjoyable + results.append( + InlineQueryResultArticle( + f"{i}", + title=f"Random Quote: {i}", + input_message_content=InputTextMessageContent(quote), + ) + ) + + bot.answerInlineQuery(update.inline_query.id, results) + + def error(bot, update, error): """Log Errors caused by Updates.""" logger.warning('Update "%s" caused error "%s"', update, error) @@ -68,6 +98,9 @@ def main(): # on noncommand i.e message - echo the message on Telegram dp.add_handler(MessageHandler(Filters.text, chainz)) + # Inline Bot commands + dp.add_handler(InlineQueryHandler(inline_query)) + # log all errors dp.add_error_handler(error) -- 2.51.2 From de56fab07cac77deb33e583d04d5c75ed990cd2d Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Sat, 27 Feb 2021 17:41:06 -0700 Subject: [PATCH 5/9] Closes #1 aswell as updates telegram lib --- 2-chainz/2-chainz-telegram/bot.py | 37 ++++++++++++--------- 2-chainz/2-chainz-telegram/requirements.txt | 4 +-- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/2-chainz/2-chainz-telegram/bot.py b/2-chainz/2-chainz-telegram/bot.py index b7da06b18..ec3ab20c0 100644 --- a/2-chainz/2-chainz-telegram/bot.py +++ b/2-chainz/2-chainz-telegram/bot.py @@ -5,16 +5,18 @@ import requests # import telegram import telegram -from telegram import InlineQueryResultArticle, InputTextMessageContent +from telegram import ( + InlineQueryResultArticle, + InputTextMessageContent, +) from telegram.ext import ( CommandHandler, Filters, + InlineQueryHandler, MessageHandler, Updater, - InlineQueryHandler, ) -TELEGRAM_TOKEN = os.environ["TELEGRAM"] # Enable logging logging.basicConfig( @@ -27,18 +29,18 @@ print("Bot Online") # Define a few command handlers. These usually take the two arguments bot and # update. Error handlers also receive the raised TelegramError object in error. -def start(bot, update): +def start(update, context): """Send a message when the command /start is issued.""" update.message.reply_text("I am started and ready to go!") -def help(bot, update): +def help(update, context): """Send link to docs when the command /help is issued.""" message = "Bug Anson" update.message.reply_text(text=message, parse_mode=telegram.ParseMode.MARKDOWN) -def chainz(bot, update): +def chainz(update, context): """ Runs on any message that looks like a lost soul looking for advice from 2 Chainz @@ -48,7 +50,7 @@ def chainz(bot, update): chainzURL = "https://api.chainz.rest/quote" if "2 Chainz" in message: # Let user know bot is working - bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.TYPING) + context.bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.TYPING) # Get quote from 2 Chainz API reply = requests.get(chainzURL).json()["quote"] + "\n-2 Chainz" @@ -57,28 +59,31 @@ def chainz(bot, update): update.message.reply_text(text=reply, parse_mode=telegram.ParseMode.MARKDOWN) -def inline_query(bot, update): +def inline_query(update, context): """ - Handles inline query. + Handles inline query. Takes no input returns a 2 Chainz quote """ - chainzURL = "https://api.chainz.rest/quote" + results = [] for i in range(1, 5): - quote = requests.get(chainzURL).json()["quote"] + quote = requests.get("https://api.chainz.rest/quote").json()["quote"] + name = requests.get("https://api.chainz.rest/alias").json()["alias"] print(quote) # Keeping this in it makes the logs more enjoyable results.append( InlineQueryResultArticle( - f"{i}", - title=f"Random Quote: {i}", - input_message_content=InputTextMessageContent(quote), + id=f"{i}", + title=f"Random Quote from {name}", + input_message_content=InputTextMessageContent( + quote, parse_mode=telegram.ParseMode.MARKDOWN + ), ) ) - bot.answerInlineQuery(update.inline_query.id, results) + update.inline_query.answer(results, cache_time=1) -def error(bot, update, error): +def error(update, error): """Log Errors caused by Updates.""" logger.warning('Update "%s" caused error "%s"', update, error) diff --git a/2-chainz/2-chainz-telegram/requirements.txt b/2-chainz/2-chainz-telegram/requirements.txt index 2be6790fd..c14485822 100644 --- a/2-chainz/2-chainz-telegram/requirements.txt +++ b/2-chainz/2-chainz-telegram/requirements.txt @@ -1,2 +1,2 @@ -python-telegram-bot==11.1.0 -requests==2.21.0 \ No newline at end of file +python-telegram-bot==13.2 +requests==2.25.1 \ No newline at end of file -- 2.51.2 From 4ecf1f5a06b78b4f400f39e1c594d70c248d6c25 Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Sat, 27 Feb 2021 17:52:37 -0700 Subject: [PATCH 6/9] update python version --- 2-chainz/2-chainz-telegram/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-chainz/2-chainz-telegram/Dockerfile b/2-chainz/2-chainz-telegram/Dockerfile index 969ba01e0..37729314e 100644 --- a/2-chainz/2-chainz-telegram/Dockerfile +++ b/2-chainz/2-chainz-telegram/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.7-slim +FROM python:3.8-slim COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt -- 2.51.2 From fa74dca33652983cb1b51d6b73310a35b0ee3d4d Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Sat, 27 Feb 2021 17:52:56 -0700 Subject: [PATCH 7/9] accidentaly removed code for token --- 2-chainz/2-chainz-telegram/bot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/2-chainz/2-chainz-telegram/bot.py b/2-chainz/2-chainz-telegram/bot.py index ec3ab20c0..7a7b91e50 100644 --- a/2-chainz/2-chainz-telegram/bot.py +++ b/2-chainz/2-chainz-telegram/bot.py @@ -17,6 +17,7 @@ from telegram.ext import ( Updater, ) +TELEGRAM_TOKEN = os.environ["TELEGRAM"] # Enable logging logging.basicConfig( -- 2.51.2 From 0c3adb2a8f8cd8d4a0d076b8305bf7ddf57f5d48 Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Fri, 9 Jul 2021 23:09:30 +0000 Subject: [PATCH 8/9] updated url --- 2-chainz/2-chainz-telegram/bot.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/2-chainz/2-chainz-telegram/bot.py b/2-chainz/2-chainz-telegram/bot.py index 7a7b91e50..b10a00871 100644 --- a/2-chainz/2-chainz-telegram/bot.py +++ b/2-chainz/2-chainz-telegram/bot.py @@ -48,7 +48,7 @@ def chainz(update, context): """ message = update.message.text chat_id = update.message.chat_id - chainzURL = "https://api.chainz.rest/quote" + chainzURL = "https://chainz-rest.azurewebsites.net/quote" if "2 Chainz" in message: # Let user know bot is working context.bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.TYPING) @@ -68,8 +68,8 @@ def inline_query(update, context): results = [] for i in range(1, 5): - quote = requests.get("https://api.chainz.rest/quote").json()["quote"] - name = requests.get("https://api.chainz.rest/alias").json()["alias"] + quote = requests.get("https://chainz-rest.azurewebsites.net/quote").json()["quote"] + name = requests.get("https://chainz-rest.azurewebsites.net/alias").json()["alias"] print(quote) # Keeping this in it makes the logs more enjoyable results.append( InlineQueryResultArticle( -- 2.51.2 From c960fdc46bc0731fc98497474d988f40d93db838 Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Fri, 9 Jul 2021 23:12:00 +0000 Subject: [PATCH 9/9] Upload New File --- 2-chainz/2-chainz-telegram/.gitlab-ci.yml | 97 +++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 2-chainz/2-chainz-telegram/.gitlab-ci.yml diff --git a/2-chainz/2-chainz-telegram/.gitlab-ci.yml b/2-chainz/2-chainz-telegram/.gitlab-ci.yml new file mode 100644 index 000000000..500f8e9a9 --- /dev/null +++ b/2-chainz/2-chainz-telegram/.gitlab-ci.yml @@ -0,0 +1,97 @@ +#Following instructions (as of 2020-04-01): https://docs.gitlab.com/ee/ci/docker/using_kaniko.html +#Kaniko docs are here: https://github.com/GoogleContainerTools/kaniko +#While this example shows building to multiple registries for all branches, with a few modifications +# it can be used to build non-master branches to a "dev" container registry and only build master to +# a production container registry + +image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] + +variables: + #More Information on Kaniko Caching: https://cloud.google.com/build/docs/kaniko-cache + KANIKO_CACHE_ARGS: "--cache=true --cache-copy-layers=true --cache-ttl=24h" + VERSIONLABELMETHOD: "OnlyIfThisCommitHasVersion" # options: "OnlyIfThisCommitHasVersion","LastVersionTagInGit" + IMAGE_LABELS: > + --label org.opencontainers.image.vendor=$CI_SERVER_URL/$GITLAB_USER_LOGIN + --label org.opencontainers.image.authors=$CI_SERVER_URL/$GITLAB_USER_LOGIN + --label org.opencontainers.image.revision=$CI_COMMIT_SHA + --label org.opencontainers.image.source=$CI_PROJECT_URL + --label org.opencontainers.image.documentation=$CI_PROJECT_URL + --label org.opencontainers.image.licenses=$CI_PROJECT_URL + --label org.opencontainers.image.url=$CI_PROJECT_URL + --label vcs-url=$CI_PROJECT_URL + --label com.gitlab.ci.user=$CI_SERVER_URL/$GITLAB_USER_LOGIN + --label com.gitlab.ci.email=$GITLAB_USER_EMAIL + --label com.gitlab.ci.tagorbranch=$CI_COMMIT_REF_NAME + --label com.gitlab.ci.pipelineurl=$CI_PIPELINE_URL + --label com.gitlab.ci.commiturl=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA + --label com.gitlab.ci.cijoburl=$CI_JOB_URL + --label com.gitlab.ci.mrurl=$CI_PROJECT_URL/-/merge_requests/$CI_MERGE_REQUEST_ID + +get-latest-git-version: + stage: .pre + image: + name: alpine/git + entrypoint: [""] + rules: + - if: '$VERSIONLABELMETHOD == "LastVersionTagInGit"' + script: + - | + echo "the google kaniko container does not have git and does not have a packge manager to install it" + git clone https://github.com/GoogleContainerTools/kaniko.git + cd kaniko + echo "$(git describe --abbrev=0 --tags)" > ../VERSIONTAG.txt + echo "VERSIONTAG.txt contains $(cat ../VERSIONTAG.txt)" + artifacts: + paths: + - VERSIONTAG.txt + + +.build_with_kaniko: + #Hidden job to use as an "extends" template + stage: build + script: + - | + echo "Building and shipping image to $CI_REGISTRY_IMAGE" + #Build date for opencontainers + BUILDDATE="'$(date '+%FT%T%z' | sed -E -n 's/(\+[0-9]{2})([0-9]{2})$/\1:\2/p')'" #rfc 3339 date + IMAGE_LABELS="$IMAGE_LABELS --label org.opencontainers.image.created=$BUILDDATE --label build-date=$BUILDDATE" + #Description for opencontainers + BUILDTITLE=$(echo $CI_PROJECT_TITLE | tr " " "_") + IMAGE_LABELS="$IMAGE_LABELS --label org.opencontainers.image.title=$BUILDTITLE --label org.opencontainers.image.description=$BUILDTITLE" + #Add ref.name for opencontainers + IMAGE_LABELS="$IMAGE_LABELS --label org.opencontainers.image.ref.name=$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" + + #Build Version Label and Tag from git tag, LastVersionTagInGit was placed by a previous job artifact + if [[ "$VERSIONLABELMETHOD" == "LastVersionTagInGit" ]]; then VERSIONLABEL=$(cat VERSIONTAG.txt); fi + if [[ "$VERSIONLABELMETHOD" == "OnlyIfThisCommitHasVersion" ]]; then VERSIONLABEL=$CI_COMMIT_TAG; fi + if [[ ! -z "$VERSIONLABEL" ]]; then + IMAGE_LABELS="$IMAGE_LABELS --label org.opencontainers.image.version=$VERSIONLABEL" + ADDITIONALTAGLIST="$ADDITIONALTAGLIST $VERSIONLABEL" + fi + + ADDITIONALTAGLIST="$ADDITIONALTAGLIST $CI_COMMIT_REF_NAME $CI_COMMIT_SHORT_SHA" + if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then ADDITIONALTAGLIST="$ADDITIONALTAGLIST latest"; fi + if [[ -n "$ADDITIONALTAGLIST" ]]; then + for TAG in $ADDITIONALTAGLIST; do + FORMATTEDTAGLIST="${FORMATTEDTAGLIST} --tag $CI_REGISTRY_IMAGE:$TAG "; + done; + fi + + #Reformat Docker tags to kaniko's --destination argument: + FORMATTEDTAGLIST=$(echo "${FORMATTEDTAGLIST}" | sed s/\-\-tag/\-\-destination/g) + + echo "Kaniko arguments to run: --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile $KANIKO_CACHE_ARGS $FORMATTEDTAGLIST $IMAGE_LABELS" + mkdir -p /kaniko/.docker + echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n $CI_REGISTRY_USER:$CI_REGISTRY_PASSWORD | base64)\"}}}" > /kaniko/.docker/config.json + /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile $KANIKO_CACHE_ARGS $FORMATTEDTAGLIST $IMAGE_LABELS + + +build-for-gitlab-project-registry: + extends: .build_with_kaniko + environment: + #This is only here for completeness, since there are no CI CD Variables with this scope, the project defaults are used + # to push to this projects docker registry + name: push-to-gitlab-project-registry + -- 2.51.2