1
0
mirror of https://github.com/phusion/baseimage-docker.git synced 2026-03-26 20:38:58 +00:00

Compare commits

..

8 Commits

Author SHA1 Message Date
Skyler Mäntysaari
f5be954731 Add GitHub auth status check step
Add step to check GitHub authentication status before creating a release.
2026-03-15 08:01:19 +02:00
Copilot
c75696af2a Fix HTTP 403 on gh release create by adding workflow-level permissions (#654)
* Fix HTTP 403 when creating GitHub releases by adding workflow-level permissions

Co-authored-by: samip5 <1703002+samip5@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: samip5 <1703002+samip5@users.noreply.github.com>
2026-02-27 15:59:39 +02:00
Copilot
c662980686 Add GitHub releases with patch version bumps for scheduled security builds (#653)
- scheduled-build.yml: Create GitHub release after each weekly security
  rebuild with date-stamped tag (e.g. noble-1.0.2-security.20260227)
- scheduled-build.yml: Add date-stamped Docker image tags alongside
  existing version and codename tags
- scheduled-build.yml: Bump permissions to contents:write for release
  creation
- scheduled-build.yml: Exclude security-tagged releases from base
  version lookup to prevent nested tags
- main.yml: Update docker/build-push-action from v5 to v6
- scheduled-build.yml: Update docker/build-push-action from v5 to v6
- stale.yml: Remove deprecated repo-token parameter

Co-authored-by: samip5 <1703002+samip5@users.noreply.github.com>

* Replace security date tags with patch version bumps in scheduled builds

The scheduled weekly security build now bumps the patch version
(e.g. noble-1.0.2 -> noble-1.0.3) instead of appending
-security.YYYYMMDD. Each rebuild creates a proper GitHub release
with the new patch tag and pushes Docker images accordingly.

Co-authored-by: samip5 <1703002+samip5@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: samip5 <1703002+samip5@users.noreply.github.com>
2026-02-27 15:27:06 +02:00
Copilot
44a761d9eb Automated weekly security rebuilds for all active Ubuntu LTS tracks (#652)
* Add scheduled security builds for multiple LTS tracks (jammy + noble)

Co-authored-by: Theaxiom <57013+Theaxiom@users.noreply.github.com>

* Address review feedback: checkout at release tag, exclude pre-releases/drafts, warn on unknown tag prefix

Co-authored-by: Theaxiom <57013+Theaxiom@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Theaxiom <57013+Theaxiom@users.noreply.github.com>
2026-02-27 13:01:16 +02:00
Jeshua Ben Joseph
2403c58254 noble-1.0.2 2025-04-10 01:22:40 -07:00
Emfox Zhou
1485f7c4e8 locale-gen on Debian does not take arguments and just read from /etc/locale.gen. (#648) 2025-03-15 09:43:41 +02:00
Jason N. White
eb88d59d31 Update LICENSE.txt, fix license year (#647) 2025-01-01 13:38:29 +02:00
Pascal
f627e59aaf Update README.md (#641)
Fix typo preventing installation of vagrant-disksize plugin.
2024-11-28 13:56:04 +02:00
7 changed files with 149 additions and 5 deletions

View File

@@ -4,6 +4,11 @@ on:
workflow_dispatch: workflow_dispatch:
release: release:
types: [published] types: [published]
permissions:
contents: read
packages: write
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -20,6 +25,17 @@ jobs:
# Set the platforms to build for here and thus reduce duplicating it. # Set the platforms to build for here and thus reduce duplicating it.
PLATFORMS=amd64,arm,arm64 PLATFORMS=amd64,arm,arm64
TAGS="${DOCKER_IMAGE}:${GIT_BRANCH}, ghcr.io/${{ github.repository_owner }}/baseimage:${GIT_BRANCH}" TAGS="${DOCKER_IMAGE}:${GIT_BRANCH}, ghcr.io/${{ github.repository_owner }}/baseimage:${GIT_BRANCH}"
# Determine BASE_IMAGE from release tag prefix (e.g. noble-1.0.2 -> ubuntu:24.04)
if [[ "${GIT_BRANCH}" == noble-* ]]; then
BASE_IMAGE="ubuntu:24.04"
elif [[ "${GIT_BRANCH}" == jammy-* ]]; then
BASE_IMAGE="ubuntu:22.04"
else
# Default to noble (latest LTS) for unrecognised tag prefixes
echo "::warning::Unrecognized release tag prefix '${GIT_BRANCH}'. Expected it to start with 'noble-' or 'jammy-'. Defaulting BASE_IMAGE to ubuntu:24.04 (Noble)."
BASE_IMAGE="ubuntu:24.04"
fi
# Set output parameters. # Set output parameters.
@@ -32,6 +48,7 @@ jobs:
echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT
fi fi
echo "platforms=${PLATFORMS}" >> $GITHUB_OUTPUT echo "platforms=${PLATFORMS}" >> $GITHUB_OUTPUT
echo "base_image=${BASE_IMAGE}" >> $GITHUB_OUTPUT
- name: Set up QEMU - name: Set up QEMU
@@ -64,10 +81,11 @@ jobs:
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and Push - name: Build and Push
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
builder: ${{ steps.buildx.outputs.name }} builder: ${{ steps.buildx.outputs.name }}
context: image context: image
platforms: ${{ steps.prep.outputs.platforms }} platforms: ${{ steps.prep.outputs.platforms }}
push: ${{ steps.prep.outputs.push }} push: ${{ steps.prep.outputs.push }}
tags: ${{ steps.prep.outputs.tags }} tags: ${{ steps.prep.outputs.tags }}
build-args: BASE_IMAGE=${{ steps.prep.outputs.base_image }}

126
.github/workflows/scheduled-build.yml vendored Normal file
View File

@@ -0,0 +1,126 @@
name: Scheduled Security Build
on:
schedule:
- cron: '0 2 * * 0' # Every Sunday at 02:00 UTC
workflow_dispatch:
permissions:
contents: write
packages: write
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
strategy:
fail-fast: false
matrix:
include:
- ubuntu_codename: noble
base_image: ubuntu:24.04
- ubuntu_codename: jammy
base_image: ubuntu:22.04
steps:
- name: Get latest release tag and compute next patch version
id: release
run: |
LATEST_TAG=$(gh release list \
--repo ${{ github.repository }} \
--exclude-pre-releases \
--exclude-drafts \
--json tagName \
--jq '[.[] | select(.tagName | startswith("${{ matrix.ubuntu_codename }}-"))] | first | .tagName')
if [ -z "${LATEST_TAG}" ]; then
echo "No release found for ${{ matrix.ubuntu_codename }} track" >&2
exit 1
fi
# Extract version and bump patch: noble-1.0.2 -> noble-1.0.3
if ! echo "${LATEST_TAG}" | grep -qE '^[a-z]+-[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "Tag '${LATEST_TAG}' does not match expected format <codename>-<major>.<minor>.<patch>" >&2
exit 1
fi
PREFIX="${LATEST_TAG%.*}" # noble-1.0
PATCH="${LATEST_TAG##*.}" # 2
NEXT_PATCH=$((PATCH + 1))
NEXT_TAG="${PREFIX}.${NEXT_PATCH}" # noble-1.0.3
echo "current_tag=${LATEST_TAG}" >> $GITHUB_OUTPUT
echo "next_tag=${NEXT_TAG}" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout release tag
uses: actions/checkout@v4
with:
ref: ${{ steps.release.outputs.current_tag }}
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=phusion/baseimage
NEXT_TAG=${{ steps.release.outputs.next_tag }}
PLATFORMS=amd64,arm,arm64
TAGS="${DOCKER_IMAGE}:${NEXT_TAG}"
TAGS="${TAGS}, ${DOCKER_IMAGE}:${{ matrix.ubuntu_codename }}"
TAGS="${TAGS}, ghcr.io/${{ github.repository_owner }}/baseimage:${NEXT_TAG}"
TAGS="${TAGS}, ghcr.io/${{ github.repository_owner }}/baseimage:${{ matrix.ubuntu_codename }}"
echo "tags=${TAGS}" >> $GITHUB_OUTPUT
echo "platforms=${PLATFORMS}" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: ${{ steps.prep.outputs.platforms }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
install: true
version: latest
driver-opts: image=moby/buildkit:latest
- name: Login to GHCR (Github Container Registry)
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and Push
uses: docker/build-push-action@v6
with:
context: image
platforms: ${{ steps.prep.outputs.platforms }}
push: true
tags: ${{ steps.prep.outputs.tags }}
build-args: BASE_IMAGE=${{ matrix.base_image }}
no-cache: true
- name: Check gh auth status
run: gh auth status
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create GitHub Release
run: |
gh release create "${{ steps.release.outputs.next_tag }}" \
--repo "${{ github.repository }}" \
--target "${{ steps.release.outputs.current_tag }}" \
--title "${{ steps.release.outputs.next_tag }}" \
--notes "Automated weekly security rebuild of \`${{ steps.release.outputs.current_tag }}\` with latest \`${{ matrix.base_image }}\` packages.
Images pushed:
- \`phusion/baseimage:${{ steps.release.outputs.next_tag }}\`
- \`phusion/baseimage:${{ matrix.ubuntu_codename }}\`
- \`ghcr.io/${{ github.repository_owner }}/baseimage:${{ steps.release.outputs.next_tag }}\`
- \`ghcr.io/${{ github.repository_owner }}/baseimage:${{ matrix.ubuntu_codename }}\`"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -9,7 +9,6 @@ jobs:
steps: steps:
- uses: actions/stale@v9 - uses: actions/stale@v9
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This Issue has been automatically marked as "stale" because it has not had recent activity (for 15 days). It will be closed if no further activity occurs. Thanks for the feedback.' stale-issue-message: 'This Issue has been automatically marked as "stale" because it has not had recent activity (for 15 days). It will be closed if no further activity occurs. Thanks for the feedback.'
stale-pr-message: 'This Pull Request has been automatically marked as "stale" because it has not had recent activity (for 15 days). It will be closed if no further activity occurs. Thank you for your contribution.' stale-pr-message: 'This Pull Request has been automatically marked as "stale" because it has not had recent activity (for 15 days). It will be closed if no further activity occurs. Thank you for your contribution.'
close-issue-message: 'Due to the lack of activity in the last 5 days since it was marked as "stale", we proceed to close this Issue. Do not hesitate to reopen it later if necessary.' close-issue-message: 'Due to the lack of activity in the last 5 days since it was marked as "stale", we proceed to close this Issue. Do not hesitate to reopen it later if necessary.'

View File

@@ -1,4 +1,4 @@
Copyright (c) 2013-2015 Phusion Holding B.V. Copyright (c) 2013-2025 Phusion Holding B.V.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,4 +1,4 @@
VERSION ?= noble-1.0.0 VERSION ?= noble-1.0.2
ifdef BASE_IMAGE ifdef BASE_IMAGE
BUILD_ARG = --build-arg BASE_IMAGE=$(BASE_IMAGE) BUILD_ARG = --build-arg BASE_IMAGE=$(BASE_IMAGE)
ifndef NAME ifndef NAME

View File

@@ -586,7 +586,7 @@ Start a virtual machine with Docker in it. You can use the Vagrantfile that we'v
First, install `vagrant-disksize` plug-in: First, install `vagrant-disksize` plug-in:
vagrant plugin install vagrant-disksize: vagrant plugin install vagrant-disksize
Then, start the virtual machine Then, start the virtual machine

View File

@@ -50,6 +50,7 @@ case $(lsb_release -is) in
;; ;;
Debian) Debian)
$minimal_apt_get_install locales locales-all $minimal_apt_get_install locales locales-all
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
;; ;;
*) *)
;; ;;