Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
76df574
test: use rmadison form devscripts to determine hello pkg version
blackboxsw Feb 28, 2026
a2209a9
test: apt tests need to wait_for_cloud_init on potentially slow VMs
blackboxsw Feb 28, 2026
4db78c9
feat(azure): introduce experimental skip_ready_report for Azure (#6771)
cjp256 Mar 11, 2026
7132625
feat(util): fail early when hostname is not resolvable in is_resolvab…
aale24 Mar 11, 2026
5c685d6
WSL: Subprocess cmd.exe with /U to output UTF-16LE (#6717)
CarlosNihelton Mar 16, 2026
724e085
fix(azure): catch import error as reportable (#6714)
cadejacobson Mar 16, 2026
0052a66
fix(bsd): correct the _ROOT_TMPDIR path for *BSD system (#6794)
hcartiaux Mar 16, 2026
e2ba66e
ci: add cloud-init integration test logs upon failure (#6803)
blackboxsw Mar 24, 2026
0144641
chore(net): log when klibc is parsed (#6799)
holmanb Mar 25, 2026
a5f6267
chore: auto-format shell (#6780)
holmanb Mar 25, 2026
4e410a2
ci: fix integration test CLOUD_INIT_LOCAL_LOG_PATH. drop hashFiles (#…
blackboxsw Mar 25, 2026
473fa33
chore: drop outdated code (#6798)
holmanb Mar 26, 2026
a870544
test: fix missing mocker of rmtree for redhat unittests (#6808)
blackboxsw Mar 28, 2026
35f5948
fix(openbsd): specify the correct usr_lib_exec path (#6793)
hcartiaux Mar 30, 2026
17d2867
ci: disable daily jobs on forks (#6821)
holmanb Mar 31, 2026
0b7dc7e
chore: drop unnecessary pylint ignore settings, use pytest --strict-m…
holmanb Mar 31, 2026
65bacbe
tools: fix brpm script to use correct builddir in temp directory (#6809)
blackboxsw Mar 31, 2026
ffd26f1
test: fix test_schema when the schema validation takes longer (#6822)
ani-sinha Apr 1, 2026
a8ccc57
test: fix integration test_combined for rhel (#6791)
xiachen-rh Apr 2, 2026
d4566b1
fix(ubuntu): Configure arm64 to use archive.ubuntu.com (#6826)
waveform80 Apr 3, 2026
c9f5427
fix(debian): Fix locale generation (#6472)
paulober Apr 4, 2026
1d48a14
fix: increase raspberry pi usb timeout (#6823)
nickbroon Apr 6, 2026
59b7393
ci: move ssh-import-id tests to github instead of launchpad keys (#6830)
blackboxsw Apr 7, 2026
6aba62a
feat(bsd): add OpenBSD support to Meson build (#6789)
hcartiaux Apr 10, 2026
275e0e0
test: Add new `fake_fs` fixture backed by pyfakefs (#6785)
TheRealFalcon Apr 13, 2026
dd28a36
fix(net): do not resolve IPs when netloc contains a port (#6841)
Ndukiye Apr 17, 2026
87cc1ae
chore(opennebula): enable mypy type checking (#6827)
mcanevet Apr 21, 2026
c7ae6a4
fix:(disk_setup):handle empty disk in check_partition_gpt_layout_sfdi…
xiachen-rh Apr 24, 2026
207d38f
fix: add single retry of ssh-import-id on exit 1 (#6805)
blackboxsw Apr 28, 2026
18c8830
Enable Amazon Linux to yum_add_repo and ca_certs. (#6767)
joe-usa-amzn May 1, 2026
d7eb828
fix(opennebula): coerce MTU to int in gen_conf() (#6856)
mcanevet May 1, 2026
e9e10ab
feat(opennebula): support ETHx_ROUTES static routes in network config…
mcanevet May 5, 2026
912aa55
fix(docs): correct users and groups examples 3, 4 and 7 (#6858)
neitsab May 6, 2026
9c7d85d
ci: fix alpine edge python3.14 tox missing dep py3-python-discovery (…
blackboxsw May 6, 2026
9cbd55f
fix(ug_util): prioritize user-data.users over the default user config…
mostafaCamel Jun 2, 2026
8174dd6
test: logger specifically configure localhost:514 destination (#6897)
blackboxsw Jun 2, 2026
1d5d8f0
feat(dhcp): Add network manager lease parsing capability (#6829)
ani-sinha Apr 1, 2026
deef04e
test: fix test_get_domainname_isc_dhclient mock leak (#6829)
ani-sinha Apr 1, 2026
a96aac4
fix(cloudstack): get domain name information from network manager lea…
ani-sinha Apr 1, 2026
8adfc0e
fix(cloudstack): get vr information from network manager leases (#6829)
ani-sinha Apr 23, 2026
777cef7
tests: expect intermittent warning accessing Azure IMDS. Avoid client…
blackboxsw May 21, 2026
4d2782c
fix(azurelinux): support Azure Linux 4.0 (#6874)
ddstreetmicrosoft Jun 9, 2026
908f599
docs: fix invalid badge URLs (#6900)
cokerrd Jun 9, 2026
08251e5
test: prefer reading journalctl transport=syslog over /var/log/syslog
blackboxsw Jun 1, 2026
4694cde
tests: simplify get_syslog_or_console to get_journal_syslog for syste…
blackboxsw Jun 1, 2026
5a5bca1
ai: copilot review comment resolution
blackboxsw Jun 4, 2026
e901186
fix(cmd): enable mypy strict checking for cloudinit.cmd (#6861)
jaborvs Jun 10, 2026
cef1d0b
docs: clarify default user entry in users examples (#6894)
alan747271363-art Jun 10, 2026
d0bd056
docs: make password lock explicit in users-groups example 3 (#6869)
0xdeadd Jun 12, 2026
da4ab09
feat(azure): report failure if missing customdata (#6779)
cadejacobson Jun 12, 2026
9598a60
feat(opennebula): support global SEARCH_DOMAIN for all interfaces (#6…
mcanevet Jun 12, 2026
1e3cbdd
chore(ci): rename and renumber workflow files to 1xx scheme
blackboxsw Apr 17, 2026
624c05a
ci: require PYCLOUDLIB_TOML and SSH key secrets, write config to runn…
blackboxsw Apr 17, 2026
dd2cd36
ci: add lxd_vm and EC2 integration test workflows
blackboxsw Apr 17, 2026
f9f156c
ci: switch to pytest-json-ctrf and refactor job env/defaults
blackboxsw Apr 17, 2026
eca37ba
ci: update image_type defaults, validate required secrets set perms
blackboxsw May 6, 2026
c7f16ab
ci: rename PYCLOUDLIB_TOML_B64 to indicate base64-encoded
blackboxsw May 6, 2026
1893397
ci: standardize input/dispatch defaults, errors for missing secrets
blackboxsw May 7, 2026
d053bb0
chore(ci): address review comments, single operation PRIVATE_KEY crea…
blackboxsw Jun 4, 2026
1ee6e65
fix(distros): clarify misleading ssh_redirect_user warning (#6906)
Sandhya-d Jun 16, 2026
afdd0c5
docs: fix chpasswd user entries in cloud-config example (#6905)
WaiHlyanMinThein17 Jun 17, 2026
73de636
test: pytest fix strict_parametrization_ids providing required id (#6…
blackboxsw Jun 26, 2026
eb787d2
feat(azure): add apply_network_config_set_name option to disable rena…
cjp256 Jun 29, 2026
71b5d36
test: apt resolute gpg remove accounts for gpg-from-sq (#6902)
blackboxsw Jun 30, 2026
8217935
chore: add type annotations to cloudinit.distros.parsers.hosts (#6916)
PhinehasNarh Jun 30, 2026
c9a520a
fix(analyze): return integer exit code from analyze_boot (#6863)
nanookclaw Jun 30, 2026
ba862bb
chore: bump pylint version, dropping deprecated argparse.FileType lin…
blackboxsw Jun 30, 2026
10831fa
fix(tests): make user_groups integration tests distro-aware (#6889)
mmummigatti Jun 30, 2026
fa1bca7
ci: bump labeler ver add pull-request write permission for labeling (…
blackboxsw Jul 2, 2026
6833c5d
merge from upstream/main at 26.1-69-gfa1bca7e
blackboxsw Jul 2, 2026
db621d9
drop cherry picks included in upstream/main.
blackboxsw Jul 2, 2026
acfa741
update changelog (new upstream snapshot)
blackboxsw Jul 2, 2026
551fca0
releasing cloud-init version 26.2~2gfa1bca7e-0ubuntu1
blackboxsw Jul 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions .github/workflows/00-daily-integration-26.04-lxd-container.yml

This file was deleted.

13 changes: 0 additions & 13 deletions .github/workflows/01-daily-integration-25.10-lxd-container.yml

This file was deleted.

13 changes: 0 additions & 13 deletions .github/workflows/02-daily-integration-24.04-lxd-container.yml

This file was deleted.

13 changes: 0 additions & 13 deletions .github/workflows/03-daily-integration-22.04-lxd-container.yml

This file was deleted.

7 changes: 5 additions & 2 deletions .github/workflows/10-daily-unit-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ jobs:
run: tox -e hypothesis-slow
devel_tests:
name: "Tip: Python"
if: github.repository == 'canonical/cloud-init'
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -44,14 +45,15 @@ jobs:
- name: Run unittest
run: tox -e py3 -- --color=yes
format_tip:
name: "Tip: Lint"
if: github.repository == 'canonical/cloud-init'
runs-on: ubuntu-latest
env:
FORCE_COLOR: 1
strategy:
fail-fast: false
matrix:
env: [tip-ruff, tip-mypy, tip-pylint, tip-black, tip-isort, py3-fast]
name: "Tip: Lint"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand All @@ -65,6 +67,7 @@ jobs:
run: tox
macos:
name: Python ${{matrix.python-version}} ${{ matrix.slug }}
if: github.repository == 'canonical/cloud-init'
runs-on: macos-latest
strategy:
matrix:
Expand Down
165 changes: 165 additions & 0 deletions .github/workflows/100-dispatch-common.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# WARNING: This workflow handles repository secrets (PYCLOUDLIB_TOML_B64, SSH keys).
# It MUST NOT be triggered by PR-driven workflows to prevent secret exposure to
# untrusted code submitted via pull requests.
name: "Dispatch: Integration"

on:
workflow_dispatch:
inputs:
release:
required: true
type: choice
options:
- resolute
- questing
- jammy
- noble
platform:
required: true
type: choice
options:
- lxd_container
- lxd_vm
- ec2
image_type:
required: true
type: choice
options:
- generic
- minimal
install_source:
required: false
type: string
default: 'ppa:cloud-init-dev/daily'
filter_tests:
required: false
type: string
workflow_call:
inputs:
release:
required: true
type: string
platform:
required: true
type: string
image_type:
required: true
type: string
install_source:
required: true
type: string
filter_tests:
required: false
type: string
secrets:
PYCLOUDLIB_TOML_B64:
required: true
SSH_PRIVATE_KEY:
required: true
SSH_PUBLIC_KEY:
required: true

jobs:
integration-test:
runs-on: ubuntu-latest
if: github.repository == 'canonical/cloud-init'

env:
REQUIRED_SECRET: ${{ secrets.PYCLOUDLIB_TOML_B64 }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_PUBLIC_KEY: ${{ secrets.SSH_PUBLIC_KEY }}
CLOUD_INIT_PLATFORM: ${{ inputs.platform }}
CLOUD_INIT_OS_IMAGE: ${{ inputs.release }}
CLOUD_INIT_OS_IMAGE_TYPE: ${{ inputs.image_type }}
CLOUD_INIT_CLOUD_INIT_SOURCE: ${{ inputs.install_source }}

steps:
- name: Assert required repo secrets are set
run: |
if [ -z "$REQUIRED_SECRET" ]; then
echo "ERROR: Missing required repo secret. Please provide the necessary repo secret at ${{ github.repository }}/settings/secrets/actions."
exit 1
fi
if [ -z "$SSH_PUBLIC_KEY" ]; then
echo "ERROR: Missing required repo secret. Please provide SSH_PUBLIC_KEY repo secret at ${{ github.repository }}/settings/secrets/actions."
exit 1
fi
if [ -z "$SSH_PRIVATE_KEY" ]; then
echo "ERROR: Missing required repo secret. Please provide SSH_PRIVATE_KEY repo secret at ${{ github.repository }}/settings/secrets/actions."
exit 1
fi
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup LXD
# This shared workflow supports manual dispatch with platform choices including
# lxd_vm and lxd_container. Only install the lxd snap for those platforms;
# cloud platforms such as EC2 do not need it.
if: ${{ contains(fromJSON('["lxd_vm", "lxd_container"]'), env.CLOUD_INIT_PLATFORM ) }}
uses: canonical/setup-lxd@8c6a87bfb56aa48f3fb9b830baa18562d8bfd4ee # v1
with:
channel: 6/stable
- name: Clean workspace
run: |
rm -rf ${{ github.workspace }}/cloud_init_test_logs/
- name: Setup SSH
run: |
mkdir -p ~/.ssh
sh -c 'printf "%s\n" "$SSH_PUBLIC_KEY" > ~/.ssh/cloudinit_id_rsa.pub'
# Dump secret using a subprocess to avoid accidental leaks when using set -x.
sh -c 'printf "%s\n" "$SSH_PRIVATE_KEY" | install -m 600 /dev/stdin ~/.ssh/cloudinit_id_rsa'
- name: Setup pycloudlib
env:
PYCLOUDLIB_CONFIG: ${{ runner.temp }}/pycloudlib.toml
run: |
sh -c 'echo "$REQUIRED_SECRET" | base64 -d > "$PYCLOUDLIB_CONFIG"'
- name: Install Dependencies
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -qy update
sudo DEBIAN_FRONTEND=noninteractive apt-get -qy install tox distro-info-data devscripts
- name: Run integration Tests
env:
CLOUD_INIT_LOCAL_LOG_PATH: ${{ github.workspace }}/cloud_init_test_logs
PYCLOUDLIB_CONFIG: ${{ runner.temp }}/pycloudlib.toml
run: |
tox -e integration-tests -- --junitxml="${{ github.workspace }}/junit-report.xml" --color=yes ${{ inputs.filter_tests || 'tests/integration_tests' }}
- name: Publish Test Report with Insights
if: ${{ always() }}
uses: ctrf-io/github-test-reporter@024bc4b64d997ca9da86833c6b9548c55c620e40 # v1.0.26
with:
report-path: '${{ github.workspace }}/junit-report.xml'
title: '${{ inputs.platform }}-${{ inputs.release }}-${{ inputs.image_type }}:${{ inputs.install_source }}'
integrations-config: |
{
"junit-to-ctrf": {
"enabled": true,
"action": "convert",
"options": {
"output": "./ctrf-report.json",
"toolname": "junit-to-ctrf",
"useSuiteName": false,
"env": {
"appName": "my-app"
}
}
}
}
summary-delta-report: true
insights-report: true
flaky-rate-report: true
slowest-report: true
upload-artifact: true
github-report: true
artifact-name: ctrf-report-${{ inputs.platform }}-${{ inputs.release }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload failure artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: failure-${{ github.job }}
path: ${{ github.workspace }}/cloud_init_test_logs/
retention-days: 2
- name: Clean pycloudlib
if: ${{ always() }}
run: |
rm -f ${{ runner.temp }}/pycloudlib.toml
119 changes: 0 additions & 119 deletions .github/workflows/11-dispatch-common.yml

This file was deleted.

Loading