Repository files navigation

build.bash

The build.bash script helps build Docker images and upload them to container registries. Reasons you might use this instead of the built-in Docker build job in your continuous integration system:

  • Run the exact same build process locally as runs in the CI environment and produces production Docker images.
  • No script modifications necessary, configure for different systems with environment variables.
  • Builds for develop, main, and test branches produce containers tagged with the branch name and pushed to container registries.
  • Branches named in the format release/x.y.z are pushed to container registries with that container tag as well as the container tag latest.
  • Other branches go through the build stage in the Dockerfile but not further (and no image is uploaded).
  • Build environment information is brought in as container labels (Git commit id, build date, version) and you can easily add more.
  • Can push to a configured container registry (Docker Hub by default) as well as the GitHub Container registry.
  • Can utilize docker-lock to handle pinning of images in each Dockerfile

You only need build.bash, the rest of this project is testing and examples.

Usage

Running from the command line

build.bash [-h] [-v] [-df Dockerfile] [-p] [Docker tag]

Options (all are optional):

  • -h, --help - Print this help and exit
  • -v, --verbose - Print script debug info
  • -df, --dockerfile - Use the specified Dockerfile
  • -p, --publish - Run the release-prep and (in container) release-publish scripts (if present)
  • Docker tag - Override the guessed Docker tag (the current directory) with this value if present

Environment variables (all are optional):

  • BLD_DOCKER_IMAGE - name of Docker image, uses directory name by default
  • CR_HOST - hostname of the container registry, defaults Docker default (Docker Hub)
  • CR_OWNER - owner of the container registry
  • CR_PASSWORD - password to log into the container registry
  • CR_USER - username to log in to the container registry
  • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
  • GHCR_OWNER - owner of the GitHub Container Registry (defaults to GHCR_USER)
  • GHCR_PAT - GitHub Container Registry Personal Access Token
  • GHCR_USER - username to log in to the GitHub Container Registry

Example configuration for continuous integration

Pre-configuration

  1. Get credentials for pushing containers into your desired registry or registries.

Set up your Dockerfile

  1. Use multi-stage builds and name your build stage build.
  2. Bring in metadata with the ARG instruction for BRANCH, IMAGE_CREATED, IMAGE_REVISION, and IMAGE_VERSION.
  3. Use those variables in your LABEL and ENV instructions.

See this sample Dockerfile for more details. This Dockerfile is based on the one provided when creating a Microsoft Visual Studio Web Application with the "Enable Docker Support" box checked so you can use it both for Visual Studio Docker support as well as performing your builds if that's your environment.

Set up CI

  • Configure secrets for your repository (GitHub, Azure).

    • BLD_DOCKER_IMAGE can be set to the name of the Docker image if you like, if not it will use the directory name of your project.
    • CR_HOST - hostname of the container registry, defaults to Docker Hub.
    • CR_OWNER - container registry repository (username or organization).
    • CR_PASSWORD - container registration password or Personal Access Token.
    • CR_USER - container registry username for authentication.
    • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
    • GHCR_OWNER - GitHub Container Registry repository (username or organization name).
    • GHCR_PAT - GitHub Personal Access Token.
    • GHCR_USER - username associated with the GitHub Personal Access Token (for authentication).
  • Review sample CI configurations:

  • Push some branches and open and resolve some PRs to see if the build works successfully.

License

The build.bash script is licensed under the MIT License. A basis for the script is the MIT-licensed "Minimal safe Bash script template" by Maciej Radzikowski.

About

Script in bash to build Docker images and publish them to container registries

Topics

Resources

Stars

1 star

Watchers

2 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

Repository files navigation

build.bash

The build.bash script helps build Docker images and upload them to container registries. Reasons you might use this instead of the built-in Docker build job in your continuous integration system:

  • Run the exact same build process locally as runs in the CI environment and produces production Docker images.
  • No script modifications necessary, configure for different systems with environment variables.
  • Builds for develop, main, and test branches produce containers tagged with the branch name and pushed to container registries.
  • Branches named in the format release/x.y.z are pushed to container registries with that container tag as well as the container tag latest.
  • Other branches go through the build stage in the Dockerfile but not further (and no image is uploaded).
  • Build environment information is brought in as container labels (Git commit id, build date, version) and you can easily add more.
  • Can push to a configured container registry (Docker Hub by default) as well as the GitHub Container registry.
  • Can utilize docker-lock to handle pinning of images in each Dockerfile

