CLDR-18155 Recommended edits #12180
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: cldr-mvn | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
git-ref: | |
description: Git Ref (Optional) | |
required: false | |
jobs: | |
formatter: | |
name: Formatter + Style checker | |
runs-on: ubuntu-latest | |
steps: | |
# since we have to checkout all branches, cache here | |
- name: Cache .git | |
uses: actions/cache@v4 | |
with: | |
path: .git | |
key: git-${{ github.base_ref }}-${{ github.sha }} | |
restore-keys: | | |
git-${{ github.base_ref }}-${{ github.sha }} | |
git-${{ github.base_ref }} | |
git- | |
- name: Checkout CLDR | |
uses: actions/checkout@v4 | |
with: | |
lfs: false | |
fetch-depth: 0 # fetch all branches so that Spotless can resolve `origin/main` | |
- name: Lint GitHub Actions | |
run: npx yaml-lint .github/workflows/*.yml | |
- name: Cache local Maven repository | |
uses: actions/cache@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-mavenspotless-${{ hashFiles('tools/**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-mavenspotless- | |
- name: Check Java style | |
run: mvn --file=tools/pom.xml spotless:check || (echo "Style checker failed. Formatting changes can be applied by 'mvn spotless:apply'" && exit 1) | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone Repository | |
uses: actions/checkout@v4 | |
with: | |
lfs: false | |
fetch-depth: 0 # Needed for cldr-archive | |
if: github.event.inputs.git-ref == '' | |
- name: Clone Repository (manual ref) | |
uses: actions/checkout@v4 | |
with: | |
lfs: false | |
fetch-depth: 0 # Needed for cldr-archive | |
ref: ${{ github.event.inputs.git-ref }} | |
if: github.event.inputs.git-ref != '' | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 11 | |
distribution: 'temurin' | |
- name: Cache local Maven repository | |
uses: actions/cache@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('tools/**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
- name: Cache local npm repository | |
uses: actions/cache@v4 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
node- | |
- name: Cache webpack | |
uses: actions/cache@v4 | |
with: | |
path: tools/cldr-apps/target/webpack_cache | |
key: ${{ runner.os }}-webpack-${{ hashFiles('tools/cldr-apps/package*') }}-${{ hashFiles('tools/cldr-apps/src/**') }} | |
restore-keys: | | |
${{ runner.os }}-webpack- | |
webpack- | |
- name: Build with Maven | |
run: > | |
mvn -s .github/workflows/mvn-settings.xml -B compile install package --file tools/pom.xml | |
-DskipTests=true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: DataDog sourcemap upload | |
# only on push to main! | |
if: github.repository == 'unicode-org/cldr' && github.event_name == 'push' && github.ref == 'refs/heads/main' && github.event.inputs.git-ref == '' | |
run: npx --package=@datadog/datadog-ci datadog-ci sourcemaps upload tools/cldr-apps/src/main/webapp/dist/ --minified-path-prefix=/cldr-apps/dist/ --release-version=r${{ github.sha }} --service=surveytool | |
env: | |
DATADOG_SITE: ${{ secrets.DATADOG_SITE }} | |
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }} | |
- name: Checkout CLDR archive | |
run: > | |
mkdir -v ../cldr-archive && java -jar tools/cldr-code/target/cldr-code.jar checkout-archive | |
- name: Build liberty server | |
run: > | |
mvn -s .github/workflows/mvn-settings.xml -B -pl cldr-apps liberty:create liberty:deploy liberty:package -Dinclude=usr --file tools/pom.xml | |
-DskipTests=true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Cleanup liberty server | |
run: > | |
zip tools/cldr-apps/target/cldr-apps.zip -d wlp/usr/servers/cldr/apps/expanded/\* | |
- name: Upload cldr-apps.zip | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cldr-apps-server | |
path: tools/cldr-apps/target/cldr-apps.zip | |
- name: Upload cldr-code.jar | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cldr-code | |
path: tools/cldr-code/target/cldr-code.jar | |
- name: BOM check in .xml files | |
run: > | |
mvn -s .github/workflows/mvn-settings.xml --file tools/pom.xml -pl cldr-code | |
exec:java -Dexec.mainClass=org.unicode.cldr.util.XMLValidator | |
-Dexec.cleanupDaemonThreads=false | |
-Dexec.args="-q --justCheckBom exemplars seed common keyboards" | |
&& echo 'No XML BOM detected' | |
- name: Schema check common/main in .xml files | |
run: > | |
mvn -s .github/workflows/mvn-settings.xml --file tools/pom.xml -pl cldr-code | |
exec:java -Dexec.mainClass=org.unicode.cldr.util.XMLValidator | |
-Dexec.cleanupDaemonThreads=false | |
-Dexec.args="-q --schema=common/dtd/ldml.xsd common/main" | |
|| (echo 'Schema failed, rerun GenerateDtd' ; exit 0) | |
- name: Keyboard Schema Check | |
run: > | |
mvn -s .github/workflows/mvn-settings.xml --file tools/pom.xml -pl cldr-code | |
exec:java -Dexec.mainClass=org.unicode.cldr.util.XMLValidator | |
-Dexec.cleanupDaemonThreads=false | |
-Dexec.args="--schema=keyboards/dtd/ldmlKeyboard.xsd keyboards/3.0" | |
|| (echo 'Schema failed, rerun GenerateDtd' ; exit 0) | |
- name: Keyboard Test Schema Check | |
run: > | |
mvn -s .github/workflows/mvn-settings.xml --file tools/pom.xml -pl cldr-code | |
exec:java -Dexec.mainClass=org.unicode.cldr.util.XMLValidator | |
-Dexec.cleanupDaemonThreads=false | |
-Dexec.args="--schema=keyboards/dtd/ldmlKeyboardTest.xsd keyboards/test" | |
|| (echo 'Schema failed, rerun GenerateDtd' ; exit 0) | |
- name: Setup MySQL | |
run: | | |
sudo systemctl start mysql.service | |
sleep 3 | |
mysql --user=root --password=root < tools/cldr-apps/test-setup.sql | |
- name: Test with maven | |
run: > | |
mvn -s .github/workflows/mvn-settings.xml -B test --file tools/pom.xml | |
'-Dorg.unicode.cldr.unittest.web.jdbcurl=jdbc:mysql://cldrtest:VbrB3LFCr6A!@localhost/cldrtest?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC' | |
'-Dorg.unicode.cldr.unittest.web.KeepDb=true' -DCLDR_GITHUB_ANNOTATIONS=true | |
'-Dorg.unicode.cldr.unittest.testArgs=-e10 -n' | |
'-Dorg.unicode.cldr.unittest.web.testArgs=-e10 -n' | |
'-Dorg.unicode.cldr.api.testArgs=-e10 -n' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone Repository | |
uses: actions/checkout@v4 | |
with: | |
lfs: false | |
if: github.event.inputs.git-ref == '' | |
- name: Clone Repository (manual ref) | |
uses: actions/checkout@v4 | |
with: | |
lfs: false | |
ref: ${{ github.event.inputs.git-ref }} | |
if: github.event.inputs.git-ref != '' | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 11 | |
distribution: 'temurin' | |
- name: Cache local Maven repository | |
uses: actions/cache@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-mavencheck-${{ hashFiles('tools/**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-mavencheck- | |
- name: Build with Maven | |
run: > | |
mvn -s .github/workflows/mvn-settings.xml -B compile package --file tools/pom.xml -pl cldr-code -DskipTests=true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: run CLDR console check | |
run: java -DCLDR_GITHUB_ANNOTATIONS=true -DCLDR_DIR=$(pwd) -Xmx6g -jar tools/cldr-code/target/cldr-code.jar check -S common,seed -e -z FINAL_TESTING | |
deploy: | |
# don't run deploy on manual builds! | |
if: github.repository == 'unicode-org/cldr' && github.event_name == 'push' && github.ref == 'refs/heads/main' && github.event.inputs.git-ref == '' | |
needs: | |
- build | |
- check | |
- formatter | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download cldr-apps.zip | |
uses: actions/download-artifact@v4 | |
with: | |
name: cldr-apps-server | |
- name: Deploy to cldr-smoke | |
# Deploys only on push to main. | |
# Does not deploy for PRs. | |
if: ${{ github.event_name == 'push' }} | |
shell: bash | |
env: | |
# the RSA key for connecting | |
RSA_KEY_SURVEYTOOL: ${{ secrets.RSA_KEY_SURVEYTOOL }} | |
# the SSH port | |
SMOKETEST_PORT: ${{ secrets.SMOKETEST_PORT }} | |
# the SSH host | |
SMOKETEST_HOST: ${{ secrets.SMOKETEST_HOST }} | |
# the ~/.ssh/known_hosts line mentioning SMOKETEST_HOST | |
SMOKETEST_KNOWNHOSTS: ${{ secrets.SMOKETEST_KNOWNHOSTS }} | |
run: | | |
echo "${RSA_KEY_SURVEYTOOL}" > .key && chmod go= .key | |
echo "${SMOKETEST_KNOWNHOSTS}" > .knownhosts && chmod go= .knownhosts | |
ssh -C -o UserKnownHostsFile=.knownhosts -i .key -p ${SMOKETEST_PORT} surveytool@${SMOKETEST_HOST} bash /usr/local/bin/deploy-to-openliberty.sh < cldr-apps.zip ${GITHUB_SHA} --override |