This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitLab Bot

This is a GitLab bot, which at the moment only promotes changes from a source branch to a target branch by creating a merge request whenever the contents of the two branches differ. It supports GitLab webhooks to automatically check for changes on the project whenever GitLab receives a push.

Features

  • Support for GitLab webhooks to automatically check for changes on push
  • Automatically create merge requests if branch contents differ
  • Project-specific configuration via a gitlab-bot.yml file
  • Attach specified labels to automatically created merge requests

Project Configuration

Note: Unless already done, please install the bot server before configuring a project.

  1. Create a gitlab-bot.yml in the default branch of the project you want to enable GitLab Bot for. This is an example:

    promote_branches:
    - source: exp
    target: sandbox
    labels:
    - Automated
    - source: sandbox
    target: production
    labels:
    - Automated
    
    • source and target refer to the source and target branch
    • labels refers to GitLab labels attached to the create merger requests.
  2. Set up a GitLab webhook integration for the project.

    • URL: https://<gitlab-bot-host>/webhook
    • Secret Token: As configured for the bot
    • Trigger: Only 'Push Events'
    • Enable SSL verification: Yes
  3. Add the GitLab bot user to the project.

    • Role: Developer

Installation

GitLab User

Create a GitLab user with the following settings:

  • Access Level: Regular
  • External: Yes (no need to give this user more access than necessary)
  • URL: Add a link to this project repository to allow users to understand the bot (optional).

