Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
9822687
SITES-46234 - Add GitHub Actions CI/release workflows
alwinjoseph02 Jul 16, 2026
4151d3a
SITES-46234 - Fix stale parent version reference in it/site
alwinjoseph02 Jul 16, 2026
c92710d
SITES-46234 - Drop JDK 21 from the build matrix in ci.yml
alwinjoseph02 Jul 17, 2026
208ddce
SITES-46234 - Remove broken test-reporter step for experience-platfor…
alwinjoseph02 Jul 17, 2026
65003e1
SITES-46234 - Fix it/site build failure in the GH Actions test-aem job
alwinjoseph02 Jul 17, 2026
dd8a00b
SITES-46234 - Scope it-tests.js's root-level mvn calls to avoid full …
alwinjoseph02 Jul 17, 2026
24420bc
SITES-46234 - Bump dorny/test-reporter to v3 to fix Node 20 deprecati…
alwinjoseph02 Jul 17, 2026
b1ab4ee
SITES-46234 - Fix duplicate CI runs and missing Artifactory env in te…
alwinjoseph02 Jul 17, 2026
2c41dca
SITES-46234 - Cache ~/.m2 in test-aem to avoid cold-cache re-downloads
alwinjoseph02 Jul 17, 2026
afea811
SITES-46234 - Split test-aem's Maven cache into restore/save with if:…
alwinjoseph02 Jul 17, 2026
b3368e8
SITES-46234 - Force RMI hostname advertisement on the aem service con…
alwinjoseph02 Jul 17, 2026
ce371d0
SITES-46234 - Drive qp/aem containers with --network host instead of …
alwinjoseph02 Jul 17, 2026
04d0302
SITES-46234 - Wire COMMERCE_ENDPOINT/COMMERCE_INTEGRATION_TOKEN into …
alwinjoseph02 Jul 17, 2026
54f6962
SITES-46234 - Fix dorny/test-reporter crash on failsafe-summary.xml
alwinjoseph02 Jul 19, 2026
cccd19f
SITES-46234 - Install Chrome/chromedriver for selenium runs in the qp…
alwinjoseph02 Jul 19, 2026
5b0ccd1
SITES-46234 - Bump upload-artifact to v5 and download-artifact to v6
alwinjoseph02 Jul 20, 2026
93c8ae9
SITES-46234 - Fix Maven cache EACCES, add verification, and CACHE_VER…
alwinjoseph02 Jul 20, 2026
8e6f497
SITES-46234 - Bump actions/cache/restore and /save to v5
alwinjoseph02 Jul 20, 2026
dae0dee
SITES-46234 - Remove Report cache restore outcome step
alwinjoseph02 Jul 20, 2026
e03c7c8
SITES-46234 - Trim low-value Debug context steps
alwinjoseph02 Jul 20, 2026
4ba6532
SITES-46234 - Bump remaining actions to Node 24-ready versions
alwinjoseph02 Jul 20, 2026
5d556a8
SITES-46234 - Revert actions/setup-java to v4: v5.5.0 breaks collectC…
alwinjoseph02 Jul 20, 2026
ed1e9c4
SITES-46234 - Render test results to the Job Summary page
alwinjoseph02 Jul 20, 2026
1a1131d
SITES-46234 - Remove Verify Maven cache is populated step
alwinjoseph02 Jul 20, 2026
4134b1f
SITES-46234 - Remove dorny/test-reporter from test-aem
alwinjoseph02 Jul 20, 2026
e008655
SITES-46234 - Remove remaining Debug context steps (build, karma)
alwinjoseph02 Jul 20, 2026
d6adf4f
SITES-46234 - Keep aem container alive for SSH debug sessions
alwinjoseph02 Jul 20, 2026
0fdd1e5
SITES-46234 - Standardize on dorny/test-reporter everywhere, always c…
alwinjoseph02 Jul 20, 2026
62ea087
SITES-46234 - Also set list-suites/list-files: failed on dorny/test-r…
alwinjoseph02 Jul 20, 2026
709d73f
SITES-46234 - Replace dorny/test-reporter with mikepenz/action-junit-…
alwinjoseph02 Jul 20, 2026
5cc3a8d
SITES-46234 - Only publish test results on failure, not every run
alwinjoseph02 Jul 21, 2026
0f3b7e8
SITES-46234 - Bump upload-artifact to v6 and download-artifact to v7
alwinjoseph02 Jul 21, 2026
4d08024
SITES-46234 - Add temporary deliberately-failing test to verify CI re…
alwinjoseph02 Jul 21, 2026
03bb9d1
SITES-46234 - Revert temporary CI reporting failure test
alwinjoseph02 Jul 21, 2026
25995c8
SITES-46234 - Remove CircleCI references from GitHub Actions files
alwinjoseph02 Jul 24, 2026
f698b42
SITES-46234 - Remove environment: release gate from release job
alwinjoseph02 Jul 24, 2026
049db10
SITES-46234 - Add per-job timeout-minutes to GitHub Actions workflows
alwinjoseph02 Jul 29, 2026
a0aad7f
Karma unit tests fail on Firefox 153 due to window.CIF not being init…
alwinjoseph02 Jul 31, 2026
ce36e57
Merge branch 'master' into SITES-46234
LSantha Aug 5, 2026
5fb16bf
SITES-46234:Fix git impersonation name and restrict release tag filte…
alwinjoseph02 Aug 6, 2026
deb2686
SITES-46234 - Fix test-aem matrix silently collapsing to 2 legs inste…
alwinjoseph02 Aug 7, 2026
88b628a
Merge branch 'master' into SITES-46234
alwinjoseph02 Aug 7, 2026
2f8e775
SITES-46234 - Publish test results on every run, not only failures
alwinjoseph02 Aug 7, 2026
09a9511
SITES-46234 - Show full per-test-case results, not just pass/fail counts
alwinjoseph02 Aug 7, 2026
b1ac60f
SITES-46234 - Log every test case in the step console, not just failures
alwinjoseph02 Aug 10, 2026
1b4e84e
Revert "SITES-46234 - Log every test case in the step console, not ju…
alwinjoseph02 Aug 10, 2026
95e5a53
SITES-46234 - Group per-test-case table by suite to keep job pages sh…
alwinjoseph02 Aug 10, 2026
82b7505
SITES-46234: Removes the circleci references
alwinjoseph02 Aug 10, 2026
bbc1071
SITES-46234 - Preserve CircleCI job naming for the test-aem matrix
alwinjoseph02 Aug 10, 2026
a7c0abf
Merge branch 'master' into SITES-46234
LSantha Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
475 changes: 0 additions & 475 deletions .circleci/config.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,5 @@
- [ ] I have updated the documentation accordingly.
- [ ] I have read the **CONTRIBUTING** document.
- [ ] I have added tests to cover my changes and the overall coverage did not decrease.
- [ ] All unit tests pass on CircleCi.
- [ ] All unit tests pass on CI.
- [ ] I ran all tests locally and they pass.
5 changes: 4 additions & 1 deletion .circleci/ci/build.js → .github/scripts/build.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Copyright 2019 Adobe
~ Copyright 2026 Adobe
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
Expand All @@ -15,6 +15,9 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
'use strict';

