Skip to content

Add npm lint to ui tests maven build (#1184) #373

Add npm lint to ui tests maven build (#1184)

Add npm lint to ui tests maven build (#1184) #373

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Copyright 2021 Adobe Systems Incorporated
#
# 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.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
name: Deploy to Cloud Manager
concurrency: deploy
env:
CM_PROJECT_DIR: cm-project
# Cloud Manager git connection details
CM_REPO: ${{ secrets.CM_REPO }}
CM_BRANCH: ${{ secrets.CM_BRANCH }}
CM_USER_EMAIL: ${{ secrets.CM_USER_EMAIL }}
CM_USER_NAME: ${{ secrets.CM_USER_NAME }}
CM_USER_PWD: ${{ secrets.CM_USER_PWD }}
# Only run on a push to develop branch or manually
on:
push:
branches: [ develop ]
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
outputs:
commit: ${{ steps.getCommit.outputs.commit }}
steps:
# Checkout this project into a sub folder
- uses: actions/checkout@v2
with:
path: archetype
# Set up dependency cache
- name: Cache local Maven repository
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('archetype/**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
# Install archetype snapshot and store version in a variable
- name: Install archetype snapshot and store version in a variable
run: |
cd archetype
mvn clean install -Darchetype.test.skip
echo "ARCHETYPE_VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_ENV
echo "ARCHETYPE_COMMIT=$(git rev-parse HEAD)" >> $GITHUB_ENV
cd ..
- name: Set commit in output variable
id: getCommit
run: |
echo "Commit: ${ARCHETYPE_COMMIT}"
echo ::set-output name=commit::${ARCHETYPE_COMMIT}
# Create new project
- name: Create new project with the archetype
run: |
mvn -B archetype:generate \
-D archetypeGroupId=com.adobe.aem \
-D archetypeArtifactId=aem-project-archetype \
-D archetypeVersion=${ARCHETYPE_VERSION} \
-D appTitle="Sites 30 Demo" \
-D appId="sitesdemo" \
-D groupId="com.sites30demo" \
-D includeExamples="y" \
-D includeFormsenrollment="y"
# Set global git configuration
- name: Set git config
run: |
git config --global credential.helper cache
git config --global user.email ${CM_USER_EMAIL}
git config --global user.name ${CM_USER_NAME}
# Checkout the CM project
- name: Checkout Cloud Manager project
run:
git clone -b ${CM_BRANCH} https://${CM_USER_NAME}:${CM_USER_PWD}@${CM_REPO} ${CM_PROJECT_DIR}
# Move new project to CM dir and enable opt-in for ui.tests execution
- name: Move project to CM dir
run: |
shopt -s dotglob
git -C ${CM_PROJECT_DIR} rm -rf .
mv sitesdemo/* ${CM_PROJECT_DIR}
sed -i -e "s/USA/USA, ${ARCHETYPE_COMMIT}/g" ${CM_PROJECT_DIR}/ui.content/src/main/content/jcr_root/content/experience-fragments/sitesdemo/us/en/site/footer/master/.content.xml
sed -i -e "s/merge/replace/g" ${CM_PROJECT_DIR}/ui.content/src/main/content/META-INF/vault/filter.xml
sed -i -e "s#<include>Dockerfile</include>#<include>Dockerfile</include>\n \t\t\t\t<include>testing.properties</include>#" ${CM_PROJECT_DIR}/ui.tests/assembly-ui-test-docker-context.xml
echo -n "ui-tests.version=1" > ${CM_PROJECT_DIR}/ui.tests/testing.properties
# Commit and push changes to CM repo
- name: Commit Changes
run: |
git -C archetype log --format="%an : %s" -n 1 > commit.txt
git -C ${CM_PROJECT_DIR} add .
git -C ${CM_PROJECT_DIR} commit -F ../commit.txt
git -C ${CM_PROJECT_DIR} push
check:
needs: deploy
runs-on: ubuntu-latest
strategy:
matrix:
envName: [DEV, PROD]
environment: ${{ matrix.envName }}
continue-on-error: ${{ matrix.envName == 'PROD' }}
env:
# Cloud Manager deployment testing details
CM_TEST_URL: ${{ secrets.CM_TEST_URL }}
CM_TEST_RETRIES: ${{ secrets.CM_TEST_RETRIES }}
ARCHETYPE_COMMIT: ${{ needs.deploy.outputs.commit }}
steps:
# Check project was deployed
- name: Check project was deployed
run: |
counter=0
max=${CM_TEST_RETRIES}
echo "Looking for ${ARCHETYPE_COMMIT}: ${counter}"
until [[ $(curl --silent ${CM_TEST_URL}\?$(date +%s) | grep ${ARCHETYPE_COMMIT}) ]]; do \
if [ ${counter} -eq ${max} ]; then \
echo "Could not find ${ARCHETYPE_COMMIT} after ${counter} tries!"; \
exit 1; \
fi;
counter=$(($counter+1)); \
echo "Looking for ${ARCHETYPE_COMMIT}: ${counter}"; \
sleep 60; \
done
echo "Found ${ARCHETYPE_COMMIT} after ${counter} tries!"