Log in as this user (unless you can't due to SSO), otherwise you must be a GitLab admin and impersonate it.

Go to the user's Settings, Access Tokens and create a new personal access token with the following setting:

  • Scopes:api

You might also want to disable all email notifications for the user under Settings, Notifications.

Bot Server

For a server deploment, GitLab bot needs the following environment variables set:

  • APP_URL - The GitLab instance URL
  • APP_PRIVATE_TOKEN - A private token to authenticate against GitLab as GitLab user.
  • APP_SERVER_WEBHOOK_AUTH_TOKEN - A random value that needs to be shared with GitLab, for authentication (generate e.g. using openssl rand -hex 20). The value set here must be put into the Secret Token field in GitLab, as shown above.

Deployment

Deployment happens automatically via GitLab CI on Kubernetes (via kustomize). See .gitlab-ci.yml and kubernetes/ for details.

For recreating the secret containing the environment variables above, you can use the following command:

kubectl create secret generic gitlab-bot \
--from-literal=APP_URL=https://gitlab.example.com \
--from-literal=APP_SERVER_WEBHOOK_AUTH_TOKEN='randomly-generated-string' \
--from-literal=APP_PRIVATE_TOKEN=='token-from-gitlab'

About

A GitLab bot, creating merge requests for promoting changes between branches.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitLab Bot

This is a GitLab bot, which at the moment only promotes changes from a source branch to a target branch by creating a merge request whenever the contents of the two branches differ. It supports GitLab webhooks to automatically check for changes on the project whenever GitLab receives a push.

Features

  • Support for GitLab webhooks to automatically check for changes on push
  • Automatically create merge requests if branch contents differ
  • Project-specific configuration via a gitlab-bot.yml file
  • Attach specified labels to automatically created merge requests

Project Configuration

Note: Unless already done, please install the bot server before configuring a project.

  1. Create a gitlab-bot.yml in the default branch of the project you want to enable GitLab Bot for. This is an example:

    promote_branches:
    - source: exp
    target: sandbox
    labels:
    - Automated
    - source: sandbox
    target: production
    labels:
    - Automated
    
    • source and target refer to the source and target branch
    • labels refers to GitLab labels attached to the create merger requests.
  2. Set up a GitLab webhook integration for the project.

    • URL: https://<gitlab-bot-host>/webhook
    • Secret Token: As configured for the bot
    • Trigger: Only 'Push Events'
    • Enable SSL verification: Yes
  3. Add the GitLab bot user to the project.

    • Role: Developer

Installation

GitLab User

Create a GitLab user with the following settings:

  • Access Level: Regular
  • External: Yes (no need to give this user more access than necessary)
  • URL: Add a link to this project repository to allow users to understand the bot (optional).

Log in as this user (unless you can't due to SSO), otherwise you must be a GitLab admin and impersonate it.

Go to the user's Settings, Access Tokens and create a new personal access token with the following setting:

  • Scopes:api

You might also want to disable all email notifications for the user under Settings, Notifications.

Bot Server

For a server deploment, GitLab bot needs the following environment variables set:

  • APP_URL - The GitLab instance URL
  • APP_PRIVATE_TOKEN - A private token to authenticate against GitLab as GitLab user.
  • APP_SERVER_WEBHOOK_AUTH_TOKEN - A random value that needs to be shared with GitLab, for authentication (generate e.g. using openssl rand -hex 20). The value set here must be put into the Secret Token field in GitLab, as shown above.

Deployment

Deployment happens automatically via GitLab CI on Kubernetes (via kustomize). See .gitlab-ci.yml and kubernetes/ for details.

For recreating the secret containing the environment variables above, you can use the following command:

kubectl create secret generic gitlab-bot \
--from-literal=APP_URL=https://gitlab.example.com \
--from-literal=APP_SERVER_WEBHOOK_AUTH_TOKEN='randomly-generated-string' \
--from-literal=APP_PRIVATE_TOKEN=='token-from-gitlab'

About

A GitLab bot, creating merge requests for promoting changes between branches.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitLab Bot

This is a GitLab bot, which at the moment only promotes changes from a source branch to a target branch by creating a merge request whenever the contents of the two branches differ. It supports GitLab webhooks to automatically check for changes on the project whenever GitLab receives a push.

Features

  • Support for GitLab webhooks to automatically check for changes on push
  • Automatically create merge requests if branch contents differ
  • Project-specific configuration via a gitlab-bot.yml file
  • Attach specified labels to automatically created merge requests

Project Configuration

Note: Unless already done, please install the bot server before configuring a project.

  1. Create a gitlab-bot.yml in the default branch of the project you want to enable GitLab Bot for. This is an example:

    promote_branches:
    - source: exp
    target: sandbox
    labels:
    - Automated
    - source: sandbox
    target: production
    labels:
    - Automated
    
    • source and target refer to the source and target branch
    • labels refers to GitLab labels attached to the create merger requests.
  2. Set up a GitLab webhook integration for the project.

    • URL: https://<gitlab-bot-host>/webhook
    • Secret Token: As configured for the bot
    • Trigger: Only 'Push Events'
    • Enable SSL verification: Yes
  3. Add the GitLab bot user to the project.

    • Role: Developer

Installation

GitLab User

Create a GitLab user with the following settings:

  • Access Level: Regular
  • External: Yes (no need to give this user more access than necessary)
  • URL: Add a link to this project repository to allow users to understand the bot (optional).

Log in as this user (unless you can't due to SSO), otherwise you must be a GitLab admin and impersonate it.

Go to the user's Settings, Access Tokens and create a new personal access token with the following setting:

  • Scopes:api

You might also want to disable all email notifications for the user under Settings, Notifications.

Bot Server

For a server deploment, GitLab bot needs the following environment variables set:

  • APP_URL - The GitLab instance URL
  • APP_PRIVATE_TOKEN - A private token to authenticate against GitLab as GitLab user.
  • APP_SERVER_WEBHOOK_AUTH_TOKEN - A random value that needs to be shared with GitLab, for authentication (generate e.g. using openssl rand -hex 20). The value set here must be put into the Secret Token field in GitLab, as shown above.

Deployment

Deployment happens automatically via GitLab CI on Kubernetes (via kustomize). See .gitlab-ci.yml and kubernetes/ for details.

For recreating the secret containing the environment variables above, you can use the following command:

kubectl create secret generic gitlab-bot \
--from-literal=APP_URL=https://gitlab.example.com \
--from-literal=APP_SERVER_WEBHOOK_AUTH_TOKEN='randomly-generated-string' \
--from-literal=APP_PRIVATE_TOKEN=='token-from-gitlab'

About

A GitLab bot, creating merge requests for promoting changes between branches.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitLab Bot

This is a GitLab bot, which at the moment only promotes changes from a source branch to a target branch by creating a merge request whenever the contents of the two branches differ. It supports GitLab webhooks to automatically check for changes on the project whenever GitLab receives a push.

Features

  • Support for GitLab webhooks to automatically check for changes on push
  • Automatically create merge requests if branch contents differ
  • Project-specific configuration via a gitlab-bot.yml file
  • Attach specified labels to automatically created merge requests

Project Configuration

Note: Unless already done, please install the bot server before configuring a project.

  1. Create a gitlab-bot.yml in the default branch of the project you want to enable GitLab Bot for. This is an example:

    promote_branches:
    - source: exp
    target: sandbox
    labels:
    - Automated
    - source: sandbox
    target: production
    labels:
    - Automated
    
    • source and target refer to the source and target branch
    • labels refers to GitLab labels attached to the create merger requests.
  2. Set up a GitLab webhook integration for the project.

    • URL: https://<gitlab-bot-host>/webhook
    • Secret Token: As configured for the bot
    • Trigger: Only 'Push Events'
    • Enable SSL verification: Yes
  3. Add the GitLab bot user to the project.

    • Role: Developer

Installation

GitLab User

Create a GitLab user with the following settings:

  • Access Level: Regular
  • External: Yes (no need to give this user more access than necessary)
  • URL: Add a link to this project repository to allow users to understand the bot (optional).

Log in as this user (unless you can't due to SSO), otherwise you must be a GitLab admin and impersonate it.

Go to the user's Settings, Access Tokens and create a new personal access token with the following setting:

  • Scopes:api

You might also want to disable all email notifications for the user under Settings, Notifications.

Bot Server

For a server deploment, GitLab bot needs the following environment variables set:

  • APP_URL - The GitLab instance URL
  • APP_PRIVATE_TOKEN - A private token to authenticate against GitLab as GitLab user.
  • APP_SERVER_WEBHOOK_AUTH_TOKEN - A random value that needs to be shared with GitLab, for authentication (generate e.g. using openssl rand -hex 20). The value set here must be put into the Secret Token field in GitLab, as shown above.

Deployment

Deployment happens automatically via GitLab CI on Kubernetes (via kustomize). See .gitlab-ci.yml and kubernetes/ for details.

For recreating the secret containing the environment variables above, you can use the following command:

kubectl create secret generic gitlab-bot \
--from-literal=APP_URL=https://gitlab.example.com \
--from-literal=APP_SERVER_WEBHOOK_AUTH_TOKEN='randomly-generated-string' \
--from-literal=APP_PRIVATE_TOKEN=='token-from-gitlab'

About

A GitLab bot, creating merge requests for promoting changes between branches.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitLab Bot

This is a GitLab bot, which at the moment only promotes changes from a source branch to a target branch by creating a merge request whenever the contents of the two branches differ. It supports GitLab webhooks to automatically check for changes on the project whenever GitLab receives a push.

Features

  • Support for GitLab webhooks to automatically check for changes on push
  • Automatically create merge requests if branch contents differ
  • Project-specific configuration via a gitlab-bot.yml file
  • Attach specified labels to automatically created merge requests

Project Configuration

Note: Unless already done, please install the bot server before configuring a project.

  1. Create a gitlab-bot.yml in the default branch of the project you want to enable GitLab Bot for. This is an example:

    promote_branches:
    - source: exp
    target: sandbox
    labels:
    - Automated
    - source: sandbox
    target: production
    labels:
    - Automated
    
    • source and target refer to the source and target branch
    • labels refers to GitLab labels attached to the create merger requests.
  2. Set up a GitLab webhook integration for the project.

    • URL: https://<gitlab-bot-host>/webhook
    • Secret Token: As configured for the bot
    • Trigger: Only 'Push Events'
    • Enable SSL verification: Yes
  3. Add the GitLab bot user to the project.

    • Role: Developer

Installation

GitLab User

Create a GitLab user with the following settings:

  • Access Level: Regular
  • External: Yes (no need to give this user more access than necessary)
  • URL: Add a link to this project repository to allow users to understand the bot (optional).

Log in as this user (unless you can't due to SSO), otherwise you must be a GitLab admin and impersonate it.

Go to the user's Settings, Access Tokens and create a new personal access token with the following setting:

  • Scopes:api

You might also want to disable all email notifications for the user under Settings, Notifications.

Bot Server

For a server deploment, GitLab bot needs the following environment variables set:

  • APP_URL - The GitLab instance URL
  • APP_PRIVATE_TOKEN - A private token to authenticate against GitLab as GitLab user.
  • APP_SERVER_WEBHOOK_AUTH_TOKEN - A random value that needs to be shared with GitLab, for authentication (generate e.g. using openssl rand -hex 20). The value set here must be put into the Secret Token field in GitLab, as shown above.

Deployment

Deployment happens automatically via GitLab CI on Kubernetes (via kustomize). See .gitlab-ci.yml and kubernetes/ for details.

For recreating the secret containing the environment variables above, you can use the following command:

kubectl create secret generic gitlab-bot \
--from-literal=APP_URL=https://gitlab.example.com \
--from-literal=APP_SERVER_WEBHOOK_AUTH_TOKEN='randomly-generated-string' \
--from-literal=APP_PRIVATE_TOKEN=='token-from-gitlab'

About

A GitLab bot, creating merge requests for promoting changes between branches.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitLab Bot

This is a GitLab bot, which at the moment only promotes changes from a source branch to a target branch by creating a merge request whenever the contents of the two branches differ. It supports GitLab webhooks to automatically check for changes on the project whenever GitLab receives a push.

Features

  • Support for GitLab webhooks to automatically check for changes on push
  • Automatically create merge requests if branch contents differ
  • Project-specific configuration via a gitlab-bot.yml file
  • Attach specified labels to automatically created merge requests

Project Configuration

Note: Unless already done, please install the bot server before configuring a project.

  1. Create a gitlab-bot.yml in the default branch of the project you want to enable GitLab Bot for. This is an example:

    promote_branches:
    - source: exp
    target: sandbox
    labels:
    - Automated
    - source: sandbox
    target: production
    labels:
    - Automated
    
    • source and target refer to the source and target branch
    • labels refers to GitLab labels attached to the create merger requests.
  2. Set up a GitLab webhook integration for the project.

    • URL: https://<gitlab-bot-host>/webhook
    • Secret Token: As configured for the bot
    • Trigger: Only 'Push Events'
    • Enable SSL verification: Yes
  3. Add the GitLab bot user to the project.

    • Role: Developer

Installation

GitLab User

Create a GitLab user with the following settings:

  • Access Level: Regular
  • External: Yes (no need to give this user more access than necessary)
  • URL: Add a link to this project repository to allow users to understand the bot (optional).

Log in as this user (unless you can't due to SSO), otherwise you must be a GitLab admin and impersonate it.

Go to the user's Settings, Access Tokens and create a new personal access token with the following setting:

  • Scopes:api

You might also want to disable all email notifications for the user under Settings, Notifications.

Bot Server

For a server deploment, GitLab bot needs the following environment variables set:

  • APP_URL - The GitLab instance URL
  • APP_PRIVATE_TOKEN - A private token to authenticate against GitLab as GitLab user.
  • APP_SERVER_WEBHOOK_AUTH_TOKEN - A random value that needs to be shared with GitLab, for authentication (generate e.g. using openssl rand -hex 20). The value set here must be put into the Secret Token field in GitLab, as shown above.

Deployment

Deployment happens automatically via GitLab CI on Kubernetes (via kustomize). See .gitlab-ci.yml and kubernetes/ for details.

For recreating the secret containing the environment variables above, you can use the following command:

kubectl create secret generic gitlab-bot \
--from-literal=APP_URL=https://gitlab.example.com \
--from-literal=APP_SERVER_WEBHOOK_AUTH_TOKEN='randomly-generated-string' \
--from-literal=APP_PRIVATE_TOKEN=='token-from-gitlab'

About

A GitLab bot, creating merge requests for promoting changes between branches.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitLab Bot

This is a GitLab bot, which at the moment only promotes changes from a source branch to a target branch by creating a merge request whenever the contents of the two branches differ. It supports GitLab webhooks to automatically check for changes on the project whenever GitLab receives a push.

Features

  • Support for GitLab webhooks to automatically check for changes on push
  • Automatically create merge requests if branch contents differ
  • Project-specific configuration via a gitlab-bot.yml file
  • Attach specified labels to automatically created merge requests

Project Configuration

Note: Unless already done, please install the bot server before configuring a project.

  1. Create a gitlab-bot.yml in the default branch of the project you want to enable GitLab Bot for. This is an example:

    promote_branches:
    - source: exp
    target: sandbox
    labels:
    - Automated
    - source: sandbox
    target: production
    labels:
    - Automated
    
    • source and target refer to the source and target branch
    • labels refers to GitLab labels attached to the create merger requests.
  2. Set up a GitLab webhook integration for the project.

    • URL: https://<gitlab-bot-host>/webhook
    • Secret Token: As configured for the bot
    • Trigger: Only 'Push Events'
    • Enable SSL verification: Yes
  3. Add the GitLab bot user to the project.

    • Role: Developer

Installation

GitLab User

Create a GitLab user with the following settings:

  • Access Level: Regular
  • External: Yes (no need to give this user more access than necessary)
  • URL: Add a link to this project repository to allow users to understand the bot (optional).

Log in as this user (unless you can't due to SSO), otherwise you must be a GitLab admin and impersonate it.

Go to the user's Settings, Access Tokens and create a new personal access token with the following setting:

  • Scopes:api

You might also want to disable all email notifications for the user under Settings, Notifications.

Bot Server

For a server deploment, GitLab bot needs the following environment variables set:

  • APP_URL - The GitLab instance URL
  • APP_PRIVATE_TOKEN - A private token to authenticate against GitLab as GitLab user.
  • APP_SERVER_WEBHOOK_AUTH_TOKEN - A random value that needs to be shared with GitLab, for authentication (generate e.g. using openssl rand -hex 20). The value set here must be put into the Secret Token field in GitLab, as shown above.

Deployment

Deployment happens automatically via GitLab CI on Kubernetes (via kustomize). See .gitlab-ci.yml and kubernetes/ for details.

For recreating the secret containing the environment variables above, you can use the following command:

kubectl create secret generic gitlab-bot \
--from-literal=APP_URL=https://gitlab.example.com \
--from-literal=APP_SERVER_WEBHOOK_AUTH_TOKEN='randomly-generated-string' \
--from-literal=APP_PRIVATE_TOKEN=='token-from-gitlab'

About

A GitLab bot, creating merge requests for promoting changes between branches.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

GitLab Bot

This is a GitLab bot, which at the moment only promotes changes from a source branch to a target branch by creating a merge request whenever the contents of the two branches differ. It supports GitLab webhooks to automatically check for changes on the project whenever GitLab receives a push.

Features

  • Support for GitLab webhooks to automatically check for changes on push
  • Automatically create merge requests if branch contents differ
  • Project-specific configuration via a gitlab-bot.yml file
  • Attach specified labels to automatically created merge requests

Project Configuration

Note: Unless already done, please install the bot server before configuring a project.

  1. Create a gitlab-bot.yml in the default branch of the project you want to enable GitLab Bot for. This is an example:

    promote_branches:
    - source: exp
    target: sandbox
    labels:
    - Automated
    - source: sandbox
    target: production
    labels:
    - Automated
    
    • source and target refer to the source and target branch
    • labels refers to GitLab labels attached to the create merger requests.
  2. Set up a GitLab webhook integration for the project.

    • URL: https://<gitlab-bot-host>/webhook
    • Secret Token: As configured for the bot
    • Trigger: Only 'Push Events'
    • Enable SSL verification: Yes
  3. Add the GitLab bot user to the project.

    • Role: Developer

Installation

GitLab User

Create a GitLab user with the following settings:

  • Access Level: Regular
  • External: Yes (no need to give this user more access than necessary)
  • URL: Add a link to this project repository to allow users to understand the bot (optional).

Log in as this user (unless you can't due to SSO), otherwise you must be a GitLab admin and impersonate it.

Go to the user's Settings, Access Tokens and create a new personal access token with the following setting:

  • Scopes:api

You might also want to disable all email notifications for the user under Settings, Notifications.

Bot Server

For a server deploment, GitLab bot needs the following environment variables set:

  • APP_URL - The GitLab instance URL
  • APP_PRIVATE_TOKEN - A private token to authenticate against GitLab as GitLab user.
  • APP_SERVER_WEBHOOK_AUTH_TOKEN - A random value that needs to be shared with GitLab, for authentication (generate e.g. using openssl rand -hex 20). The value set here must be put into the Secret Token field in GitLab, as shown above.

Deployment

Deployment happens automatically via GitLab CI on Kubernetes (via kustomize). See .gitlab-ci.yml and kubernetes/ for details.

For recreating the secret containing the environment variables above, you can use the following command:

kubectl create secret generic gitlab-bot \
--from-literal=APP_URL=https://gitlab.example.com \
--from-literal=APP_SERVER_WEBHOOK_AUTH_TOKEN='randomly-generated-string' \
--from-literal=APP_PRIVATE_TOKEN=='token-from-gitlab'

About

A GitLab bot, creating merge requests for promoting changes between branches.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages