Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fcb8f68a4a | |||
| 0d9f87fc06 | |||
| 1be20d99fa | |||
| 8ed95b8456 | |||
| 12fd6ca607 | |||
| 75cd759474 | |||
| 2646e00191 | |||
| f62e298c0e | |||
| fa2f5b4815 | |||
| dce2b21f0a | |||
| d9f2f12ea8 | |||
| 3708b41ea1 | |||
| 522f700a8f | |||
| bb887b7912 | |||
| d1e7592a66 | |||
| ac941eaf0a | |||
| 1932eb5b1a | |||
| 44685a66e1 | |||
| c73a29e9fa | |||
| eec95bce78 | |||
| 54fe6db2c6 | |||
| 7a8a9b0a11 | |||
| dc01c37dc5 | |||
| 8649f48207 | |||
| 58ecf45cf0 | |||
| a3ef6b2b8f | |||
| 84b177af16 | |||
| 7d634bd45a | |||
| 4e4e6cdb36 | |||
| ee9ec37ac5 | |||
| f2d2f38c0f | |||
| 7764984bf9 | |||
| 1fe6d0156d | |||
| 802455cbe6 | |||
| bb6893f898 | |||
| 3ddf8d150b | |||
| e14b36d131 | |||
| 514e429c4a | |||
| 0830eeb8fa | |||
| e664a5c3f3 | |||
| 93af8363f9 | |||
| 1b73462b49 | |||
| 3cae8d73d3 | |||
| 7afeca2a81 | |||
| 2e271cf1d9 | |||
| 982b41742e | |||
| 3ad48e7597 | |||
| eed8f18495 | |||
| 5119944d4c | |||
| 99c80a0773 | |||
| 676e808081 | |||
| e039a9492f | |||
| eee0743413 | |||
| 0e731c96a0 | |||
| 8b3114a482 | |||
| 29659cb4ed | |||
| d795344f43 |
@@ -39,8 +39,6 @@ body:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: Ubuntu Slim
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
|
||||
@@ -22,8 +22,6 @@ body:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: Ubuntu Slim
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
|
||||
@@ -60,8 +60,6 @@ body:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: Ubuntu Slim
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
|
||||
@@ -10,7 +10,7 @@ permissions:
|
||||
|
||||
jobs:
|
||||
check-pinning-dates:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-slim
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
Create_pull_request:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-slim
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
name: Test Docker Images
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'images/ubuntu-slim/**'
|
||||
- '.github/workflows/docker-images.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'images/ubuntu-slim/**'
|
||||
- '.github/workflows/docker-images.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test-images:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
directory:
|
||||
- images/ubuntu-slim
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Run test.sh
|
||||
working-directory: ${{ matrix.directory }}
|
||||
run: ./test.sh
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
Merge_pull_request:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-slim
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
Update_GitHub_release:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-slim
|
||||
|
||||
steps:
|
||||
- name: Update release for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
|
||||
@@ -22,16 +22,15 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
|
||||
| --------------------|---------------------|--------------------|
|
||||
| Ubuntu 24.04 | `ubuntu-latest` or `ubuntu-24.04` | [ubuntu-24.04] |
|
||||
| Ubuntu 22.04 | `ubuntu-22.04` | [ubuntu-22.04] |
|
||||
| Ubuntu Slim | `ubuntu-slim` | [ubuntu-slim] |
|
||||
| macOS 26 Arm64 `beta` | `macos-26` or `macos-26-xlarge` | [macOS-26-arm64] |
|
||||
| macOS 15 | `macos-latest-large`, `macos-15-large`, or `macos-15-intel` | [macOS-15] |
|
||||
| macOS 15 Arm64 | `macos-latest`, `macos-15`, or `macos-15-xlarge` | [macOS-15-arm64] |
|
||||
| macOS 14 | `macos-14-large`| [macOS-14] |
|
||||
| macOS 14 Arm64 | `macos-14` or `macos-14-xlarge`| [macOS-14-arm64] |
|
||||
| macOS 13  | `macos-13` or `macos-13-large` | [macOS-13] |
|
||||
| macOS 13 Arm64  | `macos-13-xlarge` | [macOS-13-arm64] |
|
||||
| Windows Server 2025 | `windows-latest` or `windows-2025` | [windows-2025] |
|
||||
| Windows Server 2022 | `windows-2022` | [windows-2022] |
|
||||
| Windows Server 2019  | `windows-2019` | [windows-2019] |
|
||||
| Windows Server 2019 [](https://github.com/actions/runner-images/issues/12045) | `windows-2019` | [windows-2019] |
|
||||
|
||||
### Label scheme
|
||||
|
||||
@@ -40,11 +39,10 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
|
||||
|
||||
[ubuntu-24.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md
|
||||
[ubuntu-22.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md
|
||||
[ubuntu-slim]: https://github.com/actions/runner-images/blob/main/images/ubuntu-slim/ubuntu-slim-Readme.md
|
||||
[windows-2019]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2019-Readme.md
|
||||
[windows-2025]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md
|
||||
[windows-2022]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md
|
||||
[macOS-13]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
|
||||
[macOS-13-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-arm64-Readme.md
|
||||
[macOS-14]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
|
||||
[macOS-14-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md
|
||||
[macOS-15]: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
|
||||
|
||||
@@ -1,294 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
################################################################################
|
||||
## File: diff-image-versions.sh
|
||||
## Desc: Compare software versions between two runner image releases
|
||||
## Usage: ./diff-image-versions.sh <os-name> <version1> <version2>
|
||||
##
|
||||
## Example:
|
||||
## ./diff-image-versions.sh ubuntu22 20251102.127 20251125.163
|
||||
## ./diff-image-versions.sh win25 20251102.77 20251125.122
|
||||
## ./diff-image-versions.sh macos-14 20251102.0024 20251125.0031
|
||||
################################################################################
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $(basename "${0}") <os-name> <version1> <version2>
|
||||
|
||||
Compare runner image versions and display software changes.
|
||||
|
||||
Arguments:
|
||||
os-name OS identifier (ubuntu22, ubuntu24, win19, win22, win25,
|
||||
macos-13, macos-14, macos-15, or arm64 variants)
|
||||
version1 Earlier version (YYYYMMDD.NNN)
|
||||
version2 Later version (YYYYMMDD.NNN)
|
||||
|
||||
Examples:
|
||||
$(basename "${0}") ubuntu22 20251102.127 20251125.163
|
||||
$(basename "${0}") win25 20251102.77 20251125.122
|
||||
EOF
|
||||
}
|
||||
|
||||
get_readme_path() {
|
||||
local os_name="${1}"
|
||||
local os_folder=""
|
||||
local pattern=""
|
||||
|
||||
# Determine OS folder and readme filename pattern
|
||||
case "${os_name}" in
|
||||
ubuntu*)
|
||||
os_folder="ubuntu"
|
||||
local version="${os_name#ubuntu}"
|
||||
pattern="Ubuntu${version}04-Readme.md"
|
||||
;;
|
||||
win*)
|
||||
os_folder="windows"
|
||||
local version="${os_name#win}"
|
||||
pattern="Windows20${version}-Readme.md"
|
||||
;;
|
||||
macos*)
|
||||
os_folder="macos"
|
||||
pattern="${os_name}-Readme.md"
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown OS '${os_name}'" >&2
|
||||
echo "Valid: ubuntu*, win*, macos-*" >&2
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
local readme_path="images/${os_folder}/${pattern}"
|
||||
|
||||
# Verify file exists in git repository
|
||||
if ! git cat-file -e "HEAD:${readme_path}" 2>/dev/null; then
|
||||
echo "Error: Readme not found: ${readme_path}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "${readme_path}"
|
||||
}
|
||||
|
||||
validate_version() {
|
||||
local version="${1}"
|
||||
|
||||
if [[ ! "${version}" =~ ^[0-9]{8}\.[0-9]+$ ]]; then
|
||||
echo "Error: Invalid version '${version}'" >&2
|
||||
echo "Format: YYYYMMDD.NNN (e.g., 20251102.127)" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
tag_exists() {
|
||||
local tag="${1}"
|
||||
|
||||
if git rev-parse "${tag}" >/dev/null 2>&1; then
|
||||
return 0
|
||||
else
|
||||
echo "Error: Tag '${tag}' not found" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
# Check arguments
|
||||
if [[ $# -ne 3 ]]; then
|
||||
usage
|
||||
return 1
|
||||
fi
|
||||
|
||||
local os_name="${1}"
|
||||
local version1="${2}"
|
||||
local version2="${3}"
|
||||
|
||||
# Validate inputs
|
||||
validate_version "${version1}" || return 1
|
||||
validate_version "${version2}" || return 1
|
||||
|
||||
# Get readme path
|
||||
local readme_path
|
||||
readme_path="$(get_readme_path "${os_name}")" || return 1
|
||||
|
||||
# Construct git tags
|
||||
local tag1="${os_name}/${version1}"
|
||||
local tag2="${os_name}/${version2}"
|
||||
|
||||
# Verify tags exist
|
||||
tag_exists "${tag1}" || return 1
|
||||
tag_exists "${tag2}" || return 1
|
||||
|
||||
# Get release dates
|
||||
local date1
|
||||
local date2
|
||||
date1=$(git log -1 --format="%ci" "${tag1}" | cut -d' ' -f1)
|
||||
date2=$(git log -1 --format="%ci" "${tag2}" | cut -d' ' -f1)
|
||||
|
||||
# Calculate days between releases
|
||||
local days_diff
|
||||
days_diff=$(( ($(date -d "${date2}" +%s) - $(date -d "${date1}" +%s)) / 86400 ))
|
||||
|
||||
# Display header
|
||||
echo "================================================================================"
|
||||
echo "Comparing: ${os_name}"
|
||||
echo " From: ${version1} (${date1})"
|
||||
echo " To: ${version2} (${date2})"
|
||||
echo " Span: ${days_diff} days"
|
||||
echo "================================================================================"
|
||||
echo ""
|
||||
|
||||
# Perform diff with minimal context (only changed lines with colors)
|
||||
# ANSI codes: ^[[31m (red for -), ^[[32m (green for +), ^[[36m (cyan for @@)
|
||||
# Filter to show only lines starting with red/green (additions/deletions)
|
||||
local diff_output
|
||||
diff_output=$(git diff --color=always --unified=0 "${tag1}:${readme_path}" "${tag2}:${readme_path}" | \
|
||||
grep -E $'^\x1b\\[(31|32)m' | \
|
||||
grep -v -E $'^\x1b\\[1m(---|\\+\\+\\+)')
|
||||
|
||||
if [[ -n "${diff_output}" ]]; then
|
||||
# Extract announcements from both versions
|
||||
local announcements1
|
||||
local announcements2
|
||||
announcements1=$(git show "${tag1}:${readme_path}" | sed -n '/| Announcements |/,/^\*\*\*$/p' | grep -E '^\| \[' | sed 's/^| \[/• [/' | sed 's/ |$//' || true)
|
||||
announcements2=$(git show "${tag2}:${readme_path}" | sed -n '/| Announcements |/,/^\*\*\*$/p' | grep -E '^\| \[' | sed 's/^| \[/• [/' | sed 's/ |$//' || true)
|
||||
|
||||
# Show announcement changes
|
||||
if [[ "${announcements1}" != "${announcements2}" ]]; then
|
||||
echo "📢 Announcement Changes:"
|
||||
echo "────────────────────────────────────────────────────────────────────────────────"
|
||||
if [[ -n "${announcements2}" ]]; then
|
||||
echo "${announcements2}"
|
||||
else
|
||||
echo "(no announcements)"
|
||||
fi
|
||||
echo "────────────────────────────────────────────────────────────────────────────────"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Extract cached tools sections
|
||||
local cached_tools1
|
||||
local cached_tools2
|
||||
cached_tools1=$(git show "${tag1}:${readme_path}" | sed -n '/^### Cached Tools$/,/^###[^#]/p' | head -n -1 || true)
|
||||
cached_tools2=$(git show "${tag2}:${readme_path}" | sed -n '/^### Cached Tools$/,/^###[^#]/p' | head -n -1 || true)
|
||||
|
||||
# Show cached tools changes
|
||||
if [[ "${cached_tools1}" != "${cached_tools2}" ]]; then
|
||||
local cached_diff
|
||||
cached_diff=$(git diff --color=always --unified=2 --no-index \
|
||||
<(echo "${cached_tools1}") <(echo "${cached_tools2}") 2>/dev/null | \
|
||||
grep -E $'(^\x1b\\[(31|32)m[-+]| #### )' | \
|
||||
sed -r 's/\x1b\[m$//' || true)
|
||||
|
||||
if [[ -n "${cached_diff}" ]]; then
|
||||
echo "🔧 Cached Tools Changes (setup-* actions):"
|
||||
echo "────────────────────────────────────────────────────────────────────────────────"
|
||||
echo "${cached_diff}"
|
||||
echo "────────────────────────────────────────────────────────────────────────────────"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Full Diff:"
|
||||
echo "────────────────────────────────────────────────────────────────────────────────"
|
||||
echo "${diff_output}"
|
||||
echo "────────────────────────────────────────────────────────────────────────────────"
|
||||
echo ""
|
||||
|
||||
# Count changes
|
||||
local changes
|
||||
changes=$(echo "${diff_output}" | wc -l)
|
||||
echo "Changes: ${changes} lines"
|
||||
|
||||
# Parse version changes for breaking change analysis
|
||||
local breaking_changes=()
|
||||
local removals=()
|
||||
local additions=()
|
||||
|
||||
# Extract clean lines (strip ANSI codes)
|
||||
while IFS= read -r line; do
|
||||
if [[ "${line}" =~ ^\-(.+)$ ]]; then
|
||||
removals+=("${BASH_REMATCH[1]}")
|
||||
elif [[ "${line}" =~ ^\+(.+)$ ]]; then
|
||||
additions+=("${BASH_REMATCH[1]}")
|
||||
fi
|
||||
done < <(echo "${diff_output}" | sed -r 's/\x1b\[[0-9;]*m//g')
|
||||
|
||||
# Detect breaking changes
|
||||
for removed in "${removals[@]}"; do
|
||||
local tool_name=""
|
||||
local old_version=""
|
||||
local found_match=false
|
||||
|
||||
# Try to extract tool name and version (handle various formats)
|
||||
if [[ "${removed}" =~ ^([^0-9]+[[:space:]]+)([0-9]+\.[0-9]+[^[:space:]]*) ]]; then
|
||||
tool_name="${BASH_REMATCH[1]}"
|
||||
old_version="${BASH_REMATCH[2]}"
|
||||
elif [[ "${removed}" =~ ^([^0-9]+[[:space:]]+v)([0-9]+\.[0-9]+[^[:space:]]*) ]]; then
|
||||
tool_name="${BASH_REMATCH[1]}"
|
||||
old_version="${BASH_REMATCH[2]}"
|
||||
fi
|
||||
|
||||
# If we found a semver-style version, look for matching addition
|
||||
if [[ -n "${tool_name}" && -n "${old_version}" ]]; then
|
||||
for added in "${additions[@]}"; do
|
||||
if [[ "${added}" =~ ^${tool_name}([0-9]+\.[0-9]+[^[:space:]]*) ]]; then
|
||||
local new_version="${BASH_REMATCH[1]}"
|
||||
found_match=true
|
||||
|
||||
# Extract major version for semver comparison
|
||||
if [[ "${old_version}" =~ ^([0-9]+)\. && "${new_version}" =~ ^([0-9]+)\. ]]; then
|
||||
local old_major="${BASH_REMATCH[1]}"
|
||||
local new_major="${BASH_REMATCH[1]}"
|
||||
|
||||
[[ "${old_version}" =~ ^([0-9]+)\. ]] && old_major="${BASH_REMATCH[1]}"
|
||||
[[ "${new_version}" =~ ^([0-9]+)\. ]] && new_major="${BASH_REMATCH[1]}"
|
||||
|
||||
if [[ ${new_major} -gt ${old_major} ]]; then
|
||||
breaking_changes+=("🔴 ${tool_name}${old_version} → ${new_version} (major version bump)")
|
||||
fi
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# If no match found and looks like a versioned tool, it's a removal
|
||||
if [[ ${found_match} == false && -n "${old_version}" ]]; then
|
||||
breaking_changes+=("❌ ${removed} (removed)")
|
||||
elif [[ ${found_match} == false && "${removed}" =~ [0-9]+\.[0-9]+ ]]; then
|
||||
breaking_changes+=("❌ ${removed} (removed)")
|
||||
fi
|
||||
done
|
||||
|
||||
# Display breaking changes
|
||||
if [[ ${#breaking_changes[@]} -gt 0 ]]; then
|
||||
echo ""
|
||||
echo "⚠️ Breaking changes detected (${#breaking_changes[@]}):"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
printf '%s\n' "${breaking_changes[@]}"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
fi
|
||||
else
|
||||
echo "No changes found."
|
||||
fi
|
||||
|
||||
# Display PR link and commit count
|
||||
local pr_number
|
||||
pr_number=$(git log --all --format="%s" --grep="${version2}" | \
|
||||
grep -oP '\(#\K[0-9]+(?=\))' | head -1)
|
||||
|
||||
local commit_count
|
||||
commit_count=$(git rev-list --count "${tag1}..${tag2}")
|
||||
|
||||
echo "Commits: ${commit_count}"
|
||||
|
||||
if [[ -n "${pr_number}" ]]; then
|
||||
echo "PR: https://github.com/actions/runner-images/pull/${pr_number}"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Execute main function
|
||||
main "$@"
|
||||
@@ -22,8 +22,9 @@ export PATH="/usr/local/opt/curl/bin:$PATH"
|
||||
export PATH=$HOME/.cargo/bin:$PATH
|
||||
|
||||
export RCT_NO_LAUNCH_PACKAGER=1
|
||||
export DOTNET_ROOT=$HOME/.dotnet
|
||||
export DOTNET_MULTILEVEL_LOOKUP=0
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
export DOTNET_NOLOGO=1
|
||||
|
||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[macOS] DOTNET_ROOT environment variable variable will be removed on January 12th, 2026](https://github.com/actions/runner-images/issues/13470) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
| [[macOS] Deprecation of simulator runtimes for Xcode 16.3 and older on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.8.2 (23J126)
|
||||
- OS Version: macOS 14.8.3 (23J220)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20251203.0047.1
|
||||
- Image Version: 20260105.0099.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
@@ -24,85 +26,85 @@
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Kotlin 2.3.0-release-356
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.6
|
||||
- Perl 5.40.2
|
||||
- PHP 8.5.0
|
||||
- Python3 3.14.0
|
||||
- Perl 5.42.0
|
||||
- PHP 8.5.1
|
||||
- Python3 3.14.2
|
||||
- Ruby 3.3.10
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.3
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.2
|
||||
- Homebrew 5.0.4
|
||||
- Composer 2.9.3
|
||||
- Homebrew 5.0.8
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 4c4abc2e87)
|
||||
- RubyGems 4.0.3
|
||||
- Vcpkg 2025 (build from commit af752f21c9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Apache Maven 3.9.12
|
||||
- Gradle 9.2.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazel 8.5.0
|
||||
- bazelisk 1.27.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.17.0
|
||||
- Git 2.50.1
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.83.2
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.4.9
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.3
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- yq 4.50.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS CLI 2.32.28
|
||||
- AWS SAM CLI 1.151.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- Cmake 4.2.1
|
||||
- CodeQL Action Bundle 2.23.8
|
||||
- Fastlane 2.230.0
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Xcbeautify 3.1.2
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.62.2
|
||||
- SwiftLint 0.63.0
|
||||
|
||||
### Browsers
|
||||
- Safari 26.1 (19622.2.11.119.1)
|
||||
- SafariDriver 26.1 (19622.2.11.119.1)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.2 (19623.1.14.18.4)
|
||||
- SafariDriver 26.2 (19623.1.14.18.4)
|
||||
- Google Chrome 143.0.7499.170
|
||||
- Google Chrome for Testing 143.0.7499.169
|
||||
- ChromeDriver 143.0.7499.169
|
||||
- Microsoft Edge 143.0.3650.96
|
||||
- Microsoft Edge WebDriver 143.0.3650.96
|
||||
- Mozilla Firefox 146.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.39.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -125,20 +127,20 @@
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
#### Python
|
||||
- 3.9.25
|
||||
- 3.10.19
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.10
|
||||
- 3.14.1
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
@@ -147,13 +149,13 @@
|
||||
- 1.25.5
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.92
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
@@ -263,10 +265,10 @@
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android Emulator | 36.3.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
@@ -289,7 +291,7 @@
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.1.2-57293/ParallelsDesktop-26.1.2-57293.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.2.0-57363/ParallelsDesktop-26.2.0-57363.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[macOS] DOTNET_ROOT environment variable variable will be removed on January 12th, 2026](https://github.com/actions/runner-images/issues/13470) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
| [[macOS] Deprecation of simulator runtimes for Xcode 16.3 and older on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.8.2 (23J126)
|
||||
- OS Version: macOS 14.8.3 (23J220)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20251203.0037.1
|
||||
- Image Version: 20260105.0074.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
@@ -24,80 +26,80 @@
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Kotlin 2.3.0-release-356
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.6
|
||||
- Perl 5.40.2
|
||||
- Python3 3.14.0
|
||||
- Perl 5.42.0
|
||||
- Python3 3.14.2
|
||||
- Ruby 3.3.10
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.3
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.0.4
|
||||
- Homebrew 5.0.8
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 80d025e829)
|
||||
- RubyGems 4.0.3
|
||||
- Vcpkg 2025 (build from commit af752f21c9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Apache Maven 3.9.12
|
||||
- Gradle 9.2.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazel 8.5.0
|
||||
- bazelisk 1.27.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.83.2
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.4.9
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.3
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- yq 4.50.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS CLI 2.32.28
|
||||
- AWS SAM CLI 1.151.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- Cmake 4.2.1
|
||||
- CodeQL Action Bundle 2.23.8
|
||||
- Fastlane 2.230.0
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Xcbeautify 3.1.2
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.1 (19622.2.11.119.1)
|
||||
- SafariDriver 26.1 (19622.2.11.119.1)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.2 (19623.1.14.18.4)
|
||||
- SafariDriver 26.2 (19623.1.14.18.4)
|
||||
- Google Chrome 143.0.7499.170
|
||||
- Google Chrome for Testing 143.0.7499.169
|
||||
- ChromeDriver 143.0.7499.169
|
||||
- Microsoft Edge 143.0.3650.96
|
||||
- Microsoft Edge WebDriver 143.0.3650.96
|
||||
- Mozilla Firefox 146.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.39.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -119,18 +121,18 @@
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.9
|
||||
- 3.14.0
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
@@ -139,13 +141,13 @@
|
||||
- 1.25.5
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.92
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
@@ -260,10 +262,10 @@
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android Emulator | 36.3.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[macOS] DOTNET_ROOT environment variable variable will be removed on January 12th, 2026](https://github.com/actions/runner-images/issues/13470) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
| [[macOS] Deprecation of simulator runtimes for Xcode 16.3 and older on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.7.2 (24G325)
|
||||
- OS Version: macOS 15.7.3 (24G419)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20251203.0058.1
|
||||
- Image Version: 20260105.0104.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/bin/clang`
|
||||
@@ -24,83 +26,83 @@
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Kotlin 2.3.0-release-356
|
||||
- Node.js 22.21.1
|
||||
- Perl 5.40.2
|
||||
- PHP 8.5.0
|
||||
- Python3 3.14.0
|
||||
- Perl 5.42.0
|
||||
- PHP 8.5.1
|
||||
- Python3 3.14.2
|
||||
- Ruby 3.3.10
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.3
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.2
|
||||
- Homebrew 5.0.4
|
||||
- Composer 2.9.3
|
||||
- Homebrew 5.0.8
|
||||
- NPM 10.9.4
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 80d025e829)
|
||||
- RubyGems 4.0.3
|
||||
- Vcpkg 2025 (build from commit af752f21c9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Apache Maven 3.9.12
|
||||
- Gradle 9.2.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazel 8.5.0
|
||||
- bazelisk 1.27.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.17.0
|
||||
- Git 2.50.1
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.83.2
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.4.9
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.3
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- yq 4.50.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS CLI 2.32.28
|
||||
- AWS SAM CLI 1.151.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- Cmake 4.2.1
|
||||
- CodeQL Action Bundle 2.23.8
|
||||
- Fastlane 2.230.0
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Xcbeautify 3.1.2
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.62.2
|
||||
- SwiftLint 0.63.0
|
||||
|
||||
### Browsers
|
||||
- Safari 26.1 (20622.2.11.119.1)
|
||||
- SafariDriver 26.1 (20622.2.11.119.1)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.2 (20623.1.14.18.4)
|
||||
- SafariDriver 26.2 (20623.1.14.18.4)
|
||||
- Google Chrome 143.0.7499.170
|
||||
- Google Chrome for Testing 143.0.7499.169
|
||||
- ChromeDriver 143.0.7499.169
|
||||
- Microsoft Edge 143.0.3650.96
|
||||
- Microsoft Edge WebDriver 143.0.3650.96
|
||||
- Mozilla Firefox 146.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.39.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -122,20 +124,20 @@
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
#### Python
|
||||
- 3.9.25
|
||||
- 3.10.19
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.10
|
||||
- 3.14.1
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
@@ -144,13 +146,13 @@
|
||||
- 1.25.5
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.92
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
@@ -269,10 +271,10 @@
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android Emulator | 36.3.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
@@ -295,7 +297,7 @@
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.1.2-57293/ParallelsDesktop-26.1.2-57293.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.2.0-57363/ParallelsDesktop-26.2.0-57363.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[macOS] DOTNET_ROOT environment variable variable will be removed on January 12th, 2026](https://github.com/actions/runner-images/issues/13470) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
| [[macOS] Deprecation of simulator runtimes for Xcode 16.3 and older on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.7.2 (24G325)
|
||||
- OS Version: macOS 15.7.3 (24G419)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20251203.0057.1
|
||||
- Image Version: 20260105.0094.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/bin/clang`
|
||||
@@ -24,78 +26,78 @@
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Kotlin 2.3.0-release-356
|
||||
- Node.js 22.21.1
|
||||
- Perl 5.40.2
|
||||
- Python3 3.14.0
|
||||
- Perl 5.42.0
|
||||
- Python3 3.14.2
|
||||
- Ruby 3.3.10
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.3
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.0.4
|
||||
- Homebrew 5.0.8
|
||||
- NPM 10.9.4
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 80d025e829)
|
||||
- RubyGems 4.0.3
|
||||
- Vcpkg 2025 (build from commit af752f21c9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Apache Maven 3.9.12
|
||||
- Gradle 9.2.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazel 8.5.0
|
||||
- bazelisk 1.27.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.83.2
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.4.9
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.3
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- yq 4.50.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS CLI 2.32.28
|
||||
- AWS SAM CLI 1.151.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- Cmake 4.2.1
|
||||
- CodeQL Action Bundle 2.23.8
|
||||
- Fastlane 2.230.0
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Xcbeautify 3.1.2
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.1 (20622.2.11.119.1)
|
||||
- SafariDriver 26.1 (20622.2.11.119.1)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.2 (20623.1.14.18.4)
|
||||
- SafariDriver 26.2 (20623.1.14.18.4)
|
||||
- Google Chrome 143.0.7499.170
|
||||
- Google Chrome for Testing 143.0.7499.169
|
||||
- ChromeDriver 143.0.7499.169
|
||||
- Microsoft Edge 143.0.3650.96
|
||||
- Microsoft Edge WebDriver 143.0.3650.96
|
||||
- Mozilla Firefox 146.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.39.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -117,18 +119,18 @@
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.10
|
||||
- 3.14.1
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
@@ -137,13 +139,13 @@
|
||||
- 1.25.5
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.92
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
@@ -267,10 +269,10 @@
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android Emulator | 36.3.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[macOS] DOTNET_ROOT environment variable variable will be removed on January 12th, 2026](https://github.com/actions/runner-images/issues/13470) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
| [[macOS] Deprecation of simulator runtimes for Xcode 16.3 and older on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
***
|
||||
# macOS 26
|
||||
- OS Version: macOS 26.0.1 (25A362)
|
||||
- Kernel Version: Darwin 25.0.0
|
||||
- Image Version: 20251203.0070.1
|
||||
- Image Version: 20260106.0138.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 20.1.8 - available on `$(brew --prefix llvm@20)/bin/clang`
|
||||
@@ -24,78 +26,78 @@
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Node.js 24.11.1
|
||||
- Perl 5.40.2
|
||||
- Python3 3.14.0
|
||||
- Ruby 3.4.7
|
||||
- Kotlin 2.3.0-release-356
|
||||
- Node.js 24.12.0
|
||||
- Perl 5.42.0
|
||||
- Python3 3.14.2
|
||||
- Ruby 3.4.8
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.3
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.0.4
|
||||
- Homebrew 5.0.9
|
||||
- NPM 11.6.2
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 80d025e829)
|
||||
- RubyGems 4.0.3
|
||||
- Vcpkg 2025 (build from commit e3db8f65d2)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Apache Maven 3.9.12
|
||||
- Gradle 9.2.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazel 8.5.0
|
||||
- bazelisk 1.27.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.83.2
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.4.9
|
||||
- jq 1.8.1
|
||||
- OpenSSL 3.6.0 1 Oct 2025 (Library: OpenSSL 3.6.0 1 Oct 2025)
|
||||
- Packer 1.14.3
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- yq 4.50.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS CLI 2.32.29
|
||||
- AWS SAM CLI 1.151.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- Cmake 4.2.1
|
||||
- CodeQL Action Bundle 2.23.8
|
||||
- Fastlane 2.230.0
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Xcode Command Line Tools 26.1.0.0.1.1761104275
|
||||
- Xcbeautify 3.1.2
|
||||
- Xcode Command Line Tools 26.2.0.0.1.1764812424
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.0.1 (21622.1.22.11.15)
|
||||
- SafariDriver 26.0.1 (21622.1.22.11.15)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Google Chrome 143.0.7499.170
|
||||
- Google Chrome for Testing 143.0.7499.169
|
||||
- ChromeDriver 143.0.7499.169
|
||||
- Microsoft Edge 143.0.3650.96
|
||||
- Microsoft Edge WebDriver 143.0.3650.96
|
||||
- Mozilla Firefox 146.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.39.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -117,18 +119,18 @@
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.10
|
||||
- 3.14.1
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Go
|
||||
- 1.23.12
|
||||
@@ -136,13 +138,13 @@
|
||||
- 1.25.5
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.92
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
@@ -154,53 +156,42 @@
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| ---------------- | -------- | ----------------------------------- | -------------------------------------------------------------- |
|
||||
| 26.2 (beta) | 17C5038g | /Applications/Xcode_26.2_beta_2.app | /Applications/Xcode_26.2.0.app<br>/Applications/Xcode_26.2.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 (default) | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app<br>/Applications/Xcode.app |
|
||||
| 16.4 | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.app |
|
||||
| Version | Build | Path | Symlinks |
|
||||
| ---------------- | ------ | ------------------------------ | ------------------------------------------------------- |
|
||||
| 26.2 | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 (default) | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app<br>/Applications/Xcode.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------- | -------------------- | ------------- |
|
||||
| macOS 15.5 | macosx15.5 | 16.4 |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.1.1 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2 |
|
||||
| iOS 18.5 | iphoneos18.5 | 16.4 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2 |
|
||||
| Simulator - iOS 18.5 | iphonesimulator18.5 | 16.4 |
|
||||
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
|
||||
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
|
||||
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2 |
|
||||
| tvOS 18.5 | appletvos18.5 | 16.4 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2 |
|
||||
| Simulator - tvOS 18.5 | appletvsimulator18.5 | 16.4 |
|
||||
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
|
||||
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
|
||||
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2 |
|
||||
| watchOS 11.5 | watchos11.5 | 16.4 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1.1 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2 |
|
||||
| Simulator - watchOS 11.5 | watchsimulator11.5 | 16.4 |
|
||||
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
|
||||
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
|
||||
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2 |
|
||||
| visionOS 2.5 | xros2.5 | 16.4 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1.1 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2 |
|
||||
| Simulator - visionOS 2.5 | xrsimulator2.5 | 16.4 |
|
||||
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
|
||||
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
|
||||
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2 |
|
||||
| DriverKit 24.5 | driverkit24.5 | 16.4 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2 |
|
||||
@@ -208,28 +199,27 @@
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 18.5 | 18.5 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.6 | 18.6 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 26.0 | 26.0.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.1 | 26.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 18.5 | 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 26.0 | 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 26.0 | 26.0 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| visionOS 2.5 | 2.5 | Apple Vision Pro |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| visionOS 26.0 | 26.0 | Apple Vision Pro |
|
||||
| visionOS 26.1 | 26.1 | Apple Vision Pro |
|
||||
| visionOS 26.2 | 26.2 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android Emulator | 36.3.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
|
||||
@@ -10,9 +10,12 @@ echo "Enabling developer mode..."
|
||||
sudo /usr/sbin/DevToolsSecurity --enable
|
||||
|
||||
# Turn off hibernation and get rid of the sleepimage
|
||||
sudo pmset hibernatemode 0
|
||||
sudo pmset -a hibernatemode 0
|
||||
sudo rm -f /var/vm/sleepimage
|
||||
|
||||
# Set computer, disk, and display sleep to never
|
||||
sudo pmset -a sleep 0 disksleep 0 displaysleep 0
|
||||
|
||||
# Disable App Nap System Wide
|
||||
defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
|
||||
|
||||
|
||||
@@ -7,15 +7,7 @@
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo "Installing Git..."
|
||||
#brew_smart_install "git"
|
||||
|
||||
# pin Git to 2.50.1 due to problems in the latest Git version 2.51.0
|
||||
COMMIT=6b39030bc0d0a0a8df99afe37e5ae4d61ba07c88
|
||||
FORMULA_URL="https://raw.githubusercontent.com/Homebrew/homebrew-core/$COMMIT/Formula/g/git.rb"
|
||||
FORMULA_PATH="$(brew --repository)/Library/Taps/homebrew/homebrew-core/Formula/g/git.rb"
|
||||
mkdir -p "$(dirname $FORMULA_PATH)"
|
||||
curl -fsSL $FORMULA_URL -o $FORMULA_PATH
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_FROM_API=1 brew install git
|
||||
brew_smart_install "git"
|
||||
|
||||
git config --global --add safe.directory "*"
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ Describe "bazelisk" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Github CLI" {
|
||||
Describe "GitHub CLI" {
|
||||
It "GitHub CLI" {
|
||||
"gh --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
@@ -132,8 +132,8 @@
|
||||
"android": {
|
||||
"cmdline-tools": "commandlinetools-mac-10406996_latest.zip",
|
||||
"sdk-tools": "sdk-tools-darwin-4333796.zip",
|
||||
"platform_min_version": "33",
|
||||
"build_tools_min_version": "33.0.2",
|
||||
"platform_min_version": "34",
|
||||
"build_tools_min_version": "34.0.0",
|
||||
"extras": [
|
||||
"android;m2repository", "google;m2repository", "google;google_play_services"
|
||||
],
|
||||
@@ -143,9 +143,9 @@
|
||||
"cmake;4.1.2"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "26",
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27", "28", "29"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -232,7 +232,6 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
|
||||
@@ -3,6 +3,13 @@
|
||||
"default": "16.4",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
@@ -25,9 +32,9 @@
|
||||
"version": "16.4.0+16F6",
|
||||
"sha256": "2dbf65ba28fb85b34e72c14c529a42d5c3189ab0f11fb29fdebd5f4ee6c87900",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["18.4", "18.5", "18.6"] },
|
||||
{ "watchOS": ["11.2", "11.4", "11.5"] },
|
||||
{ "tvOS": ["18.2", "18.4", "18.5"] }
|
||||
{ "iOS": ["18.5", "18.6"] },
|
||||
{ "watchOS": ["11.5"] },
|
||||
{ "tvOS": ["18.5"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -63,6 +70,13 @@
|
||||
},
|
||||
"arm64":{
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
@@ -85,9 +99,9 @@
|
||||
"version": "16.4.0+16F6",
|
||||
"sha256": "2dbf65ba28fb85b34e72c14c529a42d5c3189ab0f11fb29fdebd5f4ee6c87900",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["18.4", "18.5", "18.6"] },
|
||||
{ "watchOS": ["11.2", "11.4", "11.5"] },
|
||||
{ "tvOS": ["18.2", "18.4", "18.5"] },
|
||||
{ "iOS": ["18.5", "18.6"] },
|
||||
{ "watchOS": ["11.5"] },
|
||||
{ "tvOS": ["18.5"] },
|
||||
{ "visionOS": ["2.3", "2.4", "2.5"] }
|
||||
]
|
||||
},
|
||||
@@ -149,7 +163,7 @@
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27","28", "29"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -236,7 +250,6 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
|
||||
@@ -4,12 +4,11 @@
|
||||
"arm64":{
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.2_Release_Candidate",
|
||||
"filename": "Xcode_26.2_Release_Candidate_Universal",
|
||||
"version": "26.2_Release_Candidate+17C48",
|
||||
"symlinks": ["26.2"],
|
||||
"sha256": "63743df751791508ac8e4f01a33e3f28f3a59a86ff3f33c8c155c3046daedf42",
|
||||
"install_runtimes": "none"
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
FROM ubuntu:24.04 AS base
|
||||
|
||||
ARG IMAGE_VERSION=1.0.0
|
||||
ARG IMAGE_OWNER="GitHub"
|
||||
|
||||
ENV IMAGE_OWNER=$IMAGE_OWNER
|
||||
ENV ImageVersion=$IMAGE_VERSION
|
||||
ENV IMAGE_VERSION=$IMAGE_VERSION
|
||||
ENV ImageOS="Linux"
|
||||
ENV IMAGE_TARGET_PLATFORM="GitHub"
|
||||
ENV POWERSHELL_DISTRIBUTION_CHANNEL="GitHub-Actions-$ImageOS"
|
||||
ENV IMAGEDATA_NAME="ubuntu:24.04"
|
||||
ENV NVM_DIR="/etc/skel/.nvm"
|
||||
ENV HELPER_SCRIPTS="/tmp/scripts/helpers"
|
||||
ENV INSTALLER_SCRIPT_FOLDER="/tmp/toolsets"
|
||||
|
||||
# Avoid interactive prompts
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
COPY scripts/build /tmp/scripts/build
|
||||
COPY scripts/helpers /tmp/scripts/helpers
|
||||
COPY toolsets/ /tmp/toolsets/
|
||||
RUN find /tmp/scripts -name "*.sh" -type f -exec chmod +x {} \;
|
||||
|
||||
COPY scripts/entrypoint.sh /opt/entrypoint.sh
|
||||
RUN chmod +x /opt/entrypoint.sh
|
||||
|
||||
RUN apt-get update && apt-get upgrade -y && apt-get install -y sudo lsb-release jq dpkg && \
|
||||
touch /run/.containerenv && \
|
||||
/tmp/scripts/build/configure-apt-sources.sh && \
|
||||
/tmp/scripts/build/configure-apt.sh && \
|
||||
/tmp/scripts/build/install-apt-vital.sh && \
|
||||
/tmp/scripts/build/install-ms-repos.sh && \
|
||||
/tmp/scripts/build/configure-image-data-file.sh && \
|
||||
/tmp/scripts/build/configure-environment.sh && \
|
||||
/tmp/scripts/build/install-actions-cache.sh && \
|
||||
/tmp/scripts/build/install-apt-common.sh && \
|
||||
/tmp/scripts/build/install-azcopy.sh && \
|
||||
/tmp/scripts/build/install-azure-cli.sh && \
|
||||
/tmp/scripts/build/install-azure-devops-cli.sh && \
|
||||
/tmp/scripts/build/install-bicep.sh && \
|
||||
/tmp/scripts/build/install-aws-tools.sh && \
|
||||
/tmp/scripts/build/install-git.sh && \
|
||||
/tmp/scripts/build/install-git-lfs.sh && \
|
||||
/tmp/scripts/build/install-github-cli.sh && \
|
||||
/tmp/scripts/build/install-google-cloud-cli.sh && \
|
||||
/tmp/scripts/build/install-nvm.sh && \
|
||||
/tmp/scripts/build/install-nodejs.sh && \
|
||||
/tmp/scripts/build/install-powershell.sh && \
|
||||
/tmp/scripts/build/configure-dpkg.sh && \
|
||||
/tmp/scripts/build/install-yq.sh && \
|
||||
/tmp/scripts/build/install-python.sh && \
|
||||
/tmp/scripts/build/install-zstd.sh && \
|
||||
/tmp/scripts/build/install-pipx-packages.sh && \
|
||||
/tmp/scripts/build/configure-system.sh && \
|
||||
/tmp/scripts/helpers/cleanup.sh
|
||||
|
||||
ENTRYPOINT ["/opt/entrypoint.sh"]
|
||||
|
||||
CMD [ "bash" ]
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# This script builds and runs various tests on the ubuntu-slim Docker image
|
||||
# to ensure it contains the expected software and configurations.
|
||||
# The build and test workflows for docker images expect this script to be present.
|
||||
#
|
||||
# Usage: test.sh [IMAGE_NAME]
|
||||
# If IMAGE_NAME is not provided, defaults to ubuntu-slim:test
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $0 [IMAGE_NAME]"
|
||||
echo ""
|
||||
echo "Generate a software report for a Docker image."
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " IMAGE_NAME Docker image name to generate report for (default: ubuntu-slim:test)"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 # Generate report for ubuntu-slim:test (builds image first)"
|
||||
echo " $0 my-registry/ubuntu:latest # Generate report for existing image"
|
||||
echo " $0 ubuntu-slim:v1.2.3 # Generate report for tagged image"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
}
|
||||
|
||||
# Handle help flags
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
show_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Set the image name from parameter or use default
|
||||
IMAGE_NAME="${1:-ubuntu-slim:test}"
|
||||
|
||||
# Build the image only if using the default name (for backward compatibility)
|
||||
if [[ "$IMAGE_NAME" == "ubuntu-slim:test" ]]; then
|
||||
echo "Building image: $IMAGE_NAME"
|
||||
docker build --debug --progress plain -t "$IMAGE_NAME" .
|
||||
else
|
||||
# Check if the image exists
|
||||
if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then
|
||||
echo "Error: Image '$IMAGE_NAME' does not exist. Please build it first or provide a valid image name."
|
||||
echo "Run '$0 --help' for usage information."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Generating software report for image: $IMAGE_NAME"
|
||||
|
||||
# Get the script directory
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BASE_DIR="$(cd ../../helpers/software-report-base && pwd)"
|
||||
|
||||
echo $BASE_DIR
|
||||
|
||||
# Create a temporary directory for output
|
||||
OUTPUT_DIR=$(mktemp -d)
|
||||
echo "Using temporary directory: $OUTPUT_DIR"
|
||||
|
||||
# Run the container and execute the PowerShell script inside it
|
||||
echo "Running Generate-SoftwareReport.ps1 inside the container..."
|
||||
docker run --rm \
|
||||
-v "$OUTPUT_DIR:/output" \
|
||||
-v "$SCRIPT_DIR/scripts/docs-gen:/scripts/docs-gen:ro" \
|
||||
-v "$BASE_DIR:/scripts/software-report-base:ro" \
|
||||
"$IMAGE_NAME" \
|
||||
pwsh /scripts/docs-gen/Generate-SoftwareReport.ps1 -OutputDirectory /output
|
||||
|
||||
if [ -f "$OUTPUT_DIR/software-report.md" ]; then
|
||||
cp "$OUTPUT_DIR/software-report.md" ubuntu-slim-Readme.md
|
||||
echo "✓ Copied software-report.md to current directory"
|
||||
else
|
||||
echo "✗ Error: software-report.md was not generated"
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clean up temporary directory
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
echo "✓ Software report generation complete"
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-apt-sources.sh
|
||||
## Desc: Configure apt sources with failover from Azure to Ubuntu archives.
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
touch /etc/apt/apt-mirrors.txt
|
||||
|
||||
printf "http://azure.archive.ubuntu.com/ubuntu/\tpriority:1\n" | tee -a /etc/apt/apt-mirrors.txt
|
||||
printf "https://archive.ubuntu.com/ubuntu/\tpriority:2\n" | tee -a /etc/apt/apt-mirrors.txt
|
||||
printf "https://security.ubuntu.com/ubuntu/\tpriority:3\n" | tee -a /etc/apt/apt-mirrors.txt
|
||||
|
||||
if is_ubuntu24; then
|
||||
sed -i 's|http://azure\.archive\.ubuntu\.com/ubuntu/|mirror+file:/etc/apt/apt-mirrors.txt|' /etc/apt/sources.list.d/ubuntu.sources
|
||||
else
|
||||
sed -i 's|http://azure\.archive\.ubuntu\.com/ubuntu/|mirror+file:/etc/apt/apt-mirrors.txt|' /etc/apt/sources.list
|
||||
fi
|
||||
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-apt.sh
|
||||
## Desc: Configure apt, install jq and apt-fast packages.
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
# Stop and disable apt-daily upgrade services;
|
||||
# systemctl stop apt-daily.timer
|
||||
# systemctl disable apt-daily.timer
|
||||
# systemctl disable apt-daily.service
|
||||
# systemctl stop apt-daily-upgrade.timer
|
||||
# systemctl disable apt-daily-upgrade.timer
|
||||
# systemctl disable apt-daily-upgrade.service
|
||||
|
||||
# Enable retry logic for apt up to 10 times
|
||||
echo "APT::Acquire::Retries \"10\";" > /etc/apt/apt.conf.d/80-retries
|
||||
|
||||
# Configure apt to always assume Y
|
||||
echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes
|
||||
|
||||
# APT understands a field called Phased-Update-Percentage which can be used to control the rollout of a new version. It is an integer between 0 and 100.
|
||||
# In case you have multiple systems that you want to receive the same set of updates,
|
||||
# you can set APT::Machine-ID to a UUID such that they all phase the same,
|
||||
# or set APT::Get::Never-Include-Phased-Updates or APT::Get::Always-Include-Phased-Updates to true such that APT will never/always consider phased updates.
|
||||
# apt-cache policy pkgname
|
||||
echo 'APT::Get::Always-Include-Phased-Updates "true";' > /etc/apt/apt.conf.d/99-phased-updates
|
||||
|
||||
# Fix bad proxy and http headers settings
|
||||
cat <<EOF >> /etc/apt/apt.conf.d/99bad_proxy
|
||||
Acquire::http::Pipeline-Depth 0;
|
||||
Acquire::http::No-Cache true;
|
||||
Acquire::https::Pipeline-Depth 0;
|
||||
Acquire::https::No-Cache true;
|
||||
Acquire::BrokenProxy true;
|
||||
EOF
|
||||
|
||||
# Uninstall unattended-upgrades
|
||||
apt-get purge unattended-upgrades
|
||||
|
||||
echo 'APT sources'
|
||||
if ! is_ubuntu24; then
|
||||
cat /etc/apt/sources.list
|
||||
else
|
||||
cat /etc/apt/sources.list.d/ubuntu.sources
|
||||
fi
|
||||
|
||||
apt-get update
|
||||
# Install jq
|
||||
apt-get install jq
|
||||
|
||||
echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-dpkg.sh
|
||||
## Desc: Configure dpkg
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
# This is the anti-frontend. It never interacts with you at all,
|
||||
# and makes the default answers be used for all questions. It
|
||||
# might mail error messages to root, but that's it; otherwise it
|
||||
# is completely silent and unobtrusive, a perfect frontend for
|
||||
# automatic installs. If you are using this front-end, and require
|
||||
# non-default answers to questions, you will need to pre-seed the
|
||||
# debconf database
|
||||
set_etc_environment_variable "DEBIAN_FRONTEND" "noninteractive"
|
||||
|
||||
# dpkg can be instructed not to ask for confirmation
|
||||
# when replacing a configuration file (with the --force-confdef --force-confold options)
|
||||
cat <<EOF >> /etc/apt/apt.conf.d/10dpkg-options
|
||||
Dpkg::Options {
|
||||
"--force-confdef";
|
||||
"--force-confold";
|
||||
}
|
||||
EOF
|
||||
|
||||
# hide information about packages that are no longer required
|
||||
cat <<EOF >> /etc/apt/apt.conf.d/10apt-autoremove
|
||||
APT::Get::AutomaticRemove "0";
|
||||
APT::Get::HideAutoRemove "1";
|
||||
EOF
|
||||
|
||||
# Install libicu70 package for Ubuntu 24
|
||||
if is_ubuntu24 ; then
|
||||
wget https://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu70_70.1-2_amd64.deb
|
||||
|
||||
EXPECTED_LIBICU_SHA512="a6315482d93606e375c272718d2458870b95e4ed4b672ea8640cf7bc2d2c2f41aea13b798b1e417e1ffc472a90c6aad150d3d293aa9bddec48e39106e4042807"
|
||||
ACTUAL_LIBICU_SHA512="$(sha512sum "./libicu70_70.1-2_amd64.deb" | awk '{print $1}')"
|
||||
[ "$EXPECTED_LIBICU_SHA512" = "$ACTUAL_LIBICU_SHA512" ] || { echo "libicu checksum mismatch in configure-dpkg.sh"; exit 1;}
|
||||
sudo apt-get install -y ./libicu70_70.1-2_amd64.deb
|
||||
fi
|
||||
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-environment.sh
|
||||
## Desc: Configure system and environment
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
whoami
|
||||
|
||||
# Set ImageVersion and ImageOS env variables
|
||||
set_etc_environment_variable "ImageVersion" "${IMAGE_VERSION}"
|
||||
set_etc_environment_variable "ImageOS" "${IMAGE_OS}"
|
||||
|
||||
# Set the ACCEPT_EULA variable to Y value to confirm your acceptance of the End-User Licensing Agreement
|
||||
set_etc_environment_variable "ACCEPT_EULA" "Y"
|
||||
|
||||
# This directory is supposed to be created in $HOME and owned by user(https://github.com/actions/runner-images/issues/491)
|
||||
mkdir -p /etc/skel/.config/configstore
|
||||
set_etc_environment_variable "XDG_CONFIG_HOME" '$HOME/.config'
|
||||
|
||||
# Prepare directory and env variable for toolcache
|
||||
echo "Setting up AGENT_TOOLSDIRECTORY and RUNNER_TOOL_CACHE variable to /opt/hostedtoolcache"
|
||||
AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache
|
||||
mkdir $AGENT_TOOLSDIRECTORY
|
||||
set_etc_environment_variable "AGENT_TOOLSDIRECTORY" "${AGENT_TOOLSDIRECTORY}"
|
||||
set_etc_environment_variable "RUNNER_TOOL_CACHE" "${AGENT_TOOLSDIRECTORY}"
|
||||
chmod -R 777 $AGENT_TOOLSDIRECTORY
|
||||
|
||||
# https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html
|
||||
# https://www.suse.com/support/kb/doc/?id=000016692
|
||||
echo 'vm.max_map_count=262144' | tee -a /etc/sysctl.conf
|
||||
|
||||
# https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files
|
||||
echo 'fs.inotify.max_user_watches=655360' | tee -a /etc/sysctl.conf
|
||||
echo 'fs.inotify.max_user_instances=1280' | tee -a /etc/sysctl.conf
|
||||
|
||||
# https://github.com/actions/runner-images/issues/9491
|
||||
echo 'vm.mmap_rnd_bits=28' | tee -a /etc/sysctl.conf
|
||||
|
||||
# https://github.com/actions/runner-images/pull/7860
|
||||
netfilter_rule='/etc/udev/rules.d/50-netfilter.rules'
|
||||
rules_directory="$(dirname "${netfilter_rule}")"
|
||||
mkdir -p $rules_directory
|
||||
touch $netfilter_rule
|
||||
echo 'ACTION=="add", SUBSYSTEM=="module", KERNEL=="nf_conntrack", RUN+="/usr/sbin/sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1"' | tee -a $netfilter_rule
|
||||
|
||||
# Remove fwupd if installed. We're running on VMs in Azure and the fwupd package is not needed.
|
||||
# Leaving it enable means periodic refreshes show in network traffic and firewall logs
|
||||
# Check if fwupd-refresh.timer exists in systemd
|
||||
if systemctl list-unit-files fwupd-refresh.timer &>/dev/null; then
|
||||
echo "Masking fwupd-refresh.timer..."
|
||||
systemctl mask fwupd-refresh.timer
|
||||
fi
|
||||
|
||||
# This is a legacy check, leaving for earlier versions of Ubuntu
|
||||
# If fwupd config still exists, disable the motd updates
|
||||
if [[ -f "/etc/fwupd/daemon.conf" ]]; then
|
||||
sed -i 's/UpdateMotd=true/UpdateMotd=false/g' /etc/fwupd/daemon.conf
|
||||
fi
|
||||
|
||||
# Disable to load providers
|
||||
# https://github.com/microsoft/azure-pipelines-agent/issues/3834
|
||||
if is_ubuntu22; then
|
||||
sed -i 's/openssl_conf = openssl_init/#openssl_conf = openssl_init/g' /etc/ssl/openssl.cnf
|
||||
fi
|
||||
|
||||
# # Disable man-db auto update
|
||||
# echo "set man-db/auto-update false" | debconf-communicate
|
||||
# dpkg-reconfigure man-db
|
||||
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
function create_imagedata_json() {
|
||||
|
||||
arch=$(uname -m)
|
||||
if [[ $arch == "x86_64" ]]; then
|
||||
arch="x64"
|
||||
elif [[ $arch == "aarch64" ]]; then
|
||||
arch="arm64"
|
||||
else
|
||||
echo "Unsupported architecture: $arch"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "$IMAGEDATA_INCLUDED_SOFTWARE" ]]; then
|
||||
included_software="- Included Software: ${IMAGEDATA_INCLUDED_SOFTWARE}"
|
||||
fi
|
||||
|
||||
imagedata_file="/imagegeneration/imagedata.json"
|
||||
|
||||
cat <<EOF > $imagedata_file
|
||||
[
|
||||
{
|
||||
"group": "VM Image",
|
||||
"detail": "- OS: Linux (${arch})\n- Source: Docker\n- Name: ${IMAGEDATA_NAME}\n- Version: ${IMAGE_VERSION}\n${included_software}"
|
||||
}
|
||||
]
|
||||
EOF
|
||||
|
||||
}
|
||||
|
||||
mkdir -p /imagegeneration
|
||||
|
||||
# Generate the imagedata JSON file displayed on workflow initialization
|
||||
if [[ -n "$IMAGEDATA_NAME" ]]; then
|
||||
echo "Generating imagedata JSON file"
|
||||
create_imagedata_json
|
||||
else
|
||||
echo "IMAGEDATA_NAME is null or empty. Skipping imagedata JSON generation."
|
||||
fi
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-system.sh
|
||||
## Desc: Post deployment system configuration actions
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
echo "chmod -R 777 /opt"
|
||||
chmod -R 777 /opt
|
||||
echo "chmod -R 777 /usr/share"
|
||||
chmod -R 777 /usr/share
|
||||
|
||||
# Remove quotes around PATH
|
||||
ENVPATH=$(grep 'PATH=' /etc/environment | head -n 1 | sed -z 's/^PATH=*//')
|
||||
ENVPATH=${ENVPATH#"\""}
|
||||
ENVPATH=${ENVPATH%"\""}
|
||||
replace_etc_environment_variable "PATH" "${ENVPATH}"
|
||||
echo "Updated /etc/environment: $(cat /etc/environment)"
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-actions-cache.sh
|
||||
## Desc: Download latest release from https://github.com/actions/action-versions
|
||||
## Maintainer: #actions-runtime and @TingluoHuang
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
# Prepare directory and env variable for ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE
|
||||
ACTION_ARCHIVE_CACHE_DIR=/opt/actionarchivecache
|
||||
mkdir -p $ACTION_ARCHIVE_CACHE_DIR
|
||||
chmod -R 777 $ACTION_ARCHIVE_CACHE_DIR
|
||||
echo "Setting up ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE variable to ${ACTION_ARCHIVE_CACHE_DIR}"
|
||||
set_etc_environment_variable "ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE" "${ACTION_ARCHIVE_CACHE_DIR}"
|
||||
|
||||
# Download latest release from github.com/actions/action-versions and untar to /opt/actionarchivecache
|
||||
download_url=$(resolve_github_release_asset_url "actions/action-versions" "endswith(\"action-versions.tar.gz\")" "latest")
|
||||
archive_path=$(download_with_retry "$download_url")
|
||||
tar -xzf "$archive_path" -C $ACTION_ARCHIVE_CACHE_DIR
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-apt-common.sh
|
||||
## Desc: Install basic command line utilities and dev packages
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
common_packages=$(get_toolset_value .apt.common_packages[])
|
||||
cmd_packages=$(get_toolset_value .apt.cmd_packages[])
|
||||
|
||||
apt-get install --no-install-recommends $common_packages $cmd_packages
|
||||
|
||||
# for package in $common_packages $cmd_packages; do
|
||||
# echo "Install $package"
|
||||
# apt-get install --no-install-recommends $package
|
||||
# done
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-apt-vital.sh
|
||||
## Desc: Install vital command line utilities
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
vital_packages=$(get_toolset_value .apt.vital_packages[])
|
||||
apt-get install --no-install-recommends $vital_packages
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-aws-tools.sh
|
||||
## Desc: Install the AWS CLI, Session Manager plugin for the AWS CLI, and AWS SAM CLI
|
||||
## Supply chain security: AWS SAM CLI - checksum validation
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
awscliv2_archive_path=$(download_with_retry "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip")
|
||||
unzip -qq "$awscliv2_archive_path" -d /tmp/installers/
|
||||
/tmp/installers/aws/install -i /usr/local/aws-cli -b /usr/local/bin
|
||||
|
||||
smplugin_deb_path=$(download_with_retry "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb")
|
||||
apt-get install "$smplugin_deb_path"
|
||||
|
||||
# Download the latest aws sam cli release
|
||||
aws_sam_cli_archive_name="aws-sam-cli-linux-x86_64.zip"
|
||||
sam_cli_download_url=$(resolve_github_release_asset_url "aws/aws-sam-cli" "endswith(\"$aws_sam_cli_archive_name\")" "latest")
|
||||
aws_sam_cli_archive_path=$(download_with_retry "$sam_cli_download_url")
|
||||
|
||||
# Supply chain security - AWS SAM CLI
|
||||
aws_sam_cli_hash=$(get_checksum_from_github_release "aws/aws-sam-cli" "${aws_sam_cli_archive_name}.. " "latest" "SHA256")
|
||||
use_checksum_comparison "$aws_sam_cli_archive_path" "$aws_sam_cli_hash"
|
||||
|
||||
# Install the latest aws sam cli release
|
||||
mkdir -p /tmp/installers/aws-sam-cli
|
||||
unzip "$aws_sam_cli_archive_path" -d /tmp/installers/aws-sam-cli
|
||||
/tmp/installers/aws-sam-cli/install -i /usr/local/aws-sam-cli -b /usr/local/bin
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-azcopy.sh
|
||||
## Desc: Install AzCopy
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Install AzCopy10
|
||||
archive_path=$(download_with_retry "https://aka.ms/downloadazcopy-v10-linux")
|
||||
tar xzf "$archive_path" --strip-components=1 -C /tmp
|
||||
install /tmp/azcopy /usr/local/bin/azcopy
|
||||
|
||||
# Create azcopy 10 alias for backward compatibility
|
||||
ln -sf /usr/local/bin/azcopy /usr/local/bin/azcopy10
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-azure-cli.sh
|
||||
## Desc: Install Azure CLI (az)
|
||||
################################################################################
|
||||
|
||||
# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
|
||||
curl -fsSL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
||||
|
||||
echo "azure-cli https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=apt" >> $HELPER_SCRIPTS/apt-sources.txt
|
||||
|
||||
rm -f /etc/apt/sources.list.d/azure-cli.list
|
||||
rm -f /etc/apt/sources.list.d/azure-cli.list.save
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-azure-devops-cli.sh
|
||||
## Desc: Install Azure DevOps CLI (az devops)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
# AZURE_EXTENSION_DIR shell variable defines where modules are installed
|
||||
# https://docs.microsoft.com/en-us/cli/azure/azure-cli-extensions-overview
|
||||
export AZURE_EXTENSION_DIR=/opt/az/azcliextensions
|
||||
set_etc_environment_variable "AZURE_EXTENSION_DIR" "${AZURE_EXTENSION_DIR}"
|
||||
|
||||
# install azure devops Cli extension
|
||||
az extension add -n azure-devops
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-bicep.sh
|
||||
## Desc: Install bicep cli
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Install Bicep CLI
|
||||
download_url=$(resolve_github_release_asset_url "Azure/bicep" "endswith(\"bicep-linux-x64\")" "latest")
|
||||
bicep_binary_path=$(download_with_retry "${download_url}")
|
||||
|
||||
# Mark it as executable
|
||||
install "$bicep_binary_path" /usr/local/bin/bicep
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-git-lfs.sh
|
||||
## Desc: Install Git-lfs
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
GIT_LFS_REPO="https://packagecloud.io/install/repositories/github/git-lfs"
|
||||
|
||||
# Install git-lfs
|
||||
curl -fsSL $GIT_LFS_REPO/script.deb.sh | bash
|
||||
apt-get install git-lfs
|
||||
|
||||
# Remove source repo's
|
||||
rm /etc/apt/sources.list.d/github_git-lfs.list
|
||||
|
||||
# Document apt source repo's
|
||||
echo "git-lfs $GIT_LFS_REPO" >> $HELPER_SCRIPTS/apt-sources.txt
|
||||
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-git.sh
|
||||
## Desc: Install Git and Git-FTP
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
GIT_REPO="ppa:git-core/ppa"
|
||||
|
||||
## Install git
|
||||
add-apt-repository $GIT_REPO -y
|
||||
apt-get update
|
||||
apt-get install git
|
||||
|
||||
# Git version 2.35.2 introduces security fix that breaks action\checkout https://github.com/actions/checkout/issues/760
|
||||
cat <<EOF >> /etc/gitconfig
|
||||
[safe]
|
||||
directory = *
|
||||
EOF
|
||||
|
||||
# Install git-ftp
|
||||
apt-get install git-ftp
|
||||
|
||||
# Remove source repo's
|
||||
add-apt-repository --remove $GIT_REPO
|
||||
|
||||
# Document apt source repo's
|
||||
echo "git-core $GIT_REPO" >> $HELPER_SCRIPTS/apt-sources.txt
|
||||
|
||||
# Add well-known SSH host keys to known_hosts
|
||||
ssh-keyscan -t rsa,ecdsa,ed25519 github.com >> /etc/ssh/ssh_known_hosts
|
||||
ssh-keyscan -t rsa ssh.dev.azure.com >> /etc/ssh/ssh_known_hosts
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-github-cli.sh
|
||||
## Desc: Install GitHub CLI
|
||||
## Must be run as non-root user after homebrew
|
||||
## Supply chain security: GitHub CLI - checksum validation
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Download GitHub CLI
|
||||
gh_cli_url=$(resolve_github_release_asset_url "cli/cli" "contains(\"linux\") and contains(\"amd64\") and endswith(\".deb\")" "latest")
|
||||
gh_cli_deb_path=$(download_with_retry "$gh_cli_url")
|
||||
|
||||
# Supply chain security - GitHub CLI
|
||||
hash_url=$(resolve_github_release_asset_url "cli/cli" "endswith(\"checksums.txt\")" "latest")
|
||||
external_hash=$(get_checksum_from_url "$hash_url" "linux_amd64.deb" "SHA256")
|
||||
use_checksum_comparison "$gh_cli_deb_path" "$external_hash"
|
||||
|
||||
# Install GitHub CLI
|
||||
apt-get install "$gh_cli_deb_path"
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-google-cloud-cli.sh
|
||||
## Desc: Install the Google Cloud CLI
|
||||
################################################################################
|
||||
|
||||
REPO_URL="https://packages.cloud.google.com/apt"
|
||||
|
||||
# Install the Google Cloud CLI
|
||||
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] $REPO_URL cloud-sdk main" > /etc/apt/sources.list.d/google-cloud-sdk.list
|
||||
wget -qO- https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor > /usr/share/keyrings/cloud.google.gpg
|
||||
apt-get update
|
||||
apt-get install google-cloud-cli
|
||||
|
||||
# remove apt
|
||||
rm /etc/apt/sources.list.d/google-cloud-sdk.list
|
||||
rm /usr/share/keyrings/cloud.google.gpg
|
||||
|
||||
# add repo to the apt-sources.txt
|
||||
echo "google-cloud-sdk $REPO_URL" >> $HELPER_SCRIPTS/apt-sources.txt
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-ms-repos.sh
|
||||
## Desc: Install official Microsoft package repos for the distribution
|
||||
################################################################################
|
||||
|
||||
os_label=$(lsb_release -rs)
|
||||
|
||||
# Install Microsoft repository
|
||||
wget https://packages.microsoft.com/config/ubuntu/$os_label/packages-microsoft-prod.deb
|
||||
dpkg -i packages-microsoft-prod.deb
|
||||
|
||||
# update
|
||||
apt-get install apt-transport-https ca-certificates curl software-properties-common
|
||||
apt-get update
|
||||
apt-get dist-upgrade
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-nodejs.sh
|
||||
## Desc: Install Node.js LTS and related tooling (Gulp, Grunt)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Install default Node.js
|
||||
default_version=$(get_toolset_value '.node.default')
|
||||
|
||||
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n -o ~/n
|
||||
sudo bash ~/n $default_version
|
||||
|
||||
# Install node modules
|
||||
node_modules=$(get_toolset_value '.node_modules[].name')
|
||||
if [ -n "$node_modules" ]; then
|
||||
npm install -g $node_modules
|
||||
else
|
||||
echo "No node modules to install"
|
||||
fi
|
||||
|
||||
# fix global modules installation as regular user
|
||||
# related issue https://github.com/actions/runner-images/issues/3727
|
||||
sudo chmod -R 777 /usr/local/lib/node_modules
|
||||
sudo chmod -R 777 /usr/local/bin
|
||||
|
||||
rm -rf ~/n
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-nvm.sh
|
||||
## Desc: Install Nvm
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
export NVM_DIR="/etc/skel/.nvm"
|
||||
mkdir ${NVM_DIR}
|
||||
nvm_version=$(curl -fsSL https://api.github.com/repos/nvm-sh/nvm/releases/latest | jq -r '.tag_name')
|
||||
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/$nvm_version/install.sh | bash
|
||||
set_etc_environment_variable "NVM_DIR" '$HOME/.nvm'
|
||||
|
||||
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' | tee -a /etc/skel/.bash_profile
|
||||
[ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh"
|
||||
|
||||
echo "source ${NVM_DIR}/nvm.sh" | tee -a /etc/skel/.bashrc
|
||||
|
||||
# set system node.js as default one
|
||||
nvm alias default system
|
||||
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-pipx-packages.sh
|
||||
## Desc: Install tools via pipx
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
export PATH="$PATH:/opt/pipx_bin"
|
||||
|
||||
pipx_packages=$(get_toolset_value ".pipx[] .package")
|
||||
|
||||
if [ -z "$pipx_packages" ]; then
|
||||
echo "No pipx packages defined in toolset. Skipping pipx installation."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for package in $pipx_packages; do
|
||||
echo "Install $package into default python"
|
||||
pipx install $package
|
||||
|
||||
# https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
|
||||
# Install ansible into an existing ansible-core Virtual Environment
|
||||
if [[ $package == "ansible-core" ]]; then
|
||||
pipx inject $package ansible
|
||||
fi
|
||||
done
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-powershell.sh
|
||||
## Desc: Install PowerShell Core
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
pwsh_version=$(get_toolset_value .pwsh.version)
|
||||
|
||||
# Install Powershell
|
||||
|
||||
apt-get install powershell=$pwsh_version*
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-python.sh
|
||||
## Desc: Install Python 3
|
||||
################################################################################
|
||||
|
||||
set -e
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
# Install Python, Python 3, pip, pip3
|
||||
apt-get install -y --no-install-recommends python3 python3-dev python3-pip python3-venv
|
||||
|
||||
if is_ubuntu24; then
|
||||
# Create temporary workaround to allow user to continue using pip
|
||||
sudo cat <<EOF > /etc/pip.conf
|
||||
[global]
|
||||
break-system-packages = true
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Install pipx
|
||||
# Set pipx custom directory
|
||||
export PIPX_BIN_DIR=/opt/pipx_bin
|
||||
export PIPX_HOME=/opt/pipx
|
||||
|
||||
python3 -m pip install pipx
|
||||
python3 -m pipx ensurepath
|
||||
|
||||
# Update /etc/environment
|
||||
set_etc_environment_variable "PIPX_BIN_DIR" $PIPX_BIN_DIR
|
||||
set_etc_environment_variable "PIPX_HOME" $PIPX_HOME
|
||||
prepend_etc_environment_path $PIPX_BIN_DIR
|
||||
|
||||
# Adding this dir to PATH will make installed pip commands are immediately available.
|
||||
prepend_etc_environment_path '$HOME/.local/bin'
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-yq.sh
|
||||
## Desc: Install yq - a command-line YAML, JSON and XML processor
|
||||
## Supply chain security: yq - checksum validation
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Download yq
|
||||
yq_url=$(resolve_github_release_asset_url "mikefarah/yq" "endswith(\"yq_linux_amd64\")" "latest")
|
||||
binary_path=$(download_with_retry "${yq_url}")
|
||||
|
||||
# Supply chain security - yq
|
||||
hash_url=$(resolve_github_release_asset_url "mikefarah/yq" "endswith(\"checksums\")" "latest")
|
||||
external_hash=$(get_checksum_from_url "${hash_url}" "yq_linux_amd64 " "SHA256" "true" " " "19")
|
||||
use_checksum_comparison "$binary_path" "$external_hash"
|
||||
|
||||
# Install yq
|
||||
install "$binary_path" /usr/bin/yq
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-zstd.sh
|
||||
## Desc: Install zstd
|
||||
## Supply chain security: zstd - checksum validation
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Download zstd
|
||||
release_tag=$(curl -fsSL https://api.github.com/repos/facebook/zstd/releases/latest | jq -r '.tag_name')
|
||||
release_name="zstd-${release_tag//v}"
|
||||
download_url="https://github.com/facebook/zstd/releases/download/${release_tag}/${release_name}.tar.gz"
|
||||
archive_path=$(download_with_retry "${download_url}")
|
||||
|
||||
# Supply chain security - zstd
|
||||
external_hash=$(get_checksum_from_url "${download_url}.sha256" "${release_name}.tar.gz" "SHA256")
|
||||
use_checksum_comparison "$archive_path" "$external_hash"
|
||||
|
||||
# Install zstd
|
||||
apt-get install liblz4-dev
|
||||
tar xzf "$archive_path" -C /tmp
|
||||
|
||||
make -C "/tmp/${release_name}/contrib/pzstd" -j $(nproc) all
|
||||
make -C "/tmp/${release_name}" -j $(nproc) zstd-release
|
||||
|
||||
for copyprocess in zstd zstdless zstdgrep; do
|
||||
cp "/tmp/${release_name}/programs/${copyprocess}" /usr/local/bin/
|
||||
done
|
||||
|
||||
cp "/tmp/${release_name}/contrib/pzstd/pzstd" /usr/local/bin/
|
||||
|
||||
for symlink in zstdcat zstdmt unzstd; do
|
||||
ln -sf /usr/local/bin/zstd /usr/local/bin/${symlink}
|
||||
done
|
||||
@@ -0,0 +1,152 @@
|
||||
function Get-CommandResult {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Runs a command in bash and returns the output and exit code.
|
||||
|
||||
.DESCRIPTION
|
||||
Function runs a provided command in bash and returns the output and exit code as hashtable.
|
||||
|
||||
.PARAMETER Command
|
||||
The command to run.
|
||||
|
||||
.PARAMETER ExpectedExitCode
|
||||
The expected exit code. If the actual exit code does not match, an exception is thrown.
|
||||
|
||||
.PARAMETER Multiline
|
||||
If true, the output is returned as an array of strings. Otherwise, the output is returned as a single string.
|
||||
|
||||
.PARAMETER ValidateExitCode
|
||||
If true, the actual exit code is compared to the expected exit code.
|
||||
|
||||
.EXAMPLE
|
||||
$result = Get-CommandResult "ls -la"
|
||||
|
||||
This command runs "ls -la" in bash and returns the output and exit code as hashtable.
|
||||
|
||||
#>
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string] $Command,
|
||||
[int[]] $ExpectedExitCode = 0,
|
||||
[switch] $Multiline,
|
||||
[bool] $ValidateExitCode = $true
|
||||
)
|
||||
|
||||
# Bash trick to suppress and show error output because some commands write to stderr (for example, "python --version")
|
||||
$stdout = & bash -c "$Command 2>&1"
|
||||
$exitCode = $LASTEXITCODE
|
||||
|
||||
if ($ValidateExitCode) {
|
||||
if ($ExpectedExitCode -notcontains $exitCode) {
|
||||
try {
|
||||
throw "StdOut: '$stdout' ExitCode: '$exitCode'"
|
||||
} catch {
|
||||
Write-Host $_.Exception.Message
|
||||
Write-Host $_.ScriptStackTrace
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return @{
|
||||
Output = If ($Multiline -eq $true) { $stdout } else { [string] $stdout }
|
||||
ExitCode = $exitCode
|
||||
}
|
||||
}
|
||||
|
||||
function Test-IsUbuntu22 {
|
||||
return (lsb_release -rs) -eq "22.04"
|
||||
}
|
||||
|
||||
function Test-IsUbuntu24 {
|
||||
return (lsb_release -rs) -eq "24.04"
|
||||
}
|
||||
|
||||
function Get-ToolsetContent {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Retrieves the content of the toolset.json file.
|
||||
|
||||
.DESCRIPTION
|
||||
This function reads the toolset.json in path provided by INSTALLER_SCRIPT_FOLDER
|
||||
environment variable and returns the content as a PowerShell object.
|
||||
#>
|
||||
|
||||
$toolsetPath = Join-Path $env:INSTALLER_SCRIPT_FOLDER "toolset.json"
|
||||
$toolsetJson = Get-Content -Path $toolsetPath -Raw
|
||||
ConvertFrom-Json -InputObject $toolsetJson
|
||||
}
|
||||
|
||||
function Invoke-DownloadWithRetry {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Downloads a file from a given URL with retry functionality.
|
||||
|
||||
.DESCRIPTION
|
||||
The Invoke-DownloadWithRetry function downloads a file from the specified URL
|
||||
to the specified path. It includes retry functionality in case the download fails.
|
||||
|
||||
.PARAMETER Url
|
||||
The URL of the file to download.
|
||||
|
||||
.PARAMETER Path
|
||||
The path where the downloaded file will be saved. If not provided, a temporary path
|
||||
will be used.
|
||||
|
||||
.EXAMPLE
|
||||
Invoke-DownloadWithRetry -Url "https://example.com/file.zip" -Path "/usr/local/bin"
|
||||
Downloads the file from the specified URL and saves it to the specified path.
|
||||
|
||||
.EXAMPLE
|
||||
Invoke-DownloadWithRetry -Url "https://example.com/file.zip"
|
||||
Downloads the file from the specified URL and saves it to a temporary path.
|
||||
|
||||
.OUTPUTS
|
||||
The path where the downloaded file is saved.
|
||||
#>
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[string] $Url,
|
||||
[Alias("Destination")]
|
||||
[string] $DestinationPath
|
||||
)
|
||||
|
||||
if (-not $DestinationPath) {
|
||||
$invalidChars = [IO.Path]::GetInvalidFileNameChars() -join ''
|
||||
$re = "[{0}]" -f [RegEx]::Escape($invalidChars)
|
||||
$fileName = [IO.Path]::GetFileName($Url) -replace $re
|
||||
|
||||
if ([String]::IsNullOrEmpty($fileName)) {
|
||||
$fileName = [System.IO.Path]::GetRandomFileName()
|
||||
}
|
||||
$DestinationPath = Join-Path -Path "/tmp" -ChildPath $fileName
|
||||
}
|
||||
|
||||
Write-Host "Downloading package from $Url to $DestinationPath..."
|
||||
|
||||
$interval = 30
|
||||
$downloadStartTime = Get-Date
|
||||
for ($retries = 20; $retries -gt 0; $retries--) {
|
||||
try {
|
||||
$attemptStartTime = Get-Date
|
||||
Invoke-WebRequest -Uri $Url -Outfile $DestinationPath
|
||||
$attemptSeconds = [math]::Round(($(Get-Date) - $attemptStartTime).TotalSeconds, 2)
|
||||
Write-Host "Package downloaded in $attemptSeconds seconds"
|
||||
break
|
||||
} catch {
|
||||
$attemptSeconds = [math]::Round(($(Get-Date) - $attemptStartTime).TotalSeconds, 2)
|
||||
Write-Warning "Package download failed in $attemptSeconds seconds"
|
||||
Write-Warning $_.Exception.Message
|
||||
}
|
||||
|
||||
if ($retries -eq 0) {
|
||||
$totalSeconds = [math]::Round(($(Get-Date) - $downloadStartTime).TotalSeconds, 2)
|
||||
throw "Package download failed after $totalSeconds seconds"
|
||||
}
|
||||
|
||||
Write-Warning "Waiting $interval seconds before retrying (retries left: $retries)..."
|
||||
Start-Sleep -Seconds $interval
|
||||
}
|
||||
|
||||
return $DestinationPath
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
using module ../software-report-base/SoftwareReport.psm1
|
||||
using module ../software-report-base/SoftwareReport.Nodes.psm1
|
||||
|
||||
param (
|
||||
[Parameter(Mandatory)]
|
||||
[string] $OutputDirectory
|
||||
)
|
||||
|
||||
$global:ErrorActionPreference = "Stop"
|
||||
$global:ErrorView = "NormalView"
|
||||
Set-StrictMode -Version Latest
|
||||
|
||||
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Common.psm1") -DisableNameChecking
|
||||
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Helpers.psm1") -DisableNameChecking
|
||||
Import-Module (Join-Path $PSScriptRoot "Common.Helpers.psm1") -DisableNameChecking
|
||||
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Tools.psm1") -DisableNameChecking
|
||||
|
||||
# Restore file owner in user profile
|
||||
sudo chown -R ${env:USER}: $env:HOME
|
||||
|
||||
# Software report
|
||||
$softwareReport = [SoftwareReport]::new("Ubuntu-Slim")
|
||||
$softwareReport.Root.AddToolVersion("OS Version:", $(Get-OSVersionFull))
|
||||
$softwareReport.Root.AddToolVersion("Kernel Version:", $(Get-KernelVersion))
|
||||
$softwareReport.Root.AddToolVersion("Image Version:", $env:IMAGE_VERSION)
|
||||
$softwareReport.Root.AddToolVersion("Systemd version:", $(Get-SystemdVersion))
|
||||
|
||||
$installedSoftware = $softwareReport.Root.AddHeader("Installed Software")
|
||||
|
||||
# Language and Runtime
|
||||
$languageAndRuntime = $installedSoftware.AddHeader("Language and Runtime")
|
||||
$languageAndRuntime.AddToolVersion("Bash", $(Get-BashVersion))
|
||||
$languageAndRuntime.AddToolVersion("Dash", $(Get-DashVersion))
|
||||
$languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion))
|
||||
$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion))
|
||||
$languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion))
|
||||
|
||||
# Package Management
|
||||
$packageManagement = $installedSoftware.AddHeader("Package Management")
|
||||
$packageManagement.AddToolVersion("Npm", $(Get-NpmVersion))
|
||||
$packageManagement.AddToolVersion("Pip", $(Get-PipVersion))
|
||||
$packageManagement.AddToolVersion("Pip3", $(Get-Pip3Version))
|
||||
$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion))
|
||||
|
||||
# Tools
|
||||
$tools = $installedSoftware.AddHeader("Tools")
|
||||
$tools.AddToolVersion("AzCopy", $(Get-AzCopyVersion))
|
||||
$tools.AddToolVersion("Bicep", $(Get-BicepVersion))
|
||||
$tools.AddToolVersion("Git", $(Get-GitVersion))
|
||||
$tools.AddToolVersion("Git LFS", $(Get-GitLFSVersion))
|
||||
$tools.AddToolVersion("Git-ftp", $(Get-GitFTPVersion))
|
||||
$tools.AddToolVersion("jq", $(Get-JqVersion))
|
||||
$tools.AddToolVersion("nvm", $(Get-NvmVersion))
|
||||
$tools.AddToolVersion("OpenSSL", $(Get-OpensslVersion))
|
||||
$tools.AddToolVersion("yq", $(Get-YqVersion))
|
||||
$tools.AddToolVersion("zstd", $(Get-ZstdVersion))
|
||||
|
||||
# CLI Tools
|
||||
$cliTools = $installedSoftware.AddHeader("CLI Tools")
|
||||
$cliTools.AddToolVersion("AWS CLI", $(Get-AWSCliVersion))
|
||||
$cliTools.AddToolVersion("AWS CLI Session Manager Plugin", $(Get-AWSCliSessionManagerPluginVersion))
|
||||
$cliTools.AddToolVersion("AWS SAM CLI", $(Get-AWSSAMVersion))
|
||||
$cliTools.AddToolVersion("Azure CLI", $(Get-AzureCliVersion))
|
||||
$cliTools.AddToolVersion("Azure CLI (azure-devops)", $(Get-AzureDevopsVersion))
|
||||
$cliTools.AddToolVersion("GitHub CLI", $(Get-GitHubCliVersion))
|
||||
$cliTools.AddToolVersion("Google Cloud CLI", $(Get-GoogleCloudCLIVersion))
|
||||
|
||||
# PowerShell Tools
|
||||
$powerShellTools = $installedSoftware.AddHeader("PowerShell Tools")
|
||||
$powerShellTools.AddToolVersion("PowerShell", $(Get-PowershellVersion))
|
||||
|
||||
$installedSoftware.AddHeader("Installed apt packages").AddTable($(Get-AptPackages))
|
||||
|
||||
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/software-report.json" -Encoding UTF8NoBOM
|
||||
$softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/software-report.md" -Encoding UTF8NoBOM
|
||||
@@ -0,0 +1,81 @@
|
||||
function Get-BashVersion {
|
||||
$version = bash -c 'echo ${BASH_VERSION}'
|
||||
return $version
|
||||
}
|
||||
|
||||
function Get-DashVersion {
|
||||
$version = dpkg-query -W -f '${Version}' dash
|
||||
return $version
|
||||
}
|
||||
|
||||
function Get-NodeVersion {
|
||||
$nodeVersion = $(node --version).Substring(1)
|
||||
return $nodeVersion
|
||||
}
|
||||
|
||||
function Get-OpensslVersion {
|
||||
$opensslVersion = $(dpkg-query -W -f '${Version}' openssl)
|
||||
return $opensslVersion
|
||||
}
|
||||
|
||||
function Get-PerlVersion {
|
||||
$version = $(perl -e 'print substr($^V,1)')
|
||||
return $version
|
||||
}
|
||||
|
||||
function Get-PythonVersion {
|
||||
$result = Get-CommandResult "python --version"
|
||||
$version = $result.Output | Get-StringPart -Part 1
|
||||
return $version
|
||||
}
|
||||
|
||||
function Get-PowershellVersion {
|
||||
$pwshVersion = $(pwsh --version) | Get-StringPart -Part 1
|
||||
return $pwshVersion
|
||||
}
|
||||
|
||||
function Get-NpmVersion {
|
||||
$npmVersion = npm --version
|
||||
return $npmVersion
|
||||
}
|
||||
|
||||
function Get-PipVersion {
|
||||
$pipVersion = pip --version | Get-StringPart -Part 1
|
||||
return $pipVersion
|
||||
}
|
||||
|
||||
function Get-Pip3Version {
|
||||
$pip3Version = pip3 --version | Get-StringPart -Part 1
|
||||
return $pip3Version
|
||||
}
|
||||
|
||||
function Get-AptPackages {
|
||||
$apt = (Get-ToolsetContent).Apt
|
||||
$output = @()
|
||||
ForEach ($pkg in ($apt.vital_packages + $apt.common_packages + $apt.cmd_packages)) {
|
||||
$version = $(dpkg-query -W -f '${Version}' $pkg)
|
||||
if ($null -eq $version) {
|
||||
$version = $(dpkg-query -W -f '${Version}' "$pkg*")
|
||||
}
|
||||
|
||||
$version = $version -replace '~','\~'
|
||||
|
||||
$output += [PSCustomObject] @{
|
||||
Name = $pkg
|
||||
Version = $version
|
||||
}
|
||||
}
|
||||
return ($output | Sort-Object Name)
|
||||
}
|
||||
|
||||
function Get-PipxVersion {
|
||||
$result = (Get-CommandResult "pipx --version").Output
|
||||
$result -match "(?<version>\d+\.\d+\.\d+\.?\d*)" | Out-Null
|
||||
return $Matches.Version
|
||||
}
|
||||
|
||||
function Get-SystemdVersion {
|
||||
$matchCollection = [regex]::Matches((systemctl --version | head -n 1), "\((.*?)\)")
|
||||
$result = foreach ($match in $matchCollection) {$match.Groups[1].Value}
|
||||
return $result
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
function Get-StringPart {
|
||||
param (
|
||||
[Parameter(ValueFromPipeline)]
|
||||
[string] $ToolOutput,
|
||||
[string] $Delimiter = " ",
|
||||
[int[]] $Part
|
||||
)
|
||||
|
||||
$parts = $ToolOutput.Split($Delimiter, [System.StringSplitOptions]::RemoveEmptyEntries)
|
||||
$selectedParts = $parts[$Part]
|
||||
return [string]::Join($Delimiter, $selectedParts)
|
||||
}
|
||||
|
||||
function Get-PathWithLink {
|
||||
param (
|
||||
[string] $InputPath
|
||||
)
|
||||
|
||||
$link = Get-Item $InputPath | Select-Object -ExpandProperty Target
|
||||
if (-not [string]::IsNullOrEmpty($link)) {
|
||||
return "${InputPath} -> ${link}"
|
||||
}
|
||||
return "${InputPath}"
|
||||
}
|
||||
|
||||
function Get-OSVersionShort {
|
||||
$(Get-OSVersionFull) | Get-StringPart -Delimiter '.' -Part 0,1
|
||||
}
|
||||
|
||||
function Get-OSVersionFull {
|
||||
lsb_release -ds | Get-StringPart -Part 1, 2
|
||||
}
|
||||
|
||||
function Get-KernelVersion {
|
||||
$kernelVersion = uname -r
|
||||
return $kernelVersion
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
function Get-AzCopyVersion {
|
||||
$azcopyVersion = [string]$(azcopy --version) | Get-StringPart -Part 2
|
||||
return "$azcopyVersion - available by ``azcopy`` and ``azcopy10`` aliases"
|
||||
}
|
||||
|
||||
function Get-BicepVersion {
|
||||
(bicep --version | Out-String) -match "bicep cli version (?<version>\d+\.\d+\.\d+)" | Out-Null
|
||||
return $Matches.Version
|
||||
}
|
||||
|
||||
function Get-GitVersion {
|
||||
$gitVersion = git --version | Get-StringPart -Part -1
|
||||
return $gitVersion
|
||||
}
|
||||
|
||||
function Get-GitLFSVersion {
|
||||
$result = Get-CommandResult "git-lfs --version"
|
||||
$gitlfsversion = $result.Output | Get-StringPart -Part 0 | Get-StringPart -Part 1 -Delimiter "/"
|
||||
return $gitlfsversion
|
||||
}
|
||||
|
||||
function Get-GitFTPVersion {
|
||||
$gitftpVersion = git-ftp --version | Get-StringPart -Part 2
|
||||
return $gitftpVersion
|
||||
}
|
||||
|
||||
function Get-GoogleCloudCLIVersion {
|
||||
return (gcloud --version | Select-Object -First 1) | Get-StringPart -Part 3
|
||||
}
|
||||
|
||||
function Get-NvmVersion {
|
||||
$nvmVersion = bash -c "source /etc/skel/.nvm/nvm.sh && nvm --version"
|
||||
return $nvmVersion
|
||||
}
|
||||
|
||||
function Get-JqVersion {
|
||||
$jqVersion = jq --version | Get-StringPart -Part 1 -Delimiter "-"
|
||||
return $jqVersion
|
||||
}
|
||||
|
||||
function Get-AzureCliVersion {
|
||||
$azcliVersion = (az version | ConvertFrom-Json).'azure-cli'
|
||||
return $azcliVersion
|
||||
}
|
||||
|
||||
function Get-AzureDevopsVersion {
|
||||
$azdevopsVersion = (az version | ConvertFrom-Json).extensions.'azure-devops'
|
||||
return $azdevopsVersion
|
||||
}
|
||||
|
||||
function Get-AWSCliVersion {
|
||||
$result = Get-CommandResult "aws --version"
|
||||
$awsVersion = $result.Output | Get-StringPart -Part 0 | Get-StringPart -Part 1 -Delimiter "/"
|
||||
return $awsVersion
|
||||
}
|
||||
|
||||
function Get-AWSCliSessionManagerPluginVersion {
|
||||
$result = (Get-CommandResult "session-manager-plugin --version").Output
|
||||
return $result
|
||||
}
|
||||
|
||||
function Get-AWSSAMVersion {
|
||||
return $(sam --version | Get-StringPart -Part -1)
|
||||
}
|
||||
|
||||
function Get-GitHubCliVersion {
|
||||
$ghVersion = gh --version | Select-String "gh version" | Get-StringPart -Part 2
|
||||
return $ghVersion
|
||||
}
|
||||
|
||||
function Get-ZstdVersion {
|
||||
$zstdVersion = zstd --version | Get-StringPart -Part 1 -Delimiter "v" | Get-StringPart -Part 0 -Delimiter ","
|
||||
return "$zstdVersion"
|
||||
}
|
||||
|
||||
function Get-YqVersion {
|
||||
$yqVersion = $(yq -V) | Get-StringPart -Part 3
|
||||
return $yqVersion.TrimStart("v").Trim()
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
# /opt/entrypoint.sh
|
||||
|
||||
# Load environment variables from file
|
||||
set -a
|
||||
source /etc/environment
|
||||
set +a
|
||||
|
||||
# Execute the actual command
|
||||
exec "$@"
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# delete all .gz and rotated file
|
||||
find /var/log -type f -regex ".*\.gz$" -delete
|
||||
find /var/log -type f -regex ".*\.[0-9]$" -delete
|
||||
|
||||
# wipe log files
|
||||
find /var/log/ -type f -exec cp /dev/null {} \;
|
||||
|
||||
rm -rf /tmp/downloads /tmp/installers
|
||||
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
@@ -0,0 +1,89 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: etc-environment.sh
|
||||
## Desc: Helper functions for source and modify /etc/environment
|
||||
################################################################################
|
||||
|
||||
# NB: sed expression use '%' as a delimiter in order to simplify handling
|
||||
# values containing slashes (i.e. directory path)
|
||||
# The values containing '%' will break the functions
|
||||
|
||||
get_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
|
||||
# remove `variable_name=` and possible quotes from the line
|
||||
grep "^${variable_name}=" /etc/environment | sed -E "s%^${variable_name}=\"?([^\"]+)\"?.*$%\1%"
|
||||
}
|
||||
|
||||
add_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local variable_value=$2
|
||||
|
||||
echo "${variable_name}=${variable_value}" | sudo tee -a /etc/environment
|
||||
}
|
||||
|
||||
replace_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local variable_value=$2
|
||||
|
||||
# modify /etc/environment in place by replacing a string that begins with variable_name
|
||||
sudo sed -i -e "s%^${variable_name}=.*$%${variable_name}=${variable_value}%" /etc/environment
|
||||
}
|
||||
|
||||
set_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local variable_value=$2
|
||||
|
||||
if grep "^${variable_name}=" /etc/environment > /dev/null; then
|
||||
replace_etc_environment_variable $variable_name $variable_value
|
||||
else
|
||||
add_etc_environment_variable $variable_name $variable_value
|
||||
fi
|
||||
}
|
||||
|
||||
prepend_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local element=$2
|
||||
|
||||
# TODO: handle the case if the variable does not exist
|
||||
existing_value=$(get_etc_environment_variable "${variable_name}")
|
||||
set_etc_environment_variable "${variable_name}" "${element}:${existing_value}"
|
||||
}
|
||||
|
||||
append_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local element=$2
|
||||
|
||||
# TODO: handle the case if the variable does not exist
|
||||
existing_value=$(get_etc_environment_variable "${variable_name}")
|
||||
set_etc_environment_variable "${variable_name}" "${existing_value}:${element}"
|
||||
}
|
||||
|
||||
prepend_etc_environment_path() {
|
||||
local element=$1
|
||||
|
||||
prepend_etc_environment_variable PATH "${element}"
|
||||
}
|
||||
|
||||
append_etc_environment_path() {
|
||||
local element=$1
|
||||
|
||||
append_etc_environment_variable PATH "${element}"
|
||||
}
|
||||
|
||||
# Process /etc/environment as if it were shell script with `export VAR=...` expressions
|
||||
# The PATH variable is handled specially in order to do not override the existing PATH
|
||||
# variable. The value of PATH variable read from /etc/environment is added to the end
|
||||
# of value of the exiting PATH variable exactly as it would happen with real PAM app read
|
||||
# /etc/environment
|
||||
#
|
||||
# TODO: there might be the others variables to be processed in the same way as "PATH" variable
|
||||
# ie MANPATH, INFOPATH, LD_*, etc. In the current implementation the values from /etc/environment
|
||||
# replace the values of the current environment
|
||||
reload_etc_environment() {
|
||||
# add `export ` to every variable of /etc/environment except PATH and eval the result shell script
|
||||
eval $(grep -v '^PATH=' /etc/environment | sed -e 's%^%export %')
|
||||
# handle PATH specially
|
||||
etc_path=$(get_etc_environment_variable PATH)
|
||||
export PATH="$PATH:$etc_path"
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install.sh
|
||||
## Desc: Helper functions for installing tools
|
||||
################################################################################
|
||||
|
||||
download_with_retry() {
|
||||
local url=$1
|
||||
local download_path=$2
|
||||
|
||||
if [ -z "$download_path" ]; then
|
||||
mkdir -p /tmp/downloads
|
||||
download_path="/tmp/downloads/$(basename "$url")"
|
||||
fi
|
||||
|
||||
echo "Downloading package from $url to $download_path..." >&2
|
||||
|
||||
interval=30
|
||||
download_start_time=$(date +%s)
|
||||
|
||||
for ((retries=20; retries>0; retries--)); do
|
||||
attempt_start_time=$(date +%s)
|
||||
if http_code=$(curl -4sSLo "$download_path" "$url" -w '%{http_code}'); then
|
||||
attempt_seconds=$(($(date +%s) - attempt_start_time))
|
||||
if [ "$http_code" -eq 200 ]; then
|
||||
echo "Package downloaded in $attempt_seconds seconds" >&2
|
||||
break
|
||||
else
|
||||
echo "Received HTTP status code $http_code after $attempt_seconds seconds" >&2
|
||||
fi
|
||||
else
|
||||
attempt_seconds=$(($(date +%s) - attempt_start_time))
|
||||
echo "Package download failed in $attempt_seconds seconds" >&2
|
||||
fi
|
||||
|
||||
if [ "$retries" -le 1 ]; then
|
||||
total_seconds=$(($(date +%s) - download_start_time))
|
||||
echo "Package download failed after $total_seconds seconds" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Waiting $interval seconds before retrying (retries left: $retries)..." >&2
|
||||
sleep $interval
|
||||
done
|
||||
|
||||
echo "$download_path"
|
||||
}
|
||||
|
||||
get_github_releases_by_version() {
|
||||
local repo=$1
|
||||
local version=${2:-".+"}
|
||||
local allow_pre_release=${3:-false}
|
||||
local with_assets_only=${4:-false}
|
||||
|
||||
page_size="100"
|
||||
|
||||
json=$(curl -fsSL "https://api.github.com/repos/${repo}/releases?per_page=${page_size}")
|
||||
|
||||
if [[ -z "$json" ]]; then
|
||||
echo "Failed to get releases" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $with_assets_only == "true" ]]; then
|
||||
json=$(echo $json | jq -r '.[] | select(.assets | length > 0)')
|
||||
else
|
||||
json=$(echo $json | jq -r '.[]')
|
||||
fi
|
||||
|
||||
if [[ $allow_pre_release == "true" ]]; then
|
||||
json=$(echo $json | jq -r '.')
|
||||
else
|
||||
json=$(echo $json | jq -r '. | select(.prerelease==false)')
|
||||
fi
|
||||
|
||||
# Filter out rc/beta/etc releases, convert to numeric version and sort
|
||||
json=$(echo $json | jq '. | select(.tag_name | test(".*-[a-z]|beta") | not)' | jq '.tag_name |= gsub("[^\\d.]"; "")' | jq -s 'sort_by(.tag_name | split(".") | map(tonumber))')
|
||||
|
||||
# Select releases matching version
|
||||
if [[ $version == "latest" ]]; then
|
||||
json_filtered=$(echo $json | jq .[-1])
|
||||
elif [[ $version == *"+"* ]] || [[ $version == *"*"* ]]; then
|
||||
json_filtered=$(echo $json | jq --arg version $version '.[] | select(.tag_name | test($version))')
|
||||
else
|
||||
json_filtered=$(echo $json | jq --arg version $version '.[] | select(.tag_name | contains($version))')
|
||||
fi
|
||||
|
||||
if [[ -z "$json_filtered" ]]; then
|
||||
echo "Failed to get releases from ${repo} matching version ${version}" >&2
|
||||
echo "Available versions: $(echo "$json" | jq -r '.tag_name')" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo $json_filtered
|
||||
}
|
||||
|
||||
resolve_github_release_asset_url() {
|
||||
local repo=$1
|
||||
local url_filter=$2
|
||||
local version=${3:-".+"}
|
||||
local allow_pre_release=${4:-false}
|
||||
local allow_multiple_matches=${5:-false}
|
||||
|
||||
matching_releases=$(get_github_releases_by_version "${repo}" "${version}" "${allow_pre_release}" "true")
|
||||
matched_url=$(echo $matching_releases | jq -r ".assets[].browser_download_url | select(${url_filter})")
|
||||
|
||||
if [[ -z "$matched_url" ]]; then
|
||||
echo "Found no download urls matching pattern: ${url_filter}" >&2
|
||||
echo "Available download urls: $(echo "$matching_releases" | jq -r '.assets[].browser_download_url')" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$(echo "$matched_url" | wc -l)" -gt 1 ]]; then
|
||||
if [[ $allow_multiple_matches == "true" ]]; then
|
||||
matched_url=$(echo "$matched_url" | tail -n 1)
|
||||
else
|
||||
echo "Multiple matches found for ${version} version and ${url_filter} URL filter. Please make filters more specific" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo $matched_url
|
||||
}
|
||||
|
||||
get_checksum_from_github_release() {
|
||||
local repo=$1
|
||||
local file_name=$2
|
||||
local version=${3:-".+"}
|
||||
local hash_type=$4
|
||||
local allow_pre_release=${5:-false}
|
||||
|
||||
if [[ -z "$file_name" ]]; then
|
||||
echo "File name is not specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$hash_type" == "SHA256" ]]; then
|
||||
hash_pattern="[A-Fa-f0-9]{64}"
|
||||
elif [[ "$hash_type" == "SHA512" ]]; then
|
||||
hash_pattern="[A-Fa-f0-9]{128}"
|
||||
else
|
||||
echo "Unknown hash type: ${hash_type}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
matching_releases=$(get_github_releases_by_version "${repo}" "${version}" "${allow_pre_release}" "true")
|
||||
matched_line=$(printf "$(echo $matching_releases | jq '.body')\n" | grep "$file_name")
|
||||
|
||||
if [[ -z "$matched_line" ]]; then
|
||||
echo "File name ${file_name} not found in release body" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$(echo "$matched_line" | wc -l)" -gt 1 ]]; then
|
||||
echo "Multiple matches found for ${file_name} in release body: ${matched_line}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
hash=$(echo $matched_line | grep -oP "$hash_pattern")
|
||||
|
||||
if [[ -z "$hash" ]]; then
|
||||
echo "Found ${file_name} in body of release, but failed to get hash from it: ${matched_line}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$hash"
|
||||
}
|
||||
|
||||
get_checksum_from_url() {
|
||||
local url=$1
|
||||
local file_name=$2
|
||||
local hash_type=$3
|
||||
local use_custom_search_pattern=${4:-false}
|
||||
local delimiter=${5:-' '}
|
||||
local word_number=${6:-1}
|
||||
|
||||
if [[ "$hash_type" == "SHA256" ]]; then
|
||||
hash_pattern="[A-Fa-f0-9]{64}"
|
||||
elif [[ "$hash_type" == "SHA512" ]]; then
|
||||
hash_pattern="[A-Fa-f0-9]{128}"
|
||||
else
|
||||
echo "Unknown hash type: ${hash_type}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
checksums_file_path=$(download_with_retry "$url")
|
||||
checksums=$(cat "$checksums_file_path")
|
||||
rm "$checksums_file_path"
|
||||
|
||||
matched_line=$(printf "$checksums\n" | grep "$file_name")
|
||||
|
||||
if [[ "$(echo "$matched_line" | wc -l)" -gt 1 ]]; then
|
||||
echo "Found multiple lines matching file name ${file_name} in checksum file." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "$matched_line" ]]; then
|
||||
echo "File name ${file_name} not found in checksum file." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $use_custom_search_pattern == "true" ]]; then
|
||||
hash=$(echo "$matched_line" | sed 's/ */ /g' | cut -d "$delimiter" -f "$word_number" | tr -d -c '[:alnum:]')
|
||||
else
|
||||
hash=$(echo $matched_line | grep -oP "$hash_pattern")
|
||||
fi
|
||||
|
||||
if [[ -z "$hash" ]]; then
|
||||
echo "Found ${file_name} in checksum file, but failed to get hash from it: ${matched_line}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$hash"
|
||||
}
|
||||
|
||||
use_checksum_comparison() {
|
||||
local file_path=$1
|
||||
local checksum=$2
|
||||
local sha_type=${3:-"256"}
|
||||
|
||||
echo "Performing checksum verification"
|
||||
|
||||
if [[ ! -f "$file_path" ]]; then
|
||||
echo "File not found: $file_path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local_file_hash=$(shasum --algorithm "$sha_type" "$file_path" | awk '{print $1}')
|
||||
|
||||
if [[ "$local_file_hash" != "$checksum" ]]; then
|
||||
echo "Checksum verification failed. Expected hash: $checksum; Actual hash: $local_file_hash."
|
||||
exit 1
|
||||
else
|
||||
echo "Checksum verification passed. Expected hash: $checksum; Actual hash: $local_file_hash."
|
||||
fi
|
||||
}
|
||||
|
||||
get_toolset_value() {
|
||||
local toolset_path="${INSTALLER_SCRIPT_FOLDER}/toolset.json"
|
||||
local query=$1
|
||||
|
||||
echo "$(jq -r "$query" $toolset_path)"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: os.sh
|
||||
## Desc: Helper functions for OS releases
|
||||
################################################################################
|
||||
|
||||
is_ubuntu22() {
|
||||
lsb_release -rs | grep -q '22.04'
|
||||
}
|
||||
|
||||
is_ubuntu24() {
|
||||
lsb_release -rs | grep -q '24.04'
|
||||
}
|
||||
Executable
+96
@@ -0,0 +1,96 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# This script builds and runs various tests on the ubuntu-slim Docker image
|
||||
# to ensure it contains the expected software and configurations.
|
||||
# The build and test workflows for docker images expect this script to be present.
|
||||
#
|
||||
# Usage: test.sh [IMAGE_NAME]
|
||||
# If IMAGE_NAME is not provided, defaults to ubuntu-slim:test
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $0 [IMAGE_NAME]"
|
||||
echo ""
|
||||
echo "Test a Docker image to ensure it contains the expected software and configurations."
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " IMAGE_NAME Docker image name to test (default: ubuntu-slim:test)"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 # Test ubuntu-slim:test (builds image first)"
|
||||
echo " $0 my-registry/ubuntu:latest # Test existing image"
|
||||
echo " $0 ubuntu-slim:v1.2.3 # Test tagged image"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
}
|
||||
|
||||
# Handle help flags
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
show_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Set the image name from parameter or use default
|
||||
IMAGE_NAME="${1:-ubuntu-slim:test}"
|
||||
|
||||
echo "Testing image: $IMAGE_NAME"
|
||||
|
||||
run_test() {
|
||||
local desc="$1"
|
||||
shift
|
||||
if output=$(docker run --rm "$IMAGE_NAME" "$@" 2>&1); then
|
||||
echo "PASS: $desc"
|
||||
echo "$output" | sed 's/^/ /'
|
||||
else
|
||||
echo "FAIL: $desc"
|
||||
echo "$output" | sed 's/^/ /'
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Build the image only if using the default name (for backward compatibility)
|
||||
if [[ "$IMAGE_NAME" == "ubuntu-slim:test" ]]; then
|
||||
echo "Building image: $IMAGE_NAME"
|
||||
if ! docker build --no-cache --debug --progress plain -t "$IMAGE_NAME" .; then
|
||||
echo "Error: Docker build failed"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# Check if the image exists
|
||||
if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then
|
||||
echo "Error: Image '$IMAGE_NAME' does not exist. Please build it first or provide a valid image name."
|
||||
echo "Run '$0 --help' for usage information."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Running tests on image: $IMAGE_NAME"
|
||||
|
||||
docker history --no-trunc "$IMAGE_NAME"
|
||||
docker inspect -f "{{ .Size }}" "$IMAGE_NAME" | numfmt --to=iec | sed 's/^/Image size: /'
|
||||
|
||||
# Ensure key software is installed and runnable
|
||||
run_test "GitHub CLI is installed" gh --version
|
||||
run_test "Azure CLI is installed" az version
|
||||
run_test "AWS CLI is installed" aws --version
|
||||
run_test "Session Manager plugin is installed" session-manager-plugin --version
|
||||
run_test "AWS SAM CLI is installed" sam --version
|
||||
run_test "jq is installed" jq --version
|
||||
run_test "git is installed" git --version
|
||||
run_test "node is installed" node --version
|
||||
run_test "npm is installed" npm --version
|
||||
run_test "python3 is installed" python3 --version
|
||||
run_test "python is aliased" python --version
|
||||
run_test "pipx is installed" pipx --version
|
||||
run_test "curl is installed" curl --version
|
||||
run_test "wget is installed" wget --version
|
||||
run_test "yq is installed" yq --version
|
||||
run_test "parallel is installed" parallel --version
|
||||
run_test "bc is installed" bc --version
|
||||
run_test "zstd is installed" zstd --version
|
||||
run_test "google cloud SDK is installed" gcloud --version
|
||||
run_test "git lfs is installed" git lfs version
|
||||
run_test "powershell is installed" pwsh --version
|
||||
|
||||
# Quick check: ensure the imagedata JSON file was created during image build
|
||||
run_test "imagedata JSON file exists" test -f /imagegeneration/imagedata.json
|
||||
@@ -0,0 +1,109 @@
|
||||
{
|
||||
"toolcache": [
|
||||
{
|
||||
"name": "node",
|
||||
"url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json",
|
||||
"platform" : "linux",
|
||||
"arch": "x64",
|
||||
"versions": [
|
||||
"22.*",
|
||||
"24.*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "CodeQL",
|
||||
"platform" : "linux",
|
||||
"arch": "x64",
|
||||
"versions": [
|
||||
"*"
|
||||
]
|
||||
}
|
||||
],
|
||||
"apt": {
|
||||
"vital_packages": [
|
||||
"apt-utils",
|
||||
"bzip2",
|
||||
"ca-certificates",
|
||||
"curl",
|
||||
"g++",
|
||||
"gcc",
|
||||
"make",
|
||||
"jq",
|
||||
"tar",
|
||||
"unzip",
|
||||
"wget"
|
||||
],
|
||||
"common_packages": [
|
||||
"autoconf",
|
||||
"automake",
|
||||
"bc",
|
||||
"dbus",
|
||||
"dnsutils",
|
||||
"dpkg",
|
||||
"dpkg-dev",
|
||||
"fakeroot",
|
||||
"fonts-noto-color-emoji",
|
||||
"gnupg2",
|
||||
"iproute2",
|
||||
"iputils-ping",
|
||||
"libyaml-dev",
|
||||
"libtool",
|
||||
"libssl-dev",
|
||||
"libsqlite3-dev",
|
||||
"locales",
|
||||
"lzma",
|
||||
"mercurial",
|
||||
"openssh-client",
|
||||
"p7zip-rar",
|
||||
"pkg-config",
|
||||
"python-is-python3",
|
||||
"rpm",
|
||||
"texinfo",
|
||||
"tk",
|
||||
"tree",
|
||||
"tzdata",
|
||||
"upx",
|
||||
"xvfb",
|
||||
"xz-utils",
|
||||
"zsync"
|
||||
],
|
||||
"cmd_packages": [
|
||||
"acl",
|
||||
"binutils",
|
||||
"libnss3-tools",
|
||||
"coreutils",
|
||||
"file",
|
||||
"findutils",
|
||||
"flex",
|
||||
"ftp",
|
||||
"haveged",
|
||||
"lz4",
|
||||
"netcat-openbsd",
|
||||
"net-tools",
|
||||
"p7zip-full",
|
||||
"parallel",
|
||||
"patchelf",
|
||||
"pigz",
|
||||
"pollinate",
|
||||
"rsync",
|
||||
"shellcheck",
|
||||
"sqlite3",
|
||||
"ssh",
|
||||
"sshpass",
|
||||
"sudo",
|
||||
"systemd-coredump",
|
||||
"telnet",
|
||||
"time",
|
||||
"zip"
|
||||
]
|
||||
},
|
||||
"brew": [
|
||||
],
|
||||
"node": {
|
||||
"default": "24"
|
||||
},
|
||||
"node_modules": [ ],
|
||||
"pwsh": {
|
||||
"version": "7.5"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
# Ubuntu-Slim
|
||||
- OS Version: 24.04.3 LTS
|
||||
- Kernel Version: 6.14.0-36-generic
|
||||
- Image Version: 1.0.0
|
||||
- Systemd version: 255.4-1ubuntu8.11
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- Bash 5.2.21(1)-release
|
||||
- Dash 0.5.12-6ubuntu5
|
||||
- Node.js 24.12.0
|
||||
- Perl 5.38.2
|
||||
- Python 3.12.3
|
||||
|
||||
### Package Management
|
||||
- Npm 11.6.2
|
||||
- Pip 24.0
|
||||
- Pip3 24.0
|
||||
- Pipx 1.8.0
|
||||
|
||||
### Tools
|
||||
- AzCopy 10.31.0 - available by `azcopy` and `azcopy10` aliases
|
||||
- Bicep 0.39.26
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- Git-ftp 1.6.0
|
||||
- jq 1.7
|
||||
- nvm 0.40.3
|
||||
- OpenSSL 3.0.13-0ubuntu3.6
|
||||
- yq 4.49.2
|
||||
- zstd 1.5.7
|
||||
|
||||
### CLI Tools
|
||||
- AWS CLI 2.32.14
|
||||
- AWS CLI Session Manager Plugin 1.2.764.0
|
||||
- AWS SAM CLI 1.150.1
|
||||
- Azure CLI 2.81.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- GitHub CLI 2.83.2
|
||||
- Google Cloud CLI 549.0.1
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.5.4
|
||||
|
||||
### Installed apt packages
|
||||
| Name | Version |
|
||||
| ---------------------- | ---------------------------- |
|
||||
| acl | 2.3.2-1build1.1 |
|
||||
| apt-utils | 2.8.3 |
|
||||
| autoconf | 2.71-3 |
|
||||
| automake | 1:1.16.5-1.3ubuntu1 |
|
||||
| bc | 1.07.1-3ubuntu4 |
|
||||
| binutils | 2.42-4ubuntu2.8 |
|
||||
| bzip2 | 1.0.8-5.1build0.1 |
|
||||
| ca-certificates | 20240203 |
|
||||
| coreutils | 9.4-3ubuntu6.1 |
|
||||
| curl | 8.5.0-2ubuntu10.6 |
|
||||
| dbus | 1.14.10-4ubuntu4.1 |
|
||||
| dnsutils | 1:9.18.39-0ubuntu0.24.04.2 |
|
||||
| dpkg | 1.22.6ubuntu6.5 |
|
||||
| dpkg-dev | 1.22.6ubuntu6.5 |
|
||||
| fakeroot | 1.33-1 |
|
||||
| file | 1:5.45-3build1 |
|
||||
| findutils | 4.9.0-5build1 |
|
||||
| flex | 2.6.4-8.2build1 |
|
||||
| fonts-noto-color-emoji | 2.047-0ubuntu0.24.04.1 |
|
||||
| ftp | 20230507-2build3 |
|
||||
| g++ | 4:13.2.0-7ubuntu1 |
|
||||
| gcc | 4:13.2.0-7ubuntu1 |
|
||||
| gnupg2 | 2.4.4-2ubuntu17.3 |
|
||||
| haveged | 1.9.14-1ubuntu2 |
|
||||
| iproute2 | 6.1.0-1ubuntu6.2 |
|
||||
| iputils-ping | 3:20240117-1ubuntu0.1 |
|
||||
| jq | 1.7.1-3ubuntu0.24.04.1 |
|
||||
| libnss3-tools | 2:3.98-1build1 |
|
||||
| libsqlite3-dev | 3.45.1-1ubuntu2.5 |
|
||||
| libssl-dev | 3.0.13-0ubuntu3.6 |
|
||||
| libtool | 2.4.7-7build1 |
|
||||
| libyaml-dev | 0.2.5-1build1 |
|
||||
| locales | 2.39-0ubuntu8.6 |
|
||||
| lz4 | 1.9.4-1build1.1 |
|
||||
| lzma | 9.22-2.2 |
|
||||
| make | 4.3-4.1build2 |
|
||||
| mercurial | 6.7.2-1ubuntu2.2 |
|
||||
| net-tools | 2.10-0.1ubuntu4.4 |
|
||||
| netcat-openbsd | 1.226-1ubuntu2 |
|
||||
| openssh-client | 1:9.6p1-3ubuntu13.14 |
|
||||
| p7zip-full | 16.02+transitional.1 |
|
||||
| p7zip-rar | 16.02+transitional.1 |
|
||||
| parallel | 20231122+ds-1 |
|
||||
| patchelf | 0.18.0-1.1build1 |
|
||||
| pigz | 2.8-1 |
|
||||
| pkg-config | 1.8.1-2build1 |
|
||||
| pollinate | 4.33-3.1ubuntu1.1 |
|
||||
| python-is-python3 | 3.11.4-1 |
|
||||
| rpm | 4.18.2+dfsg-2.1build2 |
|
||||
| rsync | 3.2.7-1ubuntu1.2 |
|
||||
| shellcheck | 0.9.0-1 |
|
||||
| sqlite3 | 3.45.1-1ubuntu2.5 |
|
||||
| ssh | 1:9.6p1-3ubuntu13.14 |
|
||||
| sshpass | 1.09-1 |
|
||||
| sudo | 1.9.15p5-3ubuntu5.24.04.1 |
|
||||
| systemd-coredump | 255.4-1ubuntu8.11 |
|
||||
| tar | 1.35+dfsg-3build1 |
|
||||
| telnet | 0.17+2.5-3ubuntu4 |
|
||||
| texinfo | 7.1-3build2 |
|
||||
| time | 1.9-0.2build1 |
|
||||
| tk | 8.6.14build1 |
|
||||
| tree | 2.1.1-2ubuntu3.24.04.2 |
|
||||
| tzdata | 2025b-0ubuntu0.24.04.1 |
|
||||
| unzip | 6.0-28ubuntu4.1 |
|
||||
| upx | 4.2.2-3 |
|
||||
| wget | 1.21.4-1ubuntu4.1 |
|
||||
| xvfb | 2:21.1.12-1ubuntu1.5 |
|
||||
| xz-utils | 5.6.1+really5.4.5-1ubuntu0.2 |
|
||||
| zip | 3.0-13ubuntu0.2 |
|
||||
| zsync | 0.6.2-5build1 |
|
||||
@@ -1,11 +1,17 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[Ubuntu & Windows] Four tools scheduled for deprecation on November 3, 2025](https://github.com/actions/runner-images/issues/12898) |
|
||||
| [[Windows/Ubuntu] Docker Server and Client will be updated to version 29.1.*, Docker Compose will be updated to version 2.40.3 on February 9th, 2026](https://github.com/actions/runner-images/issues/13474) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[Ubuntu-22.04] Pre-cached Docker images will be removed from the image on January 12th, 2026](https://github.com/actions/runner-images/issues/13472) |
|
||||
| [[Ubuntu] The additional Haskell (GHC) instance will be removed from images on January 12th, 2026](https://github.com/actions/runner-images/issues/13471) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
***
|
||||
# Ubuntu 22.04
|
||||
- OS Version: 22.04.5 LTS
|
||||
- Kernel Version: 6.8.0-1041-azure
|
||||
- Image Version: 20251125.163.1
|
||||
- Kernel Version: 6.8.0-1044-azure
|
||||
- Image Version: 20260105.207.1
|
||||
- Systemd version: 249.11-0ubuntu3.17
|
||||
|
||||
## Installed Software
|
||||
@@ -18,28 +24,28 @@
|
||||
- Dash 0.5.11+git20210903+057cd650a4ed-3build1
|
||||
- GNU C++: 10.5.0, 11.4.0, 12.3.0
|
||||
- GNU Fortran: 10.5.0, 11.4.0, 12.3.0
|
||||
- Julia 1.12.2
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Julia 1.12.3
|
||||
- Kotlin 2.3.0-release-356
|
||||
- Mono 6.12.0.200
|
||||
- MSBuild 16.10.1.31701 (Mono 6.12.0.200)
|
||||
- Node.js 20.19.6
|
||||
- Perl 5.34.0
|
||||
- Python 3.10.12
|
||||
- Ruby 3.0.2p107
|
||||
- Swift 6.2.1
|
||||
- Swift 6.2.3
|
||||
|
||||
### Package Management
|
||||
- cpan 1.64
|
||||
- Helm 3.19.2
|
||||
- Homebrew 5.0.3
|
||||
- Miniconda 25.9.1
|
||||
- Helm 3.19.4
|
||||
- Homebrew 5.0.9
|
||||
- Miniconda 25.11.1
|
||||
- Npm 10.8.2
|
||||
- NuGet 6.6.1.2
|
||||
- Pip 22.0.2
|
||||
- Pip3 22.0.2
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 3.3.5
|
||||
- Vcpkg (build from commit 9aee6e968f)
|
||||
- Vcpkg (build from commit e3db8f65d2)
|
||||
- Yarn 1.22.22
|
||||
|
||||
#### Environment variables
|
||||
@@ -59,34 +65,34 @@ to accomplish this.
|
||||
### Project Management
|
||||
- Ant 1.10.12
|
||||
- Gradle 9.2.1
|
||||
- Lerna 9.0.1
|
||||
- Maven 3.9.11
|
||||
- Sbt 1.11.7
|
||||
- Lerna 9.0.3
|
||||
- Maven 3.9.12
|
||||
- Sbt 1.12.0
|
||||
|
||||
### Tools
|
||||
- Ansible 2.17.14
|
||||
- apt-fast 1.10.0
|
||||
- AzCopy 10.31.0 - available by `azcopy` and `azcopy10` aliases
|
||||
- Bazel 8.4.2
|
||||
- Bazel 8.5.0
|
||||
- Bazelisk 1.26.0
|
||||
- Bicep 0.39.26
|
||||
- Buildah 1.23.1
|
||||
- CMake 3.31.6
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- CodeQL Action Bundle 2.23.8
|
||||
- Docker Amazon ECR Credential Helper 0.11.0
|
||||
- Docker Compose v2 2.38.2
|
||||
- Docker-Buildx 0.30.1
|
||||
- Docker Client 28.0.4
|
||||
- Docker Server 28.0.4
|
||||
- Fastlane 2.229.1
|
||||
- Fastlane 2.230.0
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- Git-ftp 1.6.0
|
||||
- Haveged 1.9.14
|
||||
- Heroku 10.15.1
|
||||
- Heroku 10.16.0
|
||||
- jq 1.6
|
||||
- Kind 0.30.0
|
||||
- Kubectl 1.34.2
|
||||
- Kind 0.31.0
|
||||
- Kubectl 1.35.0
|
||||
- Kustomize 5.8.0
|
||||
- Leiningen 2.12.0
|
||||
- MediaInfo 21.09
|
||||
@@ -97,32 +103,32 @@ to accomplish this.
|
||||
- nvm 0.40.3
|
||||
- OpenSSL 3.0.2-0ubuntu1.20
|
||||
- Packer 1.14.3
|
||||
- Parcel 2.16.1
|
||||
- Parcel 2.16.3
|
||||
- Podman 3.4.4
|
||||
- Pulumi 3.208.0
|
||||
- Pulumi 3.214.0
|
||||
- R 4.5.2
|
||||
- Skopeo 1.4.1
|
||||
- Sphinx Open Source Search Server 2.2.11
|
||||
- SVN 1.14.1
|
||||
- Terraform 1.14.0
|
||||
- Terraform 1.14.3
|
||||
- yamllint 1.37.1
|
||||
- yq 4.49.2
|
||||
- yq 4.50.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### CLI Tools
|
||||
- Alibaba Cloud CLI 3.1.5
|
||||
- AWS CLI 2.32.5
|
||||
- Alibaba Cloud CLI 3.2.5
|
||||
- AWS CLI 2.32.29
|
||||
- AWS CLI Session Manager Plugin 1.2.764.0
|
||||
- AWS SAM CLI 1.148.0
|
||||
- Azure CLI 2.80.0
|
||||
- AWS SAM CLI 1.151.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- GitHub CLI 2.83.1
|
||||
- Google Cloud CLI 548.0.0
|
||||
- Netlify CLI 23.11.1
|
||||
- OpenShift CLI 4.20.5
|
||||
- GitHub CLI 2.83.2
|
||||
- Google Cloud CLI 550.0.0
|
||||
- Netlify CLI 23.13.0
|
||||
- OpenShift CLI 4.20.8
|
||||
- ORAS CLI 1.3.0
|
||||
- Vercel CLI 48.10.13
|
||||
- Vercel CLI 50.1.4
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
@@ -135,40 +141,40 @@ to accomplish this.
|
||||
|
||||
### PHP Tools
|
||||
- PHP: 8.1.2
|
||||
- Composer 2.9.2
|
||||
- PHPUnit 8.5.48
|
||||
- Composer 2.9.3
|
||||
- PHPUnit 8.5.50
|
||||
```
|
||||
Both Xdebug and PCOV extensions are installed, but only Xdebug is enabled.
|
||||
```
|
||||
|
||||
### Haskell Tools
|
||||
- Cabal 3.16.0.0
|
||||
- GHC 9.12.2
|
||||
- Cabal 3.16.1.0
|
||||
- GHC 9.14.1
|
||||
- GHCup 0.1.50.2
|
||||
- Stack 3.7.1
|
||||
- Stack 3.9.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.72.1
|
||||
- Cargo audit 0.22.0
|
||||
- Cargo clippy 0.1.91
|
||||
- Cargo clippy 0.1.92
|
||||
- Cargo outdated 0.17.0
|
||||
- Cbindgen 0.29.2
|
||||
- Rustfmt 1.8.0
|
||||
|
||||
### Browsers and Drivers
|
||||
- Google Chrome 142.0.7444.175
|
||||
- ChromeDriver 142.0.7444.175
|
||||
- Chromium 142.0.7444.0
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Selenium server 4.38.0
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Google Chrome 143.0.7499.169
|
||||
- ChromeDriver 143.0.7499.169
|
||||
- Chromium 143.0.7499.0
|
||||
- Microsoft Edge 143.0.3650.96
|
||||
- Microsoft Edge WebDriver 143.0.3650.96
|
||||
- Selenium server 4.39.0
|
||||
- Mozilla Firefox 146.0.1
|
||||
- Geckodriver 0.36.0
|
||||
|
||||
#### Environment variables
|
||||
@@ -180,7 +186,7 @@ Both Xdebug and PCOV extensions are installed, but only Xdebug is enabled.
|
||||
| SELENIUM_JAR_PATH | /usr/share/java/selenium-server.jar |
|
||||
|
||||
### .NET Tools
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.101
|
||||
- nbgv 3.9.50+6feeb89450
|
||||
|
||||
### Databases
|
||||
@@ -195,7 +201,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
```
|
||||
|
||||
#### MySQL
|
||||
- MySQL 8.0.44-0ubuntu0.22.04.1
|
||||
- MySQL 8.0.44-0ubuntu0.22.04.2
|
||||
```
|
||||
User: root
|
||||
Password: root
|
||||
@@ -212,21 +218,21 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.10
|
||||
- 1.25.4
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
|
||||
#### Node.js
|
||||
- 20.19.5
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Python
|
||||
- 3.9.25
|
||||
- 3.10.19
|
||||
- 3.11.14
|
||||
- 3.12.12
|
||||
- 3.13.9
|
||||
- 3.14.0
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### PyPy
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
@@ -238,7 +244,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
@@ -246,7 +252,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- MarkdownPS: 1.10
|
||||
- Microsoft.Graph: 2.32.0
|
||||
- Microsoft.Graph: 2.34.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
@@ -261,7 +267,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 9.0 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.0 33.0.1 33.0.2 33.0.3<br>32.0.0<br>31.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1) |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.18.1<br>3.22.1<br>3.31.5 |
|
||||
@@ -287,14 +293,14 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| alpine:3.18 | sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f | 2025-02-14 |
|
||||
| alpine:3.19 | sha256:6baf43584bcb78f2e5847d1de515f23499913ac9f12bdf834811a3145eb11ca1 | 2025-10-08 |
|
||||
| debian:10 | sha256:58ce6f1271ae1c8a2006ff7d3e54e9874d839f573d8009c20154ad0f2fb0a225 | 2024-06-13 |
|
||||
| debian:11 | sha256:ee239c601913c0d3962208299eef70dcffcb7aac1787f7a02f6d3e2b518755e6 | 2025-11-17 |
|
||||
| moby/buildkit:latest | sha256:de10faf919fc71ba4eb1dd7bd6449566d012b0c9436b1c61bfee21d621b009aa | 2025-11-20 |
|
||||
| debian:11 | sha256:3bbe51d205c8c0ea0473bb33fa6c18c836ca49ac3032c0bf71413cda8515354f | 2025-12-29 |
|
||||
| moby/buildkit:latest | sha256:5601811fde88bb9e8a577bfe804af82bccb712e1cd07ff94663bded5e628cf75 | 2025-12-16 |
|
||||
| node:18 | sha256:c6ae79e38498325db67193d391e6ec1d224d96c693a8a4d943498556716d3783 | 2025-03-27 |
|
||||
| node:18-alpine | sha256:8d6421d663b4c28fd3ebc498332f249011d118945588d0a35cb9bc4b8ca09d9e | 2025-03-27 |
|
||||
| node:20 | sha256:66d2eb8b463114d1f416d61dbd5fa9cea83e8fc250feb997338467728a06124b | 2025-11-25 |
|
||||
| node:20-alpine | sha256:16858294071a56ffd4cce9f17b57136cc39e41507b40e245b4f8e906f7a19463 | 2025-11-25 |
|
||||
| node:22 | sha256:4ad2c2b350ab49fb637ab40a269ffe207c61818bb7eb3a4ea122001a0c605e1f | 2025-11-18 |
|
||||
| node:22-alpine | sha256:b2358485e3e33bc3a33114d2b1bdb18cdbe4df01bd2b257198eb51beb1f026c5 | 2025-10-29 |
|
||||
| node:20 | sha256:929de1eecc6450613bf37eea2f93f3d362b536a465d74e962488b5eca1168948 | 2025-12-30 |
|
||||
| node:20-alpine | sha256:658d0f63e501824d6c23e06d4bb95c71e7d704537c9d9272f488ac03a370d448 | 2025-12-18 |
|
||||
| node:22 | sha256:8739e532180cfe09e03bbb4545fc725b044c921280532d7c9c1480ba2396837e | 2025-12-30 |
|
||||
| node:22-alpine | sha256:0340fa682d72068edf603c305bfbc10e23219fb0e40df58d9ea4d6f33a9798bf | 2025-12-18 |
|
||||
| ubuntu:20.04 | sha256:8feb4d8ca5354def3d8fce243717141ce31e2c428701f6682bd2fafe15388214 | 2025-04-08 |
|
||||
| ubuntu:22.04 | sha256:104ae83764a5119017b8e8d6218fa0832b09df65aae7d5a6de29a85d813da2fb | 2025-10-13 |
|
||||
|
||||
@@ -305,7 +311,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| aria2 | 1.36.0-1 |
|
||||
| autoconf | 2.71-2 |
|
||||
| automake | 1:1.16.5-1.3 |
|
||||
| binutils | 2.38-4ubuntu2.10 |
|
||||
| binutils | 2.38-4ubuntu2.12 |
|
||||
| bison | 2:3.8.2+dfsg-1build1 |
|
||||
| brotli | 1.0.9-2build6 |
|
||||
| bzip2 | 1.0.8-5build1 |
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[Ubuntu & Windows] Four tools scheduled for deprecation on November 3, 2025](https://github.com/actions/runner-images/issues/12898) |
|
||||
| [[Windows/Ubuntu] Docker Server and Client will be updated to version 29.1.*, Docker Compose will be updated to version 2.40.3 on February 9th, 2026](https://github.com/actions/runner-images/issues/13474) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[Ubuntu-22.04] Pre-cached Docker images will be removed from the image on January 12th, 2026](https://github.com/actions/runner-images/issues/13472) |
|
||||
| [[Ubuntu] The additional Haskell (GHC) instance will be removed from images on January 12th, 2026](https://github.com/actions/runner-images/issues/13471) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
***
|
||||
# Ubuntu 24.04
|
||||
- OS Version: 24.04.3 LTS
|
||||
- Kernel Version: 6.11.0-1018-azure
|
||||
- Image Version: 20251126.144.1
|
||||
- Systemd version: 255.4-1ubuntu8.11
|
||||
- Image Version: 20260105.202.1
|
||||
- Systemd version: 255.4-1ubuntu8.12
|
||||
|
||||
## Installed Software
|
||||
|
||||
@@ -18,25 +24,25 @@
|
||||
- Dash 0.5.12-6ubuntu5
|
||||
- GNU C++: 12.4.0, 13.3.0, 14.2.0
|
||||
- GNU Fortran: 12.4.0, 13.3.0, 14.2.0
|
||||
- Julia 1.12.2
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Julia 1.12.3
|
||||
- Kotlin 2.3.0-release-356
|
||||
- Node.js 20.19.6
|
||||
- Perl 5.38.2
|
||||
- Python 3.12.3
|
||||
- Ruby 3.2.3
|
||||
- Swift 6.2.1
|
||||
- Swift 6.2.3
|
||||
|
||||
### Package Management
|
||||
- cpan 1.64
|
||||
- Helm 3.19.2
|
||||
- Homebrew 5.0.3
|
||||
- Miniconda 25.9.1
|
||||
- Helm 3.19.4
|
||||
- Homebrew 5.0.9
|
||||
- Miniconda 25.11.1
|
||||
- Npm 10.8.2
|
||||
- Pip 24.0
|
||||
- Pip3 24.0
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 3.4.20
|
||||
- Vcpkg (build from commit da93ad9cab)
|
||||
- Vcpkg (build from commit e3db8f65d2)
|
||||
- Yarn 1.22.22
|
||||
|
||||
#### Environment variables
|
||||
@@ -56,31 +62,31 @@ to accomplish this.
|
||||
### Project Management
|
||||
- Ant 1.10.14
|
||||
- Gradle 9.2.1
|
||||
- Lerna 9.0.1
|
||||
- Maven 3.9.11
|
||||
- Lerna 9.0.3
|
||||
- Maven 3.9.12
|
||||
|
||||
### Tools
|
||||
- Ansible 2.20.0
|
||||
- Ansible 2.20.1
|
||||
- AzCopy 10.31.0 - available by `azcopy` and `azcopy10` aliases
|
||||
- Bazel 8.4.2
|
||||
- Bazel 8.5.0
|
||||
- Bazelisk 1.26.0
|
||||
- Bicep 0.39.26
|
||||
- Buildah 1.33.7
|
||||
- CMake 3.31.6
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- CodeQL Action Bundle 2.23.8
|
||||
- Docker Amazon ECR Credential Helper 0.11.0
|
||||
- Docker Compose v2 2.38.2
|
||||
- Docker-Buildx 0.30.1
|
||||
- Docker Client 28.0.4
|
||||
- Docker Server 28.0.4
|
||||
- Fastlane 2.229.1
|
||||
- Fastlane 2.230.0
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- Git-ftp 1.6.0
|
||||
- Haveged 1.9.14
|
||||
- jq 1.7
|
||||
- Kind 0.30.0
|
||||
- Kubectl 1.34.2
|
||||
- Kind 0.31.0
|
||||
- Kubectl 1.35.0
|
||||
- Kustomize 5.8.0
|
||||
- MediaInfo 24.01
|
||||
- Mercurial 6.7.2
|
||||
@@ -90,24 +96,24 @@ to accomplish this.
|
||||
- nvm 0.40.3
|
||||
- OpenSSL 3.0.13-0ubuntu3.6
|
||||
- Packer 1.14.3
|
||||
- Parcel 2.16.1
|
||||
- Parcel 2.16.3
|
||||
- Podman 4.9.3
|
||||
- Pulumi 3.209.0
|
||||
- Pulumi 3.214.0
|
||||
- Skopeo 1.13.3
|
||||
- Sphinx Open Source Search Server 2.2.11
|
||||
- yamllint 1.37.1
|
||||
- yq 4.49.2
|
||||
- yq 4.50.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### CLI Tools
|
||||
- AWS CLI 2.32.5
|
||||
- AWS CLI 2.32.29
|
||||
- AWS CLI Session Manager Plugin 1.2.764.0
|
||||
- AWS SAM CLI 1.148.0
|
||||
- Azure CLI 2.80.0
|
||||
- AWS SAM CLI 1.151.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- GitHub CLI 2.83.1
|
||||
- Google Cloud CLI 548.0.0
|
||||
- GitHub CLI 2.83.2
|
||||
- Google Cloud CLI 550.0.0
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
@@ -120,35 +126,35 @@ to accomplish this.
|
||||
|
||||
### PHP Tools
|
||||
- PHP: 8.3.6
|
||||
- Composer 2.9.2
|
||||
- PHPUnit 8.5.48
|
||||
- Composer 2.9.3
|
||||
- PHPUnit 8.5.50
|
||||
```
|
||||
Both Xdebug and PCOV extensions are installed, but only Xdebug is enabled.
|
||||
```
|
||||
|
||||
### Haskell Tools
|
||||
- Cabal 3.16.0.0
|
||||
- GHC 9.12.2
|
||||
- Cabal 3.16.1.0
|
||||
- GHC 9.14.1
|
||||
- GHCup 0.1.50.2
|
||||
- Stack 3.7.1
|
||||
- Stack 3.9.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Rustfmt 1.8.0
|
||||
|
||||
### Browsers and Drivers
|
||||
- Google Chrome 142.0.7444.175
|
||||
- ChromeDriver 142.0.7444.175
|
||||
- Chromium 142.0.7444.0
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Selenium server 4.38.0
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Google Chrome 143.0.7499.169
|
||||
- ChromeDriver 143.0.7499.169
|
||||
- Chromium 143.0.7499.0
|
||||
- Microsoft Edge 143.0.3650.96
|
||||
- Microsoft Edge WebDriver 143.0.3650.96
|
||||
- Selenium server 4.39.0
|
||||
- Mozilla Firefox 146.0.1
|
||||
- Geckodriver 0.36.0
|
||||
|
||||
#### Environment variables
|
||||
@@ -160,7 +166,7 @@ Both Xdebug and PCOV extensions are installed, but only Xdebug is enabled.
|
||||
| SELENIUM_JAR_PATH | /usr/share/java/selenium-server.jar |
|
||||
|
||||
### .NET Tools
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.101
|
||||
- nbgv 3.9.50+6feeb89450
|
||||
|
||||
### Databases
|
||||
@@ -175,7 +181,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
```
|
||||
|
||||
#### MySQL
|
||||
- MySQL 8.0.44-0ubuntu0.24.04.1
|
||||
- MySQL 8.0.44-0ubuntu0.24.04.2
|
||||
```
|
||||
User: root
|
||||
Password: root
|
||||
@@ -188,21 +194,21 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.10
|
||||
- 1.25.4
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Python
|
||||
- 3.9.25
|
||||
- 3.10.19
|
||||
- 3.11.14
|
||||
- 3.12.12
|
||||
- 3.13.9
|
||||
- 3.14.0
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### PyPy
|
||||
- 3.9.19 [PyPy 7.3.16]
|
||||
@@ -212,14 +218,14 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Microsoft.Graph: 2.32.0
|
||||
- Microsoft.Graph: 2.34.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
@@ -234,7 +240,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 12.0 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
@@ -259,7 +265,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| aria2 | 1.37.0+debian-1build3 |
|
||||
| autoconf | 2.71-3 |
|
||||
| automake | 1:1.16.5-1.3ubuntu1 |
|
||||
| binutils | 2.42-4ubuntu2.6 |
|
||||
| binutils | 2.42-4ubuntu2.8 |
|
||||
| bison | 2:3.8.2+dfsg-1build2 |
|
||||
| brotli | 1.1.0-2build2 |
|
||||
| bzip2 | 1.0.8-5.1build0.1 |
|
||||
@@ -313,7 +319,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| sshpass | 1.09-1 |
|
||||
| sudo | 1.9.15p5-3ubuntu5.24.04.1 |
|
||||
| swig | 4.2.0-2ubuntu1 |
|
||||
| systemd-coredump | 255.4-1ubuntu8.11 |
|
||||
| systemd-coredump | 255.4-1ubuntu8.12 |
|
||||
| tar | 1.35+dfsg-3build1 |
|
||||
| telnet | 0.17+2.5-3ubuntu4 |
|
||||
| texinfo | 7.1-3build2 |
|
||||
|
||||
@@ -11,6 +11,7 @@ Import-Module "$env:HELPER_SCRIPTS/../tests/Helpers.psm1"
|
||||
# Get modules content from toolset
|
||||
$modules = (Get-ToolsetContent).azureModules
|
||||
$installPSModulePath = "/usr/share"
|
||||
$psModuleMachinePath = $env:PSModulePath + ":"
|
||||
|
||||
foreach ($module in $modules) {
|
||||
$moduleName = $module.name
|
||||
@@ -19,9 +20,12 @@ foreach ($module in $modules) {
|
||||
foreach ($version in $module.versions) {
|
||||
$modulePath = Join-Path -Path $installPSModulePath -ChildPath "${moduleName}_${version}"
|
||||
Write-Host " - $version [$modulePath]"
|
||||
$psModuleMachinePath += ($modulePath + ":")
|
||||
Save-Module -Path $modulePath -Name $moduleName -RequiredVersion $version -Force
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$finalLine = "PSModulePath=$($psModuleMachinePath.TrimEnd(':').Replace("\root", '$HOME'))"
|
||||
Add-Content -Path "/etc/environment" -Value $finalLine
|
||||
|
||||
Invoke-PesterTests -TestFile "PowerShellModules" -TestName "AzureModules"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
REPO_URL="https://download.docker.com/linux/ubuntu"
|
||||
GPG_KEY="/usr/share/keyrings/docker.gpg"
|
||||
@@ -64,25 +65,9 @@ systemctl is-enabled --quiet docker.service || systemctl enable docker.service
|
||||
sleep 10
|
||||
docker info
|
||||
|
||||
if [[ "${DOCKERHUB_PULL_IMAGES:-yes}" == "yes" ]]; then
|
||||
# If credentials are provided, attempt to log into Docker Hub
|
||||
# with a paid account to avoid Docker Hub's rate limit.
|
||||
if [[ "${DOCKERHUB_LOGIN}" ]] && [[ "${DOCKERHUB_PASSWORD}" ]]; then
|
||||
docker login --username "${DOCKERHUB_LOGIN}" --password "${DOCKERHUB_PASSWORD}"
|
||||
fi
|
||||
|
||||
# Pull images
|
||||
images=$(get_toolset_value '.docker.images[]')
|
||||
for image in $images; do
|
||||
docker pull "$image"
|
||||
done
|
||||
|
||||
# Always attempt to logout so we do not leave our credentials on the built
|
||||
# image. Logout _should_ return a zero exit code even if no credentials were
|
||||
# stored from earlier.
|
||||
docker logout
|
||||
else
|
||||
echo "Skipping docker images pulling"
|
||||
# Pull Dependabot docker image
|
||||
if ! is_ubuntu22; then
|
||||
docker pull ghcr.io/dependabot/dependabot-updater-core:latest
|
||||
fi
|
||||
|
||||
# Download amazon-ecr-credential-helper
|
||||
@@ -102,6 +87,3 @@ rm $GPG_KEY
|
||||
rm $REPO_PATH
|
||||
|
||||
invoke_tests "Tools" "Docker"
|
||||
if [[ "${DOCKERHUB_PULL_IMAGES:-yes}" == "yes" ]]; then
|
||||
invoke_tests "Tools" "Docker images"
|
||||
fi
|
||||
|
||||
@@ -23,8 +23,8 @@ prepend_etc_environment_path $ghcup_bin
|
||||
|
||||
available_versions=$(ghcup list -t ghc -r | grep -v "prerelease" | awk '{print $2}')
|
||||
|
||||
# Install 2 latest Haskell Major.Minor versions
|
||||
major_minor_versions=$(echo "$available_versions" | cut -d"." -f 1,2 | uniq | tail -n2)
|
||||
# Install latest Haskell Major.Minor version
|
||||
major_minor_versions=$(echo "$available_versions" | cut -d"." -f 1,2 | uniq | tail -n1)
|
||||
for major_minor_version in $major_minor_versions; do
|
||||
full_version=$(echo "$available_versions" | grep "$major_minor_version." | tail -n1)
|
||||
echo "install ghc version $full_version..."
|
||||
|
||||
@@ -254,9 +254,6 @@ $androidTools.AddTable($(Build-AndroidTable))
|
||||
|
||||
$androidTools.AddHeader("Environment variables").AddTable($(Build-AndroidEnvironmentTable))
|
||||
|
||||
if (-not $(Test-IsUbuntu24)) {
|
||||
$installedSoftware.AddHeader("Cached Docker images").AddTable($(Get-CachedDockerImagesTableData))
|
||||
}
|
||||
$installedSoftware.AddHeader("Installed apt packages").AddTable($(Get-AptPackages))
|
||||
|
||||
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/software-report.json" -Encoding UTF8NoBOM
|
||||
|
||||
@@ -266,11 +266,6 @@ function Get-PowerShellModules {
|
||||
$result += [ToolVersionsListNode]::new("Az", $azureInstalledModules, "^\d+\.\d+", "Inline")
|
||||
}
|
||||
|
||||
[Array] $azureCachedModules = Get-ChildItem /usr/share/az_*.zip -File | ForEach-Object { $_.Name.Split("_")[1] }
|
||||
if ($azureCachedModules.Count -gt 0) {
|
||||
$result += [ToolVersionsListNode]::new("Az (Cached)", $azureCachedModules, "^\d+\.\d+", "Inline")
|
||||
}
|
||||
|
||||
(Get-ToolsetContent).powershellModules.name | ForEach-Object {
|
||||
$moduleName = $_
|
||||
$moduleVersions = Get-Module -Name $moduleName -ListAvailable | Select-Object -ExpandProperty Version | Sort-Object -Unique
|
||||
|
||||
@@ -26,7 +26,7 @@ replace_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local variable_value=$2
|
||||
|
||||
# modify /etc/environemnt in place by replacing a string that begins with variable_name
|
||||
# modify /etc/environment in place by replacing a string that begins with variable_name
|
||||
sudo sed -i -e "s%^${variable_name}=.*$%${variable_name}=${variable_value}%" /etc/environment
|
||||
}
|
||||
|
||||
@@ -78,10 +78,10 @@ append_etc_environment_path() {
|
||||
# /etc/environment
|
||||
#
|
||||
# TODO: there might be the others variables to be processed in the same way as "PATH" variable
|
||||
# ie MANPATH, INFOPATH, LD_*, etc. In the current implementation the values from /etc/evironments
|
||||
# ie MANPATH, INFOPATH, LD_*, etc. In the current implementation the values from /etc/environment
|
||||
# replace the values of the current environment
|
||||
reload_etc_environment() {
|
||||
# add `export ` to every variable of /etc/environemnt except PATH and eval the result shell script
|
||||
# add `export ` to every variable of /etc/environment except PATH and eval the result shell script
|
||||
eval $(grep -v '^PATH=' /etc/environment | sed -e 's%^%export %')
|
||||
# handle PATH specially
|
||||
etc_path=$(get_etc_environment_variable PATH)
|
||||
|
||||
@@ -2,12 +2,6 @@ Describe "Haskell" {
|
||||
$GHCCommonPath = "/usr/local/.ghcup/ghc"
|
||||
$GHCVersions = Get-ChildItem -Path $GHCCommonPath | Where-Object { $_.Name -match "\d+\.\d+" }
|
||||
|
||||
$testCase = @{ GHCVersions = $GHCVersions }
|
||||
|
||||
It "GHC directory contains two version of GHC" -TestCases $testCase {
|
||||
$GHCVersions.Count | Should -Be 2
|
||||
}
|
||||
|
||||
$testCases = $GHCVersions | ForEach-Object { @{ GHCPath = "${_}/bin/ghc"} }
|
||||
|
||||
It "GHC version <GHCPath>" -TestCases $testCases {
|
||||
|
||||
@@ -50,15 +50,6 @@ Describe "AzureModules" {
|
||||
$moduleVersion | Should -Match $expectedVersion
|
||||
}
|
||||
}
|
||||
|
||||
if ($module.default) {
|
||||
$moduleInfo = @{ moduleName = $moduleName; moduleDefault = $module.default }
|
||||
|
||||
It "<moduleDefault> set as default" -TestCases $moduleInfo {
|
||||
$moduleVersion = (Get-Module -ListAvailable -Name $moduleName).Version.ToString()
|
||||
$moduleVersion | Should -Match $moduleDefault
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,14 +113,6 @@ Describe "Docker" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Docker images" {
|
||||
$testCases = (Get-ToolsetContent).docker.images | ForEach-Object { @{ ImageName = $_ } }
|
||||
|
||||
It "<ImageName>" -TestCases $testCases {
|
||||
sudo docker images "$ImageName" --format "{{.Repository}}" | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Ansible" {
|
||||
It "Ansible" {
|
||||
"ansible --version" | Should -ReturnZeroExitCode
|
||||
|
||||
@@ -162,7 +162,7 @@ build {
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["HELPER_SCRIPTS=${var.helper_script_folder}", "INSTALLER_SCRIPT_FOLDER=${var.installer_script_folder}", "DOCKERHUB_LOGIN=${var.dockerhub_login}", "DOCKERHUB_PASSWORD=${var.dockerhub_password}"]
|
||||
environment_vars = ["HELPER_SCRIPTS=${var.helper_script_folder}", "INSTALLER_SCRIPT_FOLDER=${var.installer_script_folder}"]
|
||||
execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
scripts = ["${path.root}/../scripts/build/install-docker.sh"]
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ provisioner "shell" {
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["HELPER_SCRIPTS=${var.helper_script_folder}", "INSTALLER_SCRIPT_FOLDER=${var.installer_script_folder}", "DOCKERHUB_PULL_IMAGES=NO"]
|
||||
environment_vars = ["HELPER_SCRIPTS=${var.helper_script_folder}", "INSTALLER_SCRIPT_FOLDER=${var.installer_script_folder}"]
|
||||
execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
scripts = ["${path.root}/../scripts/build/install-docker.sh"]
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
locals {
|
||||
image_properties_map = {
|
||||
"ubuntu22" = {
|
||||
source_image_marketplace_sku = "canonical:0001-com-ubuntu-server-jammy:22_04-lts"
|
||||
source_image_marketplace_sku = "canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2"
|
||||
os_disk_size_gb = 75
|
||||
},
|
||||
"ubuntu24" = {
|
||||
|
||||
@@ -132,14 +132,6 @@ variable "winrm_username" { // The username used to connect to the VM vi
|
||||
}
|
||||
|
||||
// Image related variables
|
||||
variable "dockerhub_login" {
|
||||
type = string
|
||||
default = "${env("DOCKERHUB_LOGIN")}"
|
||||
}
|
||||
variable "dockerhub_password" {
|
||||
type = string
|
||||
default = "${env("DOCKERHUB_PASSWORD")}"
|
||||
}
|
||||
variable "helper_script_folder" {
|
||||
type = string
|
||||
default = "/imagegeneration/helpers"
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
"platform_version": "22.04",
|
||||
"arch": "x64",
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
@@ -73,12 +72,12 @@
|
||||
"java": {
|
||||
"default": "11",
|
||||
"versions": [ "8", "11", "17", "21", "25"],
|
||||
"maven": "3.9.11"
|
||||
"maven": "3.9.12"
|
||||
},
|
||||
"android": {
|
||||
"cmdline-tools": "commandlinetools-linux-9477386_latest.zip",
|
||||
"platform_min_version": "31",
|
||||
"build_tools_min_version": "31.0.0",
|
||||
"platform_min_version": "34",
|
||||
"build_tools_min_version": "34.0.0",
|
||||
"extra_list": [
|
||||
"android;m2repository",
|
||||
"google;m2repository",
|
||||
@@ -94,7 +93,7 @@
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -215,23 +214,6 @@
|
||||
"brew": [
|
||||
],
|
||||
"docker": {
|
||||
"images": [
|
||||
"alpine:3.16",
|
||||
"alpine:3.17",
|
||||
"alpine:3.18",
|
||||
"alpine:3.19",
|
||||
"debian:10",
|
||||
"debian:11",
|
||||
"moby/buildkit:latest",
|
||||
"node:18",
|
||||
"node:20",
|
||||
"node:22",
|
||||
"node:18-alpine",
|
||||
"node:20-alpine",
|
||||
"node:22-alpine",
|
||||
"ubuntu:20.04",
|
||||
"ubuntu:22.04"
|
||||
],
|
||||
"components": [
|
||||
{
|
||||
"package": "containerd.io",
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
"platform_version": "24.04",
|
||||
"arch": "x64",
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
@@ -71,7 +70,7 @@
|
||||
"java": {
|
||||
"default": "17",
|
||||
"versions": [ "8", "11", "17", "21", "25"],
|
||||
"maven": "3.9.11"
|
||||
"maven": "3.9.12"
|
||||
},
|
||||
"android": {
|
||||
"cmdline-tools": "commandlinetools-linux-11076708_latest.zip",
|
||||
@@ -91,7 +90,7 @@
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27", "28", "29"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -192,8 +191,6 @@
|
||||
"brew": [
|
||||
],
|
||||
"docker": {
|
||||
"images": [
|
||||
],
|
||||
"components": [
|
||||
{
|
||||
"package": "containerd.io",
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[Ubuntu & Windows] Four tools scheduled for deprecation on November 3, 2025](https://github.com/actions/runner-images/issues/12898) |
|
||||
| [[Windows/Ubuntu] Docker Server and Client will be updated to version 29.1.*, Docker Compose will be updated to version 2.40.3 on February 9th, 2026](https://github.com/actions/runner-images/issues/13474) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
***
|
||||
# Windows Server 2022
|
||||
- OS Version: 10.0.20348 Build 4405
|
||||
- Image Version: 20251125.125.1
|
||||
- OS Version: 10.0.20348 Build 4529
|
||||
- Image Version: 20260112.2.1
|
||||
|
||||
## Windows features
|
||||
- Windows Subsystem for Linux (WSLv1): Enabled
|
||||
@@ -13,27 +17,27 @@
|
||||
|
||||
### Language and Runtime
|
||||
- Bash 5.2.37(1)-release
|
||||
- Go 1.24.10
|
||||
- Go 1.24.11
|
||||
- Julia 1.12.0
|
||||
- Kotlin 2.2.21
|
||||
- Kotlin 2.3.0
|
||||
- LLVM 20.1.8
|
||||
- Node 20.19.6
|
||||
- Perl 5.32.1
|
||||
- PHP 8.4.15
|
||||
- Python 3.9.13
|
||||
- PHP 8.4.16
|
||||
- Python 3.12.10
|
||||
- Ruby 3.3.10
|
||||
|
||||
### Package Management
|
||||
- Chocolatey 2.5.1
|
||||
- Composer 2.9.2
|
||||
- Helm 4.0.0
|
||||
- Miniconda 25.9.1 (pre-installed on the image but not added to PATH)
|
||||
- Chocolatey 2.6.0
|
||||
- Composer 2.9.3
|
||||
- Helm 4.0.3
|
||||
- Miniconda 25.11.1 (pre-installed on the image but not added to PATH)
|
||||
- NPM 10.8.2
|
||||
- NuGet 7.0.0.289
|
||||
- pip 25.3 (python 3.9)
|
||||
- NuGet 7.0.1.1
|
||||
- pip 25.3 (python 3.12)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 3.5.22
|
||||
- Vcpkg (build from commit 9aee6e968f)
|
||||
- Vcpkg (build from commit fafcc0e93b)
|
||||
- Yarn 1.22.22
|
||||
|
||||
#### Environment variables
|
||||
@@ -44,31 +48,31 @@
|
||||
|
||||
### Project Management
|
||||
- Ant 1.10.15
|
||||
- Gradle 9.1
|
||||
- Maven 3.9.11
|
||||
- sbt 1.11.7
|
||||
- Gradle 9.2
|
||||
- Maven 3.9.12
|
||||
- sbt 1.12.0
|
||||
|
||||
### Tools
|
||||
- 7zip 25.01
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- Bazel 8.4.2
|
||||
- azcopy 10.31.1
|
||||
- Bazel 8.5.1
|
||||
- Bazelisk 1.26.0
|
||||
- Bicep 0.39.26
|
||||
- Cabal 3.16.0.0
|
||||
- Cabal 3.16.1.0
|
||||
- CMake 3.31.6
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- CodeQL Action Bundle 2.23.9
|
||||
- Docker 27.5.1
|
||||
- Docker Compose v2 2.32.2
|
||||
- Docker-wincred 0.9.4
|
||||
- ghc 9.12.2
|
||||
- Docker-wincred 0.9.5
|
||||
- ghc 9.14.1
|
||||
- Git 2.52.0.windows.1
|
||||
- Git LFS 3.7.1
|
||||
- ImageMagick 7.1.2-8
|
||||
- InnoSetup 6.6.1
|
||||
- ImageMagick 7.1.2-10
|
||||
- InnoSetup 6.7.0
|
||||
- jq 1.8.1
|
||||
- Kind 0.30.0
|
||||
- Kubectl 1.34.2
|
||||
- Kind 0.31.0
|
||||
- Kubectl 1.35.0
|
||||
- Mercurial 6.3.1
|
||||
- gcc 14.2.0
|
||||
- gdb 16.2
|
||||
@@ -77,10 +81,10 @@
|
||||
- NSIS 3.10
|
||||
- OpenSSL 3.6.0
|
||||
- Packer 1.14.2
|
||||
- Pulumi 3.207.0
|
||||
- Pulumi 3.215.0
|
||||
- R 4.5.2
|
||||
- Service Fabric SDK 10.1.2493.9590
|
||||
- Stack 3.7.1
|
||||
- Stack 3.9.1
|
||||
- Subversion (SVN) 1.14.5
|
||||
- Swig 4.3.1
|
||||
- VSWhere 3.1.7
|
||||
@@ -91,18 +95,18 @@
|
||||
- Ninja 1.13.2
|
||||
|
||||
### CLI Tools
|
||||
- Alibaba Cloud CLI 3.1.5
|
||||
- AWS CLI 2.32.4
|
||||
- AWS SAM CLI 1.148.0
|
||||
- Alibaba Cloud CLI 3.2.6
|
||||
- AWS CLI 2.32.32
|
||||
- AWS SAM CLI 1.151.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.80.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure DevOps CLI extension 1.0.2
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.83.2
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
@@ -110,18 +114,18 @@
|
||||
- cargo-audit 0.22.0
|
||||
- cargo-outdated 0.17.0
|
||||
- cbindgen 0.29.2
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.92
|
||||
- Rustfmt 1.8.0
|
||||
|
||||
### Browsers and Drivers
|
||||
- Google Chrome 142.0.7444.176
|
||||
- Chrome Driver 142.0.7444.175
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge Driver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Google Chrome 143.0.7499.193
|
||||
- Chrome Driver 143.0.7499.192
|
||||
- Microsoft Edge 143.0.3650.139
|
||||
- Microsoft Edge Driver 143.0.3650.139
|
||||
- Mozilla Firefox 146.0.1
|
||||
- Gecko Driver 0.36.0
|
||||
- IE Driver 4.14.0.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.39.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -162,21 +166,20 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.10
|
||||
- 1.25.4
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
|
||||
#### Node.js
|
||||
- 20.19.5
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Python
|
||||
- 3.9.13
|
||||
- 3.10.11
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.9
|
||||
- 3.14.0
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.20]
|
||||
@@ -188,7 +191,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
### Databases
|
||||
|
||||
@@ -207,7 +210,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
#### MongoDB
|
||||
| Version | ServiceName | ServiceStatus | ServiceStartType |
|
||||
| -------- | ----------- | ------------- | ---------------- |
|
||||
| 7.0.26.0 | MongoDB | Stopped | Disabled |
|
||||
| 7.0.28.0 | MongoDB | Stopped | Disabled |
|
||||
|
||||
### Database tools
|
||||
- Azure CosmosDb Emulator 2.14.25.0
|
||||
@@ -216,18 +219,18 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
- SQL OLEDB Driver 18 18.7.5.0
|
||||
- SQL OLEDB Driver 19 19.4.1.0
|
||||
- SQLPS 1.0
|
||||
- MongoDB Shell (mongosh) 2.5.9
|
||||
- MongoDB Shell (mongosh) 2.5.10
|
||||
|
||||
### Web Servers
|
||||
| Name | Version | ConfigFile | ServiceName | ServiceStatus | ListenPort |
|
||||
| ------ | ------- | ------------------------------------- | ----------- | ------------- | ---------- |
|
||||
| Apache | 2.4.55 | C:\tools\Apache24\conf\httpd.conf | Apache | Stopped | 80 |
|
||||
| Nginx | 1.29.3 | C:\tools\nginx-1.29.3\conf\nginx.conf | nginx | Stopped | 80 |
|
||||
| Nginx | 1.29.4 | C:\tools\nginx-1.29.4\conf\nginx.conf | nginx | Stopped | 80 |
|
||||
|
||||
### Visual Studio Enterprise 2022
|
||||
| Name | Version | Path |
|
||||
| ----------------------------- | ------------- | -------------------------------------------------------- |
|
||||
| Visual Studio Enterprise 2022 | 17.14.36717.8 | C:\Program Files\Microsoft Visual Studio\2022\Enterprise |
|
||||
| Visual Studio Enterprise 2022 | 17.14.36811.4 | C:\Program Files\Microsoft Visual Studio\2022\Enterprise |
|
||||
|
||||
#### Workloads, components and extensions
|
||||
| Package | Version |
|
||||
@@ -238,7 +241,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Component.Dotfuscator | 17.14.36510.44 |
|
||||
| Component.Linux.CMake | 17.14.36510.44 |
|
||||
| Component.Linux.RemoteFileExplorer | 17.14.36510.44 |
|
||||
| Component.MDD.Android | 17.14.36716.0 |
|
||||
| Component.MDD.Android | 17.14.36804.6 |
|
||||
| Component.MDD.Linux | 17.14.36510.44 |
|
||||
| Component.MDD.Linux.GCC.arm | 17.14.36510.44 |
|
||||
| Component.Microsoft.VisualStudio.RazorExtension | 17.14.36510.44 |
|
||||
@@ -246,14 +249,14 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Component.Microsoft.VisualStudio.Web.AzureFunctions | 17.14.36510.44 |
|
||||
| Component.Microsoft.Web.LibraryManager | 17.14.36510.44 |
|
||||
| Component.Microsoft.WebTools.BrowserLink.WebLivePreview | 17.14.2.50506 |
|
||||
| Component.Microsoft.Windows.DriverKit | 10.0.26100.15 |
|
||||
| Component.Microsoft.Windows.DriverKit | 10.0.26100.16 |
|
||||
| Component.OpenJDK | 17.14.36510.44 |
|
||||
| Component.UnityEngine.x64 | 17.14.36510.44 |
|
||||
| Component.Unreal | 17.14.36510.44 |
|
||||
| Component.Unreal.Android | 17.14.36510.44 |
|
||||
| Component.Unreal.Debugger | 17.14.36510.44 |
|
||||
| Component.Unreal.Debugger | 17.14.36809.9 |
|
||||
| Component.Unreal.Ide | 17.14.36510.44 |
|
||||
| Component.VisualStudio.GitHub.Copilot | 17.14.36716.0 |
|
||||
| Component.VisualStudio.GitHub.Copilot | 17.14.36809.9 |
|
||||
| Component.VSInstallerProjects2022 | 2.0.1 |
|
||||
| Component.WixToolset.VisualStudioExtension.Dev17 | 1.0.0.22 |
|
||||
| Component.WixToolset.VisualStudioExtension.Schemas3 | 1.0.0.22 |
|
||||
@@ -400,9 +403,9 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Microsoft.VisualStudio.Component.Web | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.WebDeploy | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.Windows10SDK | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.Windows10SDK.19041 | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.Windows10SDK.19041 | 17.14.36809.9 |
|
||||
| Microsoft.VisualStudio.Component.Windows11SDK.22621 | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.Windows11SDK.26100 | 17.14.36705.7 |
|
||||
| Microsoft.VisualStudio.Component.Windows11SDK.26100 | 17.14.36804.6 |
|
||||
| Microsoft.VisualStudio.Component.Windows11Sdk.WindowsPerformanceToolkit | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.WindowsAppSdkSupport.CSharp | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.Workflow | 17.14.36510.44 |
|
||||
@@ -421,7 +424,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Microsoft.VisualStudio.ComponentGroup.Maui.Windows | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Llvm.Clang | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Llvm.Clang | 17.14.36802.14 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.UWP.NetCoreAndStandard | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.UWP.VC.v142 | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.VC.Tools.142.x86.x64 | 17.14.36510.44 |
|
||||
@@ -442,7 +445,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Microsoft.VisualStudio.Workload.NativeCrossPlat | 17.14.36716.0 |
|
||||
| Microsoft.VisualStudio.Workload.NativeDesktop | 17.14.36517.7 |
|
||||
| Microsoft.VisualStudio.Workload.NativeGame | 17.14.36331.10 |
|
||||
| Microsoft.VisualStudio.Workload.NativeMobile | 17.14.36716.0 |
|
||||
| Microsoft.VisualStudio.Workload.NativeMobile | 17.14.36802.14 |
|
||||
| Microsoft.VisualStudio.Workload.NetCrossPlat | 17.14.36518.2 |
|
||||
| Microsoft.VisualStudio.Workload.NetWeb | 17.14.36518.2 |
|
||||
| Microsoft.VisualStudio.Workload.Node | 17.14.36517.7 |
|
||||
@@ -455,11 +458,11 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| wasm.tools | 9.0.1125.51309 |
|
||||
| ProBITools.MicrosoftAnalysisServicesModelingProjects2022 | 4.0.0 |
|
||||
| ProBITools.MicrosoftReportProjectsforVisualStudio2022 | 4.0.0 |
|
||||
| SSIS.MicrosoftDataToolsIntegrationServices | 2.0 |
|
||||
| SSIS.MicrosoftDataToolsIntegrationServices | 2.1.2 |
|
||||
| VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects | 2.0.1 |
|
||||
| Windows Driver Kit | 10.1.26100.4202 |
|
||||
| Windows Driver Kit Visual Studio Extension | 10.0.26100.15 |
|
||||
| Windows Software Development Kit | 10.1.26100.6901 |
|
||||
| Windows Driver Kit Visual Studio Extension | 10.0.26100.16 |
|
||||
| Windows Software Development Kit | 10.1.26100.7175 |
|
||||
| WixToolset.WixToolsetVisualStudio2022Extension | 1.0.0.22 |
|
||||
|
||||
#### Microsoft Visual C++
|
||||
@@ -481,11 +484,11 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
- 10.0.26100.0
|
||||
|
||||
### .NET Core Tools
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.101
|
||||
- .NET Framework: 4.7.2, 4.8, 4.8.1
|
||||
- Microsoft.AspNetCore.App: 6.0.40, 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.0
|
||||
- Microsoft.NETCore.App: 6.0.40, 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.0
|
||||
- Microsoft.WindowsDesktop.App: 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.0
|
||||
- Microsoft.AspNetCore.App: 6.0.40, 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.1
|
||||
- Microsoft.NETCore.App: 6.0.40, 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.1
|
||||
- Microsoft.WindowsDesktop.App: 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.1
|
||||
- nbgv 3.9.50+6feeb89450
|
||||
|
||||
### PowerShell Tools
|
||||
@@ -493,10 +496,10 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
|
||||
#### Powershell Modules
|
||||
- Az: 12.5.0
|
||||
- AWSPowershell: 5.0.104
|
||||
- AWSPowershell: 5.0.131
|
||||
- DockerMsftProvider: 1.0.0.8
|
||||
- MarkdownPS: 1.10
|
||||
- Microsoft.Graph: 2.32.0
|
||||
- Microsoft.Graph: 2.34.0
|
||||
- Pester: 3.4.0, 5.7.1
|
||||
- PowerShellGet: 1.0.0.1, 2.2.5
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
@@ -505,18 +508,18 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
- VSSetup: 2.2.16
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.0 33.0.1 33.0.2 33.0.3<br>32.0.0<br>31.0.0 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1<br>3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.3.13750724<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 36.3.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>32.0.0 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1<br>3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -534,6 +537,6 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2022 | sha256:ec04e733695f49a0dc9132184f6b06704866b34f422004093c1972512c86259e | 2025-09-09 |
|
||||
| mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2022 | sha256:3983348680840ca6e53ad641e314c3c9184ca2fd19f88bc467600f7d9f6e9d73 | 2025-09-09 |
|
||||
| mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2022 | sha256:460dedaed73224f73ff10dc3ad754d0ed250aa57bcdf6c5052a811b4b7e29345 | 2025-09-09 |
|
||||
| mcr.microsoft.com/windows/nanoserver:ltsc2022 | sha256:0738c9dea37ea0d146c978f6cd384be80c99916c46702c24817a47f5e869d1a9 | 2025-11-05 |
|
||||
| mcr.microsoft.com/windows/servercore:ltsc2022 | sha256:3a2a2fdfbae2f720f6fe26f2d7680146712ce330f605b02a61d624889735c72e | 2025-11-05 |
|
||||
| mcr.microsoft.com/windows/nanoserver:ltsc2022 | sha256:643adf84ee2338ee4811fd891adb9e912917dc6c0ca85399982e1bebda4f2295 | 2025-12-05 |
|
||||
| mcr.microsoft.com/windows/servercore:ltsc2022 | sha256:3750d7fcd320130cc2ce61954902b71729e85ec2c07c5a2e83a6d6c7f34a61e5 | 2025-12-05 |
|
||||
|
||||
|
||||
@@ -1,40 +1,44 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[Ubuntu & Windows] Four tools scheduled for deprecation on November 3, 2025](https://github.com/actions/runner-images/issues/12898) |
|
||||
| [[Windows/Ubuntu] Docker Server and Client will be updated to version 29.1.*, Docker Compose will be updated to version 2.40.3 on February 9th, 2026](https://github.com/actions/runner-images/issues/13474) |
|
||||
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
|
||||
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
|
||||
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
|
||||
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
|
||||
***
|
||||
# Windows Server 2025
|
||||
- OS Version: 10.0.26100 Build 7171
|
||||
- Image Version: 20251125.122.1
|
||||
- OS Version: 10.0.26100 Build 7462
|
||||
- Image Version: 20260105.172.1
|
||||
|
||||
## Windows features
|
||||
- Windows Subsystem for Linux (WSLv1): Enabled
|
||||
- Windows Subsystem for Linux (Default, WSLv2): 2.6.1.0
|
||||
- Windows Subsystem for Linux (Default, WSLv2): 2.6.3.0
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- Bash 5.2.37(1)-release
|
||||
- Go 1.24.10
|
||||
- Go 1.24.11
|
||||
- Julia 1.12.0
|
||||
- Kotlin 2.2.21
|
||||
- Kotlin 2.3.0
|
||||
- LLVM 20.1.8
|
||||
- Node 22.21.1
|
||||
- Perl 5.42.0
|
||||
- PHP 8.4.15
|
||||
- PHP 8.4.16
|
||||
- Python 3.9.13
|
||||
- Ruby 3.3.10
|
||||
|
||||
### Package Management
|
||||
- Chocolatey 2.5.1
|
||||
- Composer 2.9.2
|
||||
- Helm 4.0.0
|
||||
- Miniconda 25.9.1 (pre-installed on the image but not added to PATH)
|
||||
- Chocolatey 2.6.0
|
||||
- Composer 2.9.3
|
||||
- Helm 4.0.3
|
||||
- Miniconda 25.11.1 (pre-installed on the image but not added to PATH)
|
||||
- NPM 10.9.4
|
||||
- NuGet 7.0.0.289
|
||||
- NuGet 7.0.1.1
|
||||
- pip 25.3 (python 3.9)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 3.5.22
|
||||
- Vcpkg (build from commit 9aee6e968f)
|
||||
- Vcpkg (build from commit e3db8f65d2)
|
||||
- Yarn 1.22.22
|
||||
|
||||
#### Environment variables
|
||||
@@ -46,40 +50,40 @@
|
||||
### Project Management
|
||||
- Ant 1.10.15
|
||||
- Gradle 9.1
|
||||
- Maven 3.9.11
|
||||
- Maven 3.9.12
|
||||
- sbt 1.11.7
|
||||
|
||||
### Tools
|
||||
- 7zip 25.01
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- Bazel 8.4.2
|
||||
- Bazel 8.5.0
|
||||
- Bazelisk 1.26.0
|
||||
- Bicep 0.39.26
|
||||
- Cabal 3.16.0.0
|
||||
- Cabal 3.16.1.0
|
||||
- CMake 3.31.6
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- CodeQL Action Bundle 2.23.8
|
||||
- Docker 27.5.1
|
||||
- Docker Compose v2 2.32.2
|
||||
- Docker-wincred 0.9.4
|
||||
- ghc 9.12.2
|
||||
- ghc 9.14.1
|
||||
- Git 2.52.0.windows.1
|
||||
- Git LFS 3.7.1
|
||||
- ImageMagick 7.1.2-8
|
||||
- ImageMagick 7.1.2-10
|
||||
- InnoSetup 6.6.1
|
||||
- jq 1.8.1
|
||||
- Kind 0.30.0
|
||||
- Kubectl 1.34.2
|
||||
- Kind 0.31.0
|
||||
- Kubectl 1.35.0
|
||||
- gcc 15.2.0
|
||||
- gdb 16.3
|
||||
- GNU Binutils 2.45
|
||||
- Newman 6.2.1
|
||||
- OpenSSL 3.6.0
|
||||
- Packer 1.14.2
|
||||
- Pulumi 3.207.0
|
||||
- Pulumi 3.214.1
|
||||
- R 4.5.2
|
||||
- Service Fabric SDK 10.1.2493.9590
|
||||
- Stack 3.7.1
|
||||
- Stack 3.9.1
|
||||
- Swig 4.3.1
|
||||
- VSWhere 3.1.7
|
||||
- WinAppDriver 1.2.2009.02003
|
||||
@@ -89,32 +93,32 @@
|
||||
- Ninja 1.13.2
|
||||
|
||||
### CLI Tools
|
||||
- AWS CLI 2.32.4
|
||||
- AWS SAM CLI 1.148.0
|
||||
- AWS CLI 2.32.28
|
||||
- AWS SAM CLI 1.151.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.80.0
|
||||
- Azure CLI 2.81.0
|
||||
- Azure DevOps CLI extension 1.0.2
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.83.2
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Cargo 1.92.0
|
||||
- Rust 1.92.0
|
||||
- Rustdoc 1.92.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.92
|
||||
- Rustfmt 1.8.0
|
||||
|
||||
### Browsers and Drivers
|
||||
- Google Chrome 142.0.7444.176
|
||||
- Chrome Driver 142.0.7444.175
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge Driver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Google Chrome 143.0.7499.170
|
||||
- Chrome Driver 143.0.7499.169
|
||||
- Microsoft Edge 143.0.3650.96
|
||||
- Microsoft Edge Driver 143.0.3650.96
|
||||
- Mozilla Firefox 146.0.1
|
||||
- Gecko Driver 0.36.0
|
||||
- IE Driver 4.14.0.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.39.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -155,21 +159,21 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.10
|
||||
- 1.25.4
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
|
||||
#### Node.js
|
||||
- 20.19.5
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 24.12.0
|
||||
|
||||
#### Python
|
||||
- 3.9.13
|
||||
- 3.10.11
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.9
|
||||
- 3.14.0
|
||||
- 3.13.11
|
||||
- 3.14.2
|
||||
|
||||
#### PyPy
|
||||
- 3.9.19 [PyPy 7.3.16]
|
||||
@@ -178,7 +182,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.8
|
||||
|
||||
### Databases
|
||||
|
||||
@@ -197,7 +201,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
#### MongoDB
|
||||
| Version | ServiceName | ServiceStatus | ServiceStartType |
|
||||
| -------- | ----------- | ------------- | ---------------- |
|
||||
| 7.0.26.0 | MongoDB | Stopped | Disabled |
|
||||
| 7.0.28.0 | MongoDB | Stopped | Disabled |
|
||||
|
||||
### Database tools
|
||||
- Azure CosmosDb Emulator 2.14.25.0
|
||||
@@ -206,18 +210,18 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
- SQL OLEDB Driver 18 18.7.5.0
|
||||
- SQL OLEDB Driver 19 19.4.1.0
|
||||
- SQLPS 1.0
|
||||
- MongoDB Shell (mongosh) 2.5.9
|
||||
- MongoDB Shell (mongosh) 2.5.10
|
||||
|
||||
### Web Servers
|
||||
| Name | Version | ConfigFile | ServiceName | ServiceStatus | ListenPort |
|
||||
| ------ | ------- | ------------------------------------- | ----------- | ------------- | ---------- |
|
||||
| Apache | 2.4.55 | C:\tools\Apache24\conf\httpd.conf | Apache | Stopped | 80 |
|
||||
| Nginx | 1.29.3 | C:\tools\nginx-1.29.3\conf\nginx.conf | nginx | Stopped | 80 |
|
||||
| Nginx | 1.29.4 | C:\tools\nginx-1.29.4\conf\nginx.conf | nginx | Stopped | 80 |
|
||||
|
||||
### Visual Studio Enterprise 2022
|
||||
| Name | Version | Path |
|
||||
| ----------------------------- | ------------- | -------------------------------------------------------- |
|
||||
| Visual Studio Enterprise 2022 | 17.14.36717.8 | C:\Program Files\Microsoft Visual Studio\2022\Enterprise |
|
||||
| Visual Studio Enterprise 2022 | 17.14.36811.4 | C:\Program Files\Microsoft Visual Studio\2022\Enterprise |
|
||||
|
||||
#### Workloads, components and extensions
|
||||
| Package | Version |
|
||||
@@ -228,7 +232,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Component.Dotfuscator | 17.14.36510.44 |
|
||||
| Component.Linux.CMake | 17.14.36510.44 |
|
||||
| Component.Linux.RemoteFileExplorer | 17.14.36510.44 |
|
||||
| Component.MDD.Android | 17.14.36716.0 |
|
||||
| Component.MDD.Android | 17.14.36804.6 |
|
||||
| Component.MDD.Linux | 17.14.36510.44 |
|
||||
| Component.MDD.Linux.GCC.arm | 17.14.36510.44 |
|
||||
| Component.Microsoft.VisualStudio.RazorExtension | 17.14.36510.44 |
|
||||
@@ -236,12 +240,12 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Component.Microsoft.VisualStudio.Web.AzureFunctions | 17.14.36510.44 |
|
||||
| Component.Microsoft.Web.LibraryManager | 17.14.36510.44 |
|
||||
| Component.Microsoft.WebTools.BrowserLink.WebLivePreview | 17.14.2.50506 |
|
||||
| Component.Microsoft.Windows.DriverKit | 10.0.26100.15 |
|
||||
| Component.Microsoft.Windows.DriverKit | 10.0.26100.16 |
|
||||
| Component.OpenJDK | 17.14.36510.44 |
|
||||
| Component.UnityEngine.x64 | 17.14.36510.44 |
|
||||
| Component.Unreal.Debugger | 17.14.36510.44 |
|
||||
| Component.Unreal.Debugger | 17.14.36809.9 |
|
||||
| Component.Unreal.Ide | 17.14.36510.44 |
|
||||
| Component.VisualStudio.GitHub.Copilot | 17.14.36716.0 |
|
||||
| Component.VisualStudio.GitHub.Copilot | 17.14.36809.9 |
|
||||
| Component.VSInstallerProjects2022 | 2.0.1 |
|
||||
| Component.WixToolset.VisualStudioExtension.Dev17 | 1.0.0.22 |
|
||||
| Component.WixToolset.VisualStudioExtension.Schemas3 | 1.0.0.22 |
|
||||
@@ -386,7 +390,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Microsoft.VisualStudio.Component.Web | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.WebDeploy | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.Windows10SDK | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.Windows11SDK.26100 | 17.14.36705.7 |
|
||||
| Microsoft.VisualStudio.Component.Windows11SDK.26100 | 17.14.36804.6 |
|
||||
| Microsoft.VisualStudio.Component.Windows11Sdk.WindowsPerformanceToolkit | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.WindowsAppSdkSupport.CSharp | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.Component.Workflow | 17.14.36510.44 |
|
||||
@@ -405,7 +409,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Microsoft.VisualStudio.ComponentGroup.Maui.Windows | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Llvm.Clang | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Llvm.Clang | 17.14.36802.14 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.UWP.NetCoreAndStandard | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.UWP.VC.v142 | 17.14.36510.44 |
|
||||
| Microsoft.VisualStudio.ComponentGroup.VC.Tools.142.x86.x64 | 17.14.36510.44 |
|
||||
@@ -426,7 +430,7 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Microsoft.VisualStudio.Workload.NativeCrossPlat | 17.14.36716.0 |
|
||||
| Microsoft.VisualStudio.Workload.NativeDesktop | 17.14.36517.7 |
|
||||
| Microsoft.VisualStudio.Workload.NativeGame | 17.14.36331.10 |
|
||||
| Microsoft.VisualStudio.Workload.NativeMobile | 17.14.36716.0 |
|
||||
| Microsoft.VisualStudio.Workload.NativeMobile | 17.14.36802.14 |
|
||||
| Microsoft.VisualStudio.Workload.NetCrossPlat | 17.14.36518.2 |
|
||||
| Microsoft.VisualStudio.Workload.NetWeb | 17.14.36518.2 |
|
||||
| Microsoft.VisualStudio.Workload.Node | 17.14.36517.7 |
|
||||
@@ -439,10 +443,10 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| wasm.tools | 9.0.1125.51309 |
|
||||
| ProBITools.MicrosoftAnalysisServicesModelingProjects2022 | 4.0.0 |
|
||||
| ProBITools.MicrosoftReportProjectsforVisualStudio2022 | 4.0.0 |
|
||||
| SSIS.MicrosoftDataToolsIntegrationServices | 2.0 |
|
||||
| SSIS.MicrosoftDataToolsIntegrationServices | 2.1.2 |
|
||||
| VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects | 2.0.1 |
|
||||
| Windows Driver Kit Visual Studio Extension | 10.0.26100.15 |
|
||||
| Windows Software Development Kit | 10.1.26100.6901 |
|
||||
| Windows Driver Kit Visual Studio Extension | 10.0.26100.16 |
|
||||
| Windows Software Development Kit | 10.1.26100.7175 |
|
||||
| WixToolset.WixToolsetVisualStudio2022Extension | 1.0.0.22 |
|
||||
|
||||
#### Microsoft Visual C++
|
||||
@@ -461,11 +465,11 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
- 10.0.26100.0
|
||||
|
||||
### .NET Core Tools
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.101
|
||||
- .NET Framework: 4.8, 4.8.1
|
||||
- Microsoft.AspNetCore.App: 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.0
|
||||
- Microsoft.NETCore.App: 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.0
|
||||
- Microsoft.WindowsDesktop.App: 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.0
|
||||
- Microsoft.AspNetCore.App: 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.1
|
||||
- Microsoft.NETCore.App: 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.1
|
||||
- Microsoft.WindowsDesktop.App: 8.0.6, 8.0.22, 9.0.6, 9.0.11, 10.0.1
|
||||
- nbgv 3.9.50+6feeb89450
|
||||
|
||||
### PowerShell Tools
|
||||
@@ -473,10 +477,10 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
|
||||
#### Powershell Modules
|
||||
- Az: 12.5.0
|
||||
- AWSPowershell: 5.0.104
|
||||
- AWSPowershell: 5.0.127
|
||||
- DockerMsftProvider: 1.0.0.8
|
||||
- MarkdownPS: 1.10
|
||||
- Microsoft.Graph: 2.32.0
|
||||
- Microsoft.Graph: 2.34.0
|
||||
- Pester: 3.4.0, 5.7.1
|
||||
- PowerShellGet: 1.0.0.1, 2.2.5
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
@@ -488,10 +492,10 @@ Note: MSYS2 is pre-installed on image but not added to PATH.
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android Emulator | 36.3.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.2 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.30.5<br>3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
|
||||
@@ -26,20 +26,6 @@ foreach ($module in $modules) {
|
||||
$psModuleMachinePath += "$modulePath;"
|
||||
Save-Module -Path $modulePath -Name $moduleName -RequiredVersion $version -Force -ErrorAction Stop
|
||||
}
|
||||
|
||||
foreach ($version in $module.zip_versions) {
|
||||
$modulePath = Join-Path -Path $installPSModulePath -ChildPath "${moduleName}_${version}"
|
||||
Save-Module -Path $modulePath -Name $moduleName -RequiredVersion $version -Force -ErrorAction Stop
|
||||
Compress-Archive -Path $modulePath -DestinationPath "${modulePath}.zip"
|
||||
Remove-Item $modulePath -Recurse -Force
|
||||
}
|
||||
# Append default tool version to machine path
|
||||
if ($null -ne $module.default) {
|
||||
$defaultVersion = $module.default
|
||||
|
||||
Write-Host "Use ${moduleName} ${defaultVersion} as default version..."
|
||||
$psModuleMachinePath += "${installPSModulePath}\${moduleName}_${defaultVersion};"
|
||||
}
|
||||
}
|
||||
|
||||
# Add modules to the PSModulePath
|
||||
|
||||
@@ -213,7 +213,7 @@ function Get-DotnetFrameworkVersions {
|
||||
|
||||
function Get-PowerShellAzureModules {
|
||||
[Array] $result = @()
|
||||
$defaultAzureModuleVersion = "2.1.0"
|
||||
$defaultAzureModuleVersion = "12.5.0"
|
||||
|
||||
[Array] $azInstalledModules = Get-ChildItem -Path "C:\Modules\az_*" -Directory | ForEach-Object { $_.Name.Split("_")[1] }
|
||||
if ($azInstalledModules.Count -gt 0) {
|
||||
@@ -230,21 +230,6 @@ function Get-PowerShellAzureModules {
|
||||
$result += [ToolVersionsListNode]::new("AzureRM", $($azurermInstalledModules), '^\d+\.\d+', "Inline")
|
||||
}
|
||||
|
||||
[Array] $azCachedModules = Get-ChildItem -Path "C:\Modules\az_*.zip" -File | ForEach-Object { $_.Name.Split("_")[1] }
|
||||
if ($azCachedModules.Count -gt 0) {
|
||||
$result += [ToolVersionsListNode]::new("Az (Cached)", $($azCachedModules), '^\d+\.\d+', "Inline")
|
||||
}
|
||||
|
||||
[Array] $azureCachedModules = Get-ChildItem -Path "C:\Modules\azure_*.zip" -File | ForEach-Object { $_.Name.Split("_")[1] }
|
||||
if ($azureCachedModules.Count -gt 0) {
|
||||
$result += [ToolVersionsListNode]::new("Azure (Cached)", $($azureCachedModules), '^\d+\.\d+', "Inline")
|
||||
}
|
||||
|
||||
[Array] $azurermCachedModules = Get-ChildItem -Path "C:\Modules\azurerm_*.zip" -File | ForEach-Object { $_.Name.Split("_")[1] }
|
||||
if ($azurermCachedModules.Count -gt 0) {
|
||||
$result += [ToolVersionsListNode]::new("AzureRM (Cached)", $($azurermCachedModules), '^\d+\.\d+', "Inline")
|
||||
}
|
||||
|
||||
return $result
|
||||
}
|
||||
|
||||
|
||||
@@ -27,14 +27,6 @@ Describe "AzureModules" {
|
||||
$moduleVersion | Should -Match $expectedVersion
|
||||
}
|
||||
}
|
||||
|
||||
if ($module.default) {
|
||||
$moduleInfo = @{ moduleName = $moduleName; moduleDefault = $module.default }
|
||||
It "<moduleDefault> set as default" -TestCases $moduleInfo {
|
||||
$moduleVersions = Get-Module -ListAvailable -Name $moduleName | ForEach-Object { $_.Version.ToString() }
|
||||
$moduleVersions | Should -Contain $moduleDefault
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ locals {
|
||||
os_disk_size_gb = 256
|
||||
},
|
||||
"win22" = {
|
||||
source_image_marketplace_sku = "MicrosoftWindowsServer:WindowsServer:2022-Datacenter"
|
||||
source_image_marketplace_sku = "MicrosoftWindowsServer:WindowsServer:2022-Datacenter-g2"
|
||||
os_disk_size_gb = 256
|
||||
},
|
||||
"win25" = {
|
||||
|
||||
@@ -94,8 +94,6 @@
|
||||
"name": "az",
|
||||
"versions": [
|
||||
"12.5.0"
|
||||
],
|
||||
"zip_versions": [
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
@@ -17,14 +17,13 @@
|
||||
"arch": "x64",
|
||||
"platform" : "win32",
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
],
|
||||
"default": "3.9.*"
|
||||
"default": "3.12.*"
|
||||
},
|
||||
{
|
||||
"name": "Python",
|
||||
@@ -32,7 +31,6 @@
|
||||
"arch": "x86",
|
||||
"platform" : "win32",
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
@@ -93,9 +91,6 @@
|
||||
"name": "az",
|
||||
"versions": [
|
||||
"12.5.0"
|
||||
],
|
||||
"zip_versions": [
|
||||
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -106,8 +101,8 @@
|
||||
"android": {
|
||||
"commandline_tools_url": "https://dl.google.com/android/repository/commandlinetools-win-9123335_latest.zip",
|
||||
"hash": "8A90E6A3DEB2FA13229B2E335EFD07687DCC8A55A3C544DA9F40B41404993E7D",
|
||||
"platform_min_version": "31",
|
||||
"build_tools_min_version": "31.0.0",
|
||||
"platform_min_version": "34",
|
||||
"build_tools_min_version": "34.0.0",
|
||||
"extras": [
|
||||
"android;m2repository",
|
||||
"google;m2repository",
|
||||
@@ -122,7 +117,7 @@
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27", "28", "29"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -17,14 +17,13 @@
|
||||
"arch": "x64",
|
||||
"platform" : "win32",
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
],
|
||||
"default": "3.9.*"
|
||||
"default": "3.12.*"
|
||||
},
|
||||
{
|
||||
"name": "PyPy",
|
||||
@@ -77,8 +76,7 @@
|
||||
"name": "az",
|
||||
"versions": [
|
||||
"12.5.0"
|
||||
],
|
||||
"zip_versions": []
|
||||
]
|
||||
}
|
||||
],
|
||||
"java": {
|
||||
@@ -104,7 +102,7 @@
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27", "28", "29"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user