You only need build.bash, the rest of this project is testing and examples.

Usage

Running from the command line

build.bash [-h] [-v] [-df Dockerfile] [-p] [Docker tag]

Options (all are optional):

  • -h, --help - Print this help and exit
  • -v, --verbose - Print script debug info
  • -df, --dockerfile - Use the specified Dockerfile
  • -p, --publish - Run the release-prep and (in container) release-publish scripts (if present)
  • Docker tag - Override the guessed Docker tag (the current directory) with this value if present

Environment variables (all are optional):

  • BLD_DOCKER_IMAGE - name of Docker image, uses directory name by default
  • CR_HOST - hostname of the container registry, defaults Docker default (Docker Hub)
  • CR_OWNER - owner of the container registry
  • CR_PASSWORD - password to log into the container registry
  • CR_USER - username to log in to the container registry
  • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
  • GHCR_OWNER - owner of the GitHub Container Registry (defaults to GHCR_USER)
  • GHCR_PAT - GitHub Container Registry Personal Access Token
  • GHCR_USER - username to log in to the GitHub Container Registry

Example configuration for continuous integration

Pre-configuration

  1. Get credentials for pushing containers into your desired registry or registries.

Set up your Dockerfile

  1. Use multi-stage builds and name your build stage build.
  2. Bring in metadata with the ARG instruction for BRANCH, IMAGE_CREATED, IMAGE_REVISION, and IMAGE_VERSION.
  3. Use those variables in your LABEL and ENV instructions.

See this sample Dockerfile for more details. This Dockerfile is based on the one provided when creating a Microsoft Visual Studio Web Application with the "Enable Docker Support" box checked so you can use it both for Visual Studio Docker support as well as performing your builds if that's your environment.

Set up CI

  • Configure secrets for your repository (GitHub, Azure).

    • BLD_DOCKER_IMAGE can be set to the name of the Docker image if you like, if not it will use the directory name of your project.
    • CR_HOST - hostname of the container registry, defaults to Docker Hub.
    • CR_OWNER - container registry repository (username or organization).
    • CR_PASSWORD - container registration password or Personal Access Token.
    • CR_USER - container registry username for authentication.
    • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
    • GHCR_OWNER - GitHub Container Registry repository (username or organization name).
    • GHCR_PAT - GitHub Personal Access Token.
    • GHCR_USER - username associated with the GitHub Personal Access Token (for authentication).
  • Review sample CI configurations:

  • Push some branches and open and resolve some PRs to see if the build works successfully.

License

The build.bash script is licensed under the MIT License. A basis for the script is the MIT-licensed "Minimal safe Bash script template" by Maciej Radzikowski.

About

Script in bash to build Docker images and publish them to container registries

Topics

Resources

Stars

1 star

Watchers

2 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

Repository files navigation

build.bash

The build.bash script helps build Docker images and upload them to container registries. Reasons you might use this instead of the built-in Docker build job in your continuous integration system:

  • Run the exact same build process locally as runs in the CI environment and produces production Docker images.
  • No script modifications necessary, configure for different systems with environment variables.
  • Builds for develop, main, and test branches produce containers tagged with the branch name and pushed to container registries.
  • Branches named in the format release/x.y.z are pushed to container registries with that container tag as well as the container tag latest.
  • Other branches go through the build stage in the Dockerfile but not further (and no image is uploaded).
  • Build environment information is brought in as container labels (Git commit id, build date, version) and you can easily add more.
  • Can push to a configured container registry (Docker Hub by default) as well as the GitHub Container registry.
  • Can utilize docker-lock to handle pinning of images in each Dockerfile

You only need build.bash, the rest of this project is testing and examples.

Usage

Running from the command line

build.bash [-h] [-v] [-df Dockerfile] [-p] [Docker tag]

Options (all are optional):

  • -h, --help - Print this help and exit
  • -v, --verbose - Print script debug info
  • -df, --dockerfile - Use the specified Dockerfile
  • -p, --publish - Run the release-prep and (in container) release-publish scripts (if present)
  • Docker tag - Override the guessed Docker tag (the current directory) with this value if present

Environment variables (all are optional):

  • BLD_DOCKER_IMAGE - name of Docker image, uses directory name by default
  • CR_HOST - hostname of the container registry, defaults Docker default (Docker Hub)
  • CR_OWNER - owner of the container registry
  • CR_PASSWORD - password to log into the container registry
  • CR_USER - username to log in to the container registry
  • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
  • GHCR_OWNER - owner of the GitHub Container Registry (defaults to GHCR_USER)
  • GHCR_PAT - GitHub Container Registry Personal Access Token
  • GHCR_USER - username to log in to the GitHub Container Registry

Example configuration for continuous integration

Pre-configuration

  1. Get credentials for pushing containers into your desired registry or registries.

Set up your Dockerfile

  1. Use multi-stage builds and name your build stage build.
  2. Bring in metadata with the ARG instruction for BRANCH, IMAGE_CREATED, IMAGE_REVISION, and IMAGE_VERSION.
  3. Use those variables in your LABEL and ENV instructions.

See this sample Dockerfile for more details. This Dockerfile is based on the one provided when creating a Microsoft Visual Studio Web Application with the "Enable Docker Support" box checked so you can use it both for Visual Studio Docker support as well as performing your builds if that's your environment.

Set up CI

  • Configure secrets for your repository (GitHub, Azure).

    • BLD_DOCKER_IMAGE can be set to the name of the Docker image if you like, if not it will use the directory name of your project.
    • CR_HOST - hostname of the container registry, defaults to Docker Hub.
    • CR_OWNER - container registry repository (username or organization).
    • CR_PASSWORD - container registration password or Personal Access Token.
    • CR_USER - container registry username for authentication.
    • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
    • GHCR_OWNER - GitHub Container Registry repository (username or organization name).
    • GHCR_PAT - GitHub Personal Access Token.
    • GHCR_USER - username associated with the GitHub Personal Access Token (for authentication).
  • Review sample CI configurations:

  • Push some branches and open and resolve some PRs to see if the build works successfully.

License

The build.bash script is licensed under the MIT License. A basis for the script is the MIT-licensed "Minimal safe Bash script template" by Maciej Radzikowski.

About

Script in bash to build Docker images and publish them to container registries

Topics

Resources

Stars

1 star

Watchers

2 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

Repository files navigation

build.bash

The build.bash script helps build Docker images and upload them to container registries. Reasons you might use this instead of the built-in Docker build job in your continuous integration system:

  • Run the exact same build process locally as runs in the CI environment and produces production Docker images.
  • No script modifications necessary, configure for different systems with environment variables.
  • Builds for develop, main, and test branches produce containers tagged with the branch name and pushed to container registries.
  • Branches named in the format release/x.y.z are pushed to container registries with that container tag as well as the container tag latest.
  • Other branches go through the build stage in the Dockerfile but not further (and no image is uploaded).
  • Build environment information is brought in as container labels (Git commit id, build date, version) and you can easily add more.
  • Can push to a configured container registry (Docker Hub by default) as well as the GitHub Container registry.
  • Can utilize docker-lock to handle pinning of images in each Dockerfile

You only need build.bash, the rest of this project is testing and examples.

Usage

Running from the command line

build.bash [-h] [-v] [-df Dockerfile] [-p] [Docker tag]

Options (all are optional):

  • -h, --help - Print this help and exit
  • -v, --verbose - Print script debug info
  • -df, --dockerfile - Use the specified Dockerfile
  • -p, --publish - Run the release-prep and (in container) release-publish scripts (if present)
  • Docker tag - Override the guessed Docker tag (the current directory) with this value if present

Environment variables (all are optional):

  • BLD_DOCKER_IMAGE - name of Docker image, uses directory name by default
  • CR_HOST - hostname of the container registry, defaults Docker default (Docker Hub)
  • CR_OWNER - owner of the container registry
  • CR_PASSWORD - password to log into the container registry
  • CR_USER - username to log in to the container registry
  • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
  • GHCR_OWNER - owner of the GitHub Container Registry (defaults to GHCR_USER)
  • GHCR_PAT - GitHub Container Registry Personal Access Token
  • GHCR_USER - username to log in to the GitHub Container Registry

Example configuration for continuous integration

Pre-configuration

  1. Get credentials for pushing containers into your desired registry or registries.

Set up your Dockerfile

  1. Use multi-stage builds and name your build stage build.
  2. Bring in metadata with the ARG instruction for BRANCH, IMAGE_CREATED, IMAGE_REVISION, and IMAGE_VERSION.
  3. Use those variables in your LABEL and ENV instructions.

See this sample Dockerfile for more details. This Dockerfile is based on the one provided when creating a Microsoft Visual Studio Web Application with the "Enable Docker Support" box checked so you can use it both for Visual Studio Docker support as well as performing your builds if that's your environment.

Set up CI

  • Configure secrets for your repository (GitHub, Azure).

    • BLD_DOCKER_IMAGE can be set to the name of the Docker image if you like, if not it will use the directory name of your project.
    • CR_HOST - hostname of the container registry, defaults to Docker Hub.
    • CR_OWNER - container registry repository (username or organization).
    • CR_PASSWORD - container registration password or Personal Access Token.
    • CR_USER - container registry username for authentication.
    • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
    • GHCR_OWNER - GitHub Container Registry repository (username or organization name).
    • GHCR_PAT - GitHub Personal Access Token.
    • GHCR_USER - username associated with the GitHub Personal Access Token (for authentication).
  • Review sample CI configurations:

  • Push some branches and open and resolve some PRs to see if the build works successfully.

License

The build.bash script is licensed under the MIT License. A basis for the script is the MIT-licensed "Minimal safe Bash script template" by Maciej Radzikowski.

About

Script in bash to build Docker images and publish them to container registries

Topics

Resources

Stars

1 star

Watchers

2 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

Repository files navigation

build.bash

The build.bash script helps build Docker images and upload them to container registries. Reasons you might use this instead of the built-in Docker build job in your continuous integration system:

  • Run the exact same build process locally as runs in the CI environment and produces production Docker images.
  • No script modifications necessary, configure for different systems with environment variables.
  • Builds for develop, main, and test branches produce containers tagged with the branch name and pushed to container registries.
  • Branches named in the format release/x.y.z are pushed to container registries with that container tag as well as the container tag latest.
  • Other branches go through the build stage in the Dockerfile but not further (and no image is uploaded).
  • Build environment information is brought in as container labels (Git commit id, build date, version) and you can easily add more.
  • Can push to a configured container registry (Docker Hub by default) as well as the GitHub Container registry.
  • Can utilize docker-lock to handle pinning of images in each Dockerfile

You only need build.bash, the rest of this project is testing and examples.

Usage

Running from the command line

build.bash [-h] [-v] [-df Dockerfile] [-p] [Docker tag]

Options (all are optional):

  • -h, --help - Print this help and exit
  • -v, --verbose - Print script debug info
  • -df, --dockerfile - Use the specified Dockerfile
  • -p, --publish - Run the release-prep and (in container) release-publish scripts (if present)
  • Docker tag - Override the guessed Docker tag (the current directory) with this value if present

Environment variables (all are optional):

  • BLD_DOCKER_IMAGE - name of Docker image, uses directory name by default
  • CR_HOST - hostname of the container registry, defaults Docker default (Docker Hub)
  • CR_OWNER - owner of the container registry
  • CR_PASSWORD - password to log into the container registry
  • CR_USER - username to log in to the container registry
  • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
  • GHCR_OWNER - owner of the GitHub Container Registry (defaults to GHCR_USER)
  • GHCR_PAT - GitHub Container Registry Personal Access Token
  • GHCR_USER - username to log in to the GitHub Container Registry

Example configuration for continuous integration

Pre-configuration

  1. Get credentials for pushing containers into your desired registry or registries.

Set up your Dockerfile

  1. Use multi-stage builds and name your build stage build.
  2. Bring in metadata with the ARG instruction for BRANCH, IMAGE_CREATED, IMAGE_REVISION, and IMAGE_VERSION.
  3. Use those variables in your LABEL and ENV instructions.

See this sample Dockerfile for more details. This Dockerfile is based on the one provided when creating a Microsoft Visual Studio Web Application with the "Enable Docker Support" box checked so you can use it both for Visual Studio Docker support as well as performing your builds if that's your environment.

Set up CI

  • Configure secrets for your repository (GitHub, Azure).

    • BLD_DOCKER_IMAGE can be set to the name of the Docker image if you like, if not it will use the directory name of your project.
    • CR_HOST - hostname of the container registry, defaults to Docker Hub.
    • CR_OWNER - container registry repository (username or organization).
    • CR_PASSWORD - container registration password or Personal Access Token.
    • CR_USER - container registry username for authentication.
    • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
    • GHCR_OWNER - GitHub Container Registry repository (username or organization name).
    • GHCR_PAT - GitHub Personal Access Token.
    • GHCR_USER - username associated with the GitHub Personal Access Token (for authentication).
  • Review sample CI configurations:

  • Push some branches and open and resolve some PRs to see if the build works successfully.

License

The build.bash script is licensed under the MIT License. A basis for the script is the MIT-licensed "Minimal safe Bash script template" by Maciej Radzikowski.

About

Script in bash to build Docker images and publish them to container registries

Topics

Resources

Stars

1 star

Watchers

2 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

Repository files navigation

build.bash

The build.bash script helps build Docker images and upload them to container registries. Reasons you might use this instead of the built-in Docker build job in your continuous integration system:

  • Run the exact same build process locally as runs in the CI environment and produces production Docker images.
  • No script modifications necessary, configure for different systems with environment variables.
  • Builds for develop, main, and test branches produce containers tagged with the branch name and pushed to container registries.
  • Branches named in the format release/x.y.z are pushed to container registries with that container tag as well as the container tag latest.
  • Other branches go through the build stage in the Dockerfile but not further (and no image is uploaded).
  • Build environment information is brought in as container labels (Git commit id, build date, version) and you can easily add more.
  • Can push to a configured container registry (Docker Hub by default) as well as the GitHub Container registry.
  • Can utilize docker-lock to handle pinning of images in each Dockerfile

You only need build.bash, the rest of this project is testing and examples.

Usage

Running from the command line

build.bash [-h] [-v] [-df Dockerfile] [-p] [Docker tag]

Options (all are optional):

  • -h, --help - Print this help and exit
  • -v, --verbose - Print script debug info
  • -df, --dockerfile - Use the specified Dockerfile
  • -p, --publish - Run the release-prep and (in container) release-publish scripts (if present)
  • Docker tag - Override the guessed Docker tag (the current directory) with this value if present

Environment variables (all are optional):

  • BLD_DOCKER_IMAGE - name of Docker image, uses directory name by default
  • CR_HOST - hostname of the container registry, defaults Docker default (Docker Hub)
  • CR_OWNER - owner of the container registry
  • CR_PASSWORD - password to log into the container registry
  • CR_USER - username to log in to the container registry
  • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
  • GHCR_OWNER - owner of the GitHub Container Registry (defaults to GHCR_USER)
  • GHCR_PAT - GitHub Container Registry Personal Access Token
  • GHCR_USER - username to log in to the GitHub Container Registry

Example configuration for continuous integration

Pre-configuration

  1. Get credentials for pushing containers into your desired registry or registries.

Set up your Dockerfile

  1. Use multi-stage builds and name your build stage build.
  2. Bring in metadata with the ARG instruction for BRANCH, IMAGE_CREATED, IMAGE_REVISION, and IMAGE_VERSION.
  3. Use those variables in your LABEL and ENV instructions.

See this sample Dockerfile for more details. This Dockerfile is based on the one provided when creating a Microsoft Visual Studio Web Application with the "Enable Docker Support" box checked so you can use it both for Visual Studio Docker support as well as performing your builds if that's your environment.