// Build entry point for the GitHub Actions `build` job: collects module metadata via
// ci.js, runs `mvn clean install`, and copies the surefire XML into test-results/junit.

const ci = new (require('./ci.js'))();
const path = require('path');

Expand Down
6 changes: 5 additions & 1 deletion .circleci/ci/ci.js → .github/scripts/ci.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Copyright 2019 Adobe
~ Copyright 2026 Adobe
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
Expand All @@ -15,6 +15,10 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
'use strict';

// Shared CI helper for the GitHub Actions build/test/deploy scripts (build.js, it-tests.js,
// deploy-queries.js): thin wrappers over child_process for staged shell steps, POM parsing,
// and configuration.json handling.

const e = require('child_process');
const fs = require('fs');
const path = require('path');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Copyright 2022 Adobe
~ Copyright 2026 Adobe
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
Expand All @@ -15,6 +15,11 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
'use strict';

// Regenerates and pushes the GraphQL query definitions to
// adobe/commerce-cif-graphql-integration-reference (run by the deploy-queries job in
// release.yml). The SSH deploy key is provided via webfactory/ssh-agent in release.yml,
// so this clones over SSH directly.

const { readFileSync, writeFileSync } = require('fs');

const ci = new (require('./ci.js'))();
Expand All @@ -27,8 +32,8 @@ ci.stage('Push changes to reference repo');
// Parse POM to get version
const { version } = ci.parsePom();

// Checkout public rep
ci.checkout(`https://github.com/adobe/${repo}.git`);
// Checkout public repo over SSH (deploy key is already loaded into the ssh-agent)
ci.checkout(`git@github.com:adobe/${repo}.git`);

// Commit and push
ci.dir(repo, () => {
Expand All @@ -51,7 +56,7 @@ ci.dir(repo, () => {
}

const tagName = `components-queries-${version}`;
ci.gitImpersonate('CircleCI', 'no-reply@adobe.com', () => {
ci.gitImpersonate('GitHub-Actions', 'no-reply@adobe.com', () => {
if (doCommit) {
// Commit and push changes
ci.sh(`git commit -m "releng - Update Queries for CIF Core Components v${version}"`);
Expand Down
100 changes: 100 additions & 0 deletions .github/scripts/install-chrome.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#!/usr/bin/env bash
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Copyright 2026 Adobe
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Ensures a matched Chrome + chromedriver pair exists as system binaries inside the qp
# container before running selenium specs. The qp image already ships google-chrome
# but not chromedriver, so in practice only chromedriver gets installed (matched to the
# image's own Chrome version); the Chrome apt install runs only if a future image drops
# it. wdio.conf.local.js ("DO NOT MODIFY") resolves chromedriver via
# `command -v chromedriver`, not an npm module, so this - not adding a chromedriver
# npm dependency - is the actual fix.
#
# Ported from aem-cif-guides-venia's .github/ci/install-chrome.sh, which hit and
# solved this exact problem first.

set -euo pipefail

# Only install Chrome if the image doesn't already ship it. The qp image already carries
# a google-chrome, so an apt-get install here would just upgrade it - wasting a ~134 MB
# download to replace a browser that already works. Honor whatever Chrome is present and
# only match chromedriver to it below. This block runs only if a future image drops Chrome.
if ! command -v google-chrome >/dev/null 2>&1; then
if command -v apt-get >/dev/null 2>&1; then
# The base image may already have an unsigned google-chrome apt source configured,
# which makes apt-get update fail before we get a chance to install the signing key
# below (which overwrites that source with a properly signed one).
sudo apt-get update || true
command -v wget >/dev/null 2>&1 || sudo apt-get install -y wget
command -v gpg >/dev/null 2>&1 || sudo apt-get install -y gnupg
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
sudo apt-get update
sudo apt-get install -y google-chrome-stable
fi
fi

# Install a chromedriver matching whatever Chrome is present - the image's own version if
# the block above was skipped, or the freshly installed stable otherwise. The qp image
# ships Chrome but not chromedriver, so this is normally the only part that actually runs.
if ! command -v chromedriver >/dev/null 2>&1; then
chrome_version="$(google-chrome --version | awk '{print $3}' | cut -d. -f1)"
driver_version="$(curl -s "https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_${chrome_version}")"
curl -sSL "https://storage.googleapis.com/chrome-for-testing-public/${driver_version}/linux64/chromedriver-linux64.zip" -o /tmp/chromedriver.zip
sudo unzip -o /tmp/chromedriver.zip -d /tmp
sudo mv /tmp/chromedriver-linux64/chromedriver /usr/local/bin/chromedriver
sudo chmod +x /usr/local/bin/chromedriver
fi

# run-containerized-test.sh runs this container as root (needed to write into the
# bind-mounted workspace), but Chrome's sandbox refuses to run as root, and
# wdio.conf.local.js ("DO NOT MODIFY") never passes --no-sandbox. Without it every
# headless session fails instantly with "DevToolsActivePort file doesn't exist",
# which fails every single spec.
#
# Wrapping only the "google-chrome"/"google-chrome-stable" launcher script is NOT
# enough: selenium-standalone's chromedriver launches the real leaf binary
# (/opt/google/chrome/chrome) directly, bypassing a wrapper placed on the launcher.
# So wrap every Chrome entry point chromedriver might exec -- the launcher script(s)
# AND the underlying leaf binary -- idempotently, so the flags apply no matter which
# path is invoked. (A double --no-sandbox from chained wrappers is harmless.)
wrap_with_no_sandbox() {
local target="$1"
[[ -n "${target}" && -f "${target}" ]] || return 0
# Idempotency guard: presence of the ".real" backup means we already wrapped it.
# (Do NOT grep the target for "--no-sandbox" -- Chrome's leaf binary embeds that
# switch name as a string, which would be a false positive and skip the binary
# that actually needs wrapping.)
[[ -f "${target}.real" ]] && return 0
sudo cp "${target}" "${target}.real"
sudo tee "${target}" >/dev/null <<WRAPPER
#!/usr/bin/env bash
exec "${target}.real" --no-sandbox --disable-dev-shm-usage "\$@"
WRAPPER
sudo chmod +x "${target}"
}

if [[ "$(id -u)" -eq 0 ]]; then
chrome_launcher="$(readlink -f "$(command -v google-chrome-stable 2>/dev/null || command -v google-chrome)")"
wrap_with_no_sandbox "${chrome_launcher}"
# The launcher script exec's this sibling leaf binary; chromedriver may also
# launch it directly. This is the one that actually needs --no-sandbox as root.
wrap_with_no_sandbox "$(dirname "${chrome_launcher}")/chrome"
fi

google-chrome --version
chromedriver --version
Loading
Loading