@@ -2,110 +2,86 @@ name: Build Hello Theme
22description : Build Hello Theme with specified version
33
44inputs :
5- HELLO_THEME_VERSION :
6- description : ' The Hello Theme version to build (e.g. 3.4.4, main )'
5+ PACKAGE_VERSION :
6+ description : ' The package version to build (e.g. 3.4.4)'
77 required : true
88 BUILD_SCRIPT_PATH :
99 description : ' Path to build script'
1010 required : false
11- default : " npm run zip"
12-
13- outputs :
14- hello-theme-version :
15- description : ' The Hello Theme version that was built'
16- value : ${{ steps.set-version.outputs.hello-theme-version }}
17- hello-theme-source :
18- description : ' Source type used for Hello Theme (github or wordpress-org)'
19- value : ${{ steps.determine-source.outputs.source-type }}
11+ default : " npm run build:prod"
2012
2113runs :
2214 using : " composite"
2315 steps :
24- - name : Determine source type
25- id : determine-source
26- shell : bash
27- run : |
28- # Hello Theme builds from GitHub for workflow testing (like Hello Commerce)
29- # This ensures we have workflows and tests available
30- echo "source-type=github" >> $GITHUB_OUTPUT
31- echo "🔍 Using GitHub source for Hello Theme version: ${{ inputs.HELLO_THEME_VERSION }}"
32-
33- - name : Checkout Hello Theme source
16+ - name : Install npm dependencies
3417 shell : bash
35- env :
36- HELLO_THEME_VERSION : ${{ inputs.HELLO_THEME_VERSION }}
3718 run : |
38- echo "🔄 Checking out Hello Theme version: ${HELLO_THEME_VERSION}"
39-
40- # Hello Theme builds from current repo like Hello Commerce
41- if [[ "$HELLO_THEME_VERSION" != "main" ]]; then
42- # Check if it's a semantic version (add 'v' prefix)
43- if [[ "$HELLO_THEME_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
44- echo "📋 Checking out Git tag: v${HELLO_THEME_VERSION}"
45- git fetch --all --tags
46- git checkout "v${HELLO_THEME_VERSION}" || git checkout "${HELLO_THEME_VERSION}" || {
47- echo "⚠️ Version v${HELLO_THEME_VERSION} not found, trying without 'v' prefix"
48- git checkout "${HELLO_THEME_VERSION}" || {
49- echo "❌ Version ${HELLO_THEME_VERSION} not found, using current version"
50- }
51- }
52- else
53- # Branch name or other format
54- echo "📋 Checking out branch/ref: ${HELLO_THEME_VERSION}"
55- git fetch --all
56- git checkout "${HELLO_THEME_VERSION}" || {
57- echo "❌ Branch ${HELLO_THEME_VERSION} not found, using current version"
58- }
59- fi
60- else
61- echo "📋 Using main branch (already checked out)"
62- fi
19+ export PUPPETEER_SKIP_DOWNLOAD=true
20+ export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
6321
64- # Verify we have the theme files
65- if [ ! -f "functions.php" ]; then
66- echo "❌ Hello Theme functions.php not found after checkout"
67- exit 1
68- fi
69-
70- - name : Set version outputs
71- id : set-version
72- shell : bash
73- env :
74- HELLO_THEME_VERSION : ${{ inputs.HELLO_THEME_VERSION }}
75- run : |
76- # Get actual version from the checked out code
77- if [ -f "functions.php" ]; then
78- ACTUAL_VERSION=$(grep "HELLO_ELEMENTOR_VERSION" functions.php | sed "s/.*'\([^']*\)'.*/\1/" | head -1)
79- if [[ -n "$ACTUAL_VERSION" ]]; then
80- echo "✅ Detected Hello Theme version from functions.php: $ACTUAL_VERSION"
81- echo "hello-theme-version=$ACTUAL_VERSION" >> $GITHUB_OUTPUT
22+ # Enhanced retry logic for npm ci with registry fallbacks and cache clearing
23+ for i in {1..3}; do
24+ echo "🔄 Attempt $i/3: Installing npm dependencies..."
25+
26+ # Try npm ci first
27+ if npm ci --prefer-offline --no-audit --no-fund --silent; then
28+ echo "✅ npm ci succeeded on attempt $i"
29+ break
8230 else
83- echo "⚠️ Could not detect version from functions.php, using input: $HELLO_THEME_VERSION"
84- echo "hello-theme-version=$HELLO_THEME_VERSION" >> $GITHUB_OUTPUT
31+ echo "❌ npm ci failed on attempt $i"
32+
33+ # Check if it's a 403/registry error and clear cache
34+ if [ $i -lt 3 ]; then
35+ echo "🧹 Clearing npm cache to resolve potential registry issues..."
36+ npm cache clean --force 2>/dev/null || true
37+ echo "⏳ Waiting 30 seconds before retry..."
38+ sleep 30
39+ else
40+ echo "⚠️ npm ci failed all attempts, trying advanced fallbacks..."
41+
42+ # Fallback 1: Clear cache and try npm install
43+ echo "🔄 Fallback 1: Clearing cache and using npm install..."
44+ npm cache clean --force 2>/dev/null || true
45+ if npm install --legacy-peer-deps --no-audit --no-fund; then
46+ echo "✅ npm install fallback succeeded"
47+ break
48+ fi
49+
50+ # Fallback 2: Use different registry
51+ echo "🔄 Fallback 2: Trying with public registry explicitly..."
52+ if NPM_CONFIG_REGISTRY=https://registry.npmjs.org/ npm install --legacy-peer-deps --no-audit --no-fund; then
53+ echo "✅ Public registry fallback succeeded"
54+ break
55+ fi
56+
57+ # Fallback 3: Install without package-lock
58+ echo "🔄 Fallback 3: Installing without package-lock.json..."
59+ mv package-lock.json package-lock.json.backup 2>/dev/null || true
60+ if npm install --legacy-peer-deps --no-audit --no-fund; then
61+ echo "✅ No-lock installation succeeded"
62+ mv package-lock.json.backup package-lock.json 2>/dev/null || true
63+ break
64+ fi
65+ mv package-lock.json.backup package-lock.json 2>/dev/null || true
66+
67+ echo "💥 All npm installation methods failed"
68+ exit 1
69+ fi
8570 fi
86- else
87- echo "⚠️ functions.php not found, using input: $HELLO_THEME_VERSION"
88- echo "hello-theme-version=$HELLO_THEME_VERSION" >> $GITHUB_OUTPUT
89- fi
90-
91- - name : Install npm dependencies
92- shell : bash
93- run : |
94- export PUPPETEER_SKIP_DOWNLOAD=true
95- npm ci
71+ done
9672
9773 - name : Install composer dependencies
9874 shell : bash
9975 run : |
100- composer install --no-dev --no-scripts --optimize-autoloader
76+ composer install --no-dev --no-scripts --optimize-autoloader --quiet
10177
10278 - name : Set package version
10379 shell : bash
10480 env :
105- HELLO_THEME_VERSION : ${{ steps.set-version.outputs.hello-theme-version }}
81+ PACKAGE_VERSION : ${{ inputs.PACKAGE_VERSION }}
10682 run : |
107- echo "HELLO_THEME_VERSION =${HELLO_THEME_VERSION }" >> $GITHUB_ENV
108- echo "Building Hello Theme version: ${HELLO_THEME_VERSION }"
83+ echo "PACKAGE_VERSION =${PACKAGE_VERSION }" >> $GITHUB_ENV
84+ echo "Building Hello Theme version: ${PACKAGE_VERSION }"
10985
11086 - name : Build Hello Theme
11187 shell : bash
@@ -124,33 +100,20 @@ runs:
124100 - name : Package Hello Theme
125101 shell : bash
126102 env :
127- HELLO_THEME_VERSION : ${{ steps.set-version.outputs.hello-theme-version }}
103+ PACKAGE_VERSION : ${{ inputs.PACKAGE_VERSION }}
128104 run : |
129- # Create zip file with proper naming (following Hello Theme's pattern)
130- # Hello Theme generates: hello-elementor.{version}.zip
131- if [ -f "hello-elementor.${HELLO_THEME_VERSION}.zip" ]; then
132- # Use existing zip from npm run zip
133- mv "hello-elementor.${HELLO_THEME_VERSION}.zip" "/tmp/hello-theme-builds/"
134- echo "✅ Found and moved existing zip: hello-elementor.${HELLO_THEME_VERSION}.zip"
135- elif [ -f "hello-elementor.zip" ]; then
136- # Rename generic zip to versioned
137- mv "hello-elementor.zip" "/tmp/hello-theme-builds/hello-elementor.${HELLO_THEME_VERSION}.zip"
138- echo "✅ Renamed hello-elementor.zip to hello-elementor.${HELLO_THEME_VERSION}.zip"
139- else
140- # Create zip manually if npm run zip didn't work as expected
141- echo "⚠️ No existing zip found, creating manually..."
142- zip -r "/tmp/hello-theme-builds/hello-elementor.${HELLO_THEME_VERSION}.zip" . \
143- -x "node_modules/*" "test-results/*" "tests/*" ".git/*" "*.zip" \
144- "playwright-report/*" ".wp-env.json.*" ".wp-env" "vendor/*"
145- fi
105+ # Create zip file with proper naming (following Hello Commerce pattern)
106+ zip -r "/tmp/hello-theme-builds/hello-elementor-${PACKAGE_VERSION}.zip" . \
107+ -x "node_modules/*" "test-results/*" "tests/*" ".git/*" "*.zip" \
108+ "playwright-report/*" ".wp-env.json.*" ".wp-env"
146109
147110 - name : Move build to workspace
148111 shell : bash
149112 env :
150- HELLO_THEME_VERSION : ${{ steps.set-version.outputs.hello-theme-version }}
113+ PACKAGE_VERSION : ${{ inputs.PACKAGE_VERSION }}
151114 run : |
152- mv "/tmp/hello-theme-builds/hello-elementor.${HELLO_THEME_VERSION }.zip" \
153- "./hello-elementor.${HELLO_THEME_VERSION }.zip"
115+ mv "/tmp/hello-theme-builds/hello-elementor-${PACKAGE_VERSION }.zip" \
116+ "./hello-elementor-${PACKAGE_VERSION }.zip"
154117
155- echo "✅ Hello Theme build completed: hello-elementor.${HELLO_THEME_VERSION }.zip"
156- ls -la hello-elementor. *.zip
118+ echo "✅ Hello Theme build completed: hello-elementor-${PACKAGE_VERSION }.zip"
119+ ls -la hello-elementor- *.zip
0 commit comments