Set up CI

  • Configure secrets for your repository (GitHub, Azure).

    • BLD_DOCKER_IMAGE can be set to the name of the Docker image if you like, if not it will use the directory name of your project.
    • CR_HOST - hostname of the container registry, defaults to Docker Hub.
    • CR_OWNER - container registry repository (username or organization).
    • CR_PASSWORD - container registration password or Personal Access Token.
    • CR_USER - container registry username for authentication.
    • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
    • GHCR_OWNER - GitHub Container Registry repository (username or organization name).
    • GHCR_PAT - GitHub Personal Access Token.
    • GHCR_USER - username associated with the GitHub Personal Access Token (for authentication).
  • Review sample CI configurations:

  • Push some branches and open and resolve some PRs to see if the build works successfully.

License

The build.bash script is licensed under the MIT License. A basis for the script is the MIT-licensed "Minimal safe Bash script template" by Maciej Radzikowski.

About

Script in bash to build Docker images and publish them to container registries

Topics

Resources

Stars

1 star

Watchers

2 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

Repository files navigation

build.bash

The build.bash script helps build Docker images and upload them to container registries. Reasons you might use this instead of the built-in Docker build job in your continuous integration system:

  • Run the exact same build process locally as runs in the CI environment and produces production Docker images.
  • No script modifications necessary, configure for different systems with environment variables.
  • Builds for develop, main, and test branches produce containers tagged with the branch name and pushed to container registries.
  • Branches named in the format release/x.y.z are pushed to container registries with that container tag as well as the container tag latest.
  • Other branches go through the build stage in the Dockerfile but not further (and no image is uploaded).
  • Build environment information is brought in as container labels (Git commit id, build date, version) and you can easily add more.
  • Can push to a configured container registry (Docker Hub by default) as well as the GitHub Container registry.
  • Can utilize docker-lock to handle pinning of images in each Dockerfile

You only need build.bash, the rest of this project is testing and examples.

Usage

Running from the command line

build.bash [-h] [-v] [-df Dockerfile] [-p] [Docker tag]

Options (all are optional):

  • -h, --help - Print this help and exit
  • -v, --verbose - Print script debug info
  • -df, --dockerfile - Use the specified Dockerfile
  • -p, --publish - Run the release-prep and (in container) release-publish scripts (if present)
  • Docker tag - Override the guessed Docker tag (the current directory) with this value if present

Environment variables (all are optional):

  • BLD_DOCKER_IMAGE - name of Docker image, uses directory name by default
  • CR_HOST - hostname of the container registry, defaults Docker default (Docker Hub)
  • CR_OWNER - owner of the container registry
  • CR_PASSWORD - password to log into the container registry
  • CR_USER - username to log in to the container registry
  • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
  • GHCR_OWNER - owner of the GitHub Container Registry (defaults to GHCR_USER)
  • GHCR_PAT - GitHub Container Registry Personal Access Token
  • GHCR_USER - username to log in to the GitHub Container Registry

Example configuration for continuous integration

Pre-configuration

  1. Get credentials for pushing containers into your desired registry or registries.

Set up your Dockerfile

  1. Use multi-stage builds and name your build stage build.
  2. Bring in metadata with the ARG instruction for BRANCH, IMAGE_CREATED, IMAGE_REVISION, and IMAGE_VERSION.
  3. Use those variables in your LABEL and ENV instructions.

See this sample Dockerfile for more details. This Dockerfile is based on the one provided when creating a Microsoft Visual Studio Web Application with the "Enable Docker Support" box checked so you can use it both for Visual Studio Docker support as well as performing your builds if that's your environment.

Set up CI

  • Configure secrets for your repository (GitHub, Azure).

    • BLD_DOCKER_IMAGE can be set to the name of the Docker image if you like, if not it will use the directory name of your project.
    • CR_HOST - hostname of the container registry, defaults to Docker Hub.
    • CR_OWNER - container registry repository (username or organization).
    • CR_PASSWORD - container registration password or Personal Access Token.
    • CR_USER - container registry username for authentication.
    • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
    • GHCR_OWNER - GitHub Container Registry repository (username or organization name).
    • GHCR_PAT - GitHub Personal Access Token.
    • GHCR_USER - username associated with the GitHub Personal Access Token (for authentication).
  • Review sample CI configurations:

  • Push some branches and open and resolve some PRs to see if the build works successfully.

License

The build.bash script is licensed under the MIT License. A basis for the script is the MIT-licensed "Minimal safe Bash script template" by Maciej Radzikowski.

About

Script in bash to build Docker images and publish them to container registries

Topics

Resources

Stars

1 star

Watchers

2 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

Repository files navigation

build.bash

The build.bash script helps build Docker images and upload them to container registries. Reasons you might use this instead of the built-in Docker build job in your continuous integration system:

  • Run the exact same build process locally as runs in the CI environment and produces production Docker images.
  • No script modifications necessary, configure for different systems with environment variables.
  • Builds for develop, main, and test branches produce containers tagged with the branch name and pushed to container registries.
  • Branches named in the format release/x.y.z are pushed to container registries with that container tag as well as the container tag latest.
  • Other branches go through the build stage in the Dockerfile but not further (and no image is uploaded).
  • Build environment information is brought in as container labels (Git commit id, build date, version) and you can easily add more.
  • Can push to a configured container registry (Docker Hub by default) as well as the GitHub Container registry.
  • Can utilize docker-lock to handle pinning of images in each Dockerfile

You only need build.bash, the rest of this project is testing and examples.

Usage

Running from the command line

build.bash [-h] [-v] [-df Dockerfile] [-p] [Docker tag]

Options (all are optional):

  • -h, --help - Print this help and exit
  • -v, --verbose - Print script debug info
  • -df, --dockerfile - Use the specified Dockerfile
  • -p, --publish - Run the release-prep and (in container) release-publish scripts (if present)
  • Docker tag - Override the guessed Docker tag (the current directory) with this value if present

Environment variables (all are optional):

  • BLD_DOCKER_IMAGE - name of Docker image, uses directory name by default
  • CR_HOST - hostname of the container registry, defaults Docker default (Docker Hub)
  • CR_OWNER - owner of the container registry
  • CR_PASSWORD - password to log into the container registry
  • CR_USER - username to log in to the container registry
  • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
  • GHCR_OWNER - owner of the GitHub Container Registry (defaults to GHCR_USER)
  • GHCR_PAT - GitHub Container Registry Personal Access Token
  • GHCR_USER - username to log in to the GitHub Container Registry

Example configuration for continuous integration

Pre-configuration

  1. Get credentials for pushing containers into your desired registry or registries.

Set up your Dockerfile

  1. Use multi-stage builds and name your build stage build.
  2. Bring in metadata with the ARG instruction for BRANCH, IMAGE_CREATED, IMAGE_REVISION, and IMAGE_VERSION.
  3. Use those variables in your LABEL and ENV instructions.

See this sample Dockerfile for more details. This Dockerfile is based on the one provided when creating a Microsoft Visual Studio Web Application with the "Enable Docker Support" box checked so you can use it both for Visual Studio Docker support as well as performing your builds if that's your environment.

Set up CI

  • Configure secrets for your repository (GitHub, Azure).

    • BLD_DOCKER_IMAGE can be set to the name of the Docker image if you like, if not it will use the directory name of your project.
    • CR_HOST - hostname of the container registry, defaults to Docker Hub.
    • CR_OWNER - container registry repository (username or organization).
    • CR_PASSWORD - container registration password or Personal Access Token.
    • CR_USER - container registry username for authentication.
    • DOCKER_LOCK_VERSION - a version of docker-lock to use (e.g. 0.8.10), can also be specified in docker-lock-version.txt
    • GHCR_OWNER - GitHub Container Registry repository (username or organization name).
    • GHCR_PAT - GitHub Personal Access Token.
    • GHCR_USER - username associated with the GitHub Personal Access Token (for authentication).
  • Review sample CI configurations:

  • Push some branches and open and resolve some PRs to see if the build works successfully.

License

The build.bash script is licensed under the MIT License. A basis for the script is the MIT-licensed "Minimal safe Bash script template" by Maciej Radzikowski.

About

Script in bash to build Docker images and publish them to container registries

Topics

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages