CLDR-16292 Plural rules in Spanish should return different ordinal types for number 1 and 3 #16806
Workflow file for this run
This file contains hidden or 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 | |
| env: | |
| ## uncomment only ONE of these | |
| CLDR_CHECK_MODE: FINAL_TESTING | |
| # CLDR_CHECK_MODE: BUILD | |
| 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) | |
| - name: Restore lychee cache | |
| uses: actions/cache@v3 | |
| with: | |
| path: .lycheecache | |
| key: cache-lychee-${{ github.sha }} | |
| restore-keys: cache-lychee- | |
| - name: Run lychee on PathDescriptions.md | |
| uses: lycheeverse/lychee-action@v1 | |
| with: | |
| args: "-n --cache --max-cache-age 10d tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/PathDescriptions.md" | |
| fail: true | |
| format: markdown | |
| output: linkcheck.md | |
| - name: Link Checker Summary PathDescriptions.md | |
| run: cat linkcheck.md >> $GITHUB_STEP_SUMMARY | |
| - name: 'spec: Check that tr35-modifications.md was updated' | |
| if: github.event_name == 'pull_request' | |
| run: bash tools/scripts/tr-archive/check-mod-section.sh HEAD origin/${{ github.base_ref }} | |
| package: | |
| name: "Package up CLDR" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Clone Repository | |
| uses: actions/checkout@v4 | |
| with: | |
| lfs: false | |
| fetch-depth: 0 # Needed for cldr-archive | |
| - 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: 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 | |
| # we remove the 'expanded' version of the .war file, to save space | |
| 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 | |
| build: | |
| #Cannot change the name, it's a required step. | |
| #name: "Build / Unit-test" | |
| 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: Checkout CLDR archive | |
| run: > | |
| mkdir -v ../cldr-archive && java -jar tools/cldr-code/target/cldr-code.jar checkout-archive | |
| env: | |
| GIT_LFS_SKIP_SMUDGE: 1 | |
| - 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: | |
| #Cannot change the name, it's a required step. | |
| #name: "Run ConsoleCheckCLDR" | |
| 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 ${CLDR_CHECK_MODE} | |
| - 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) | |
| servertest: | |
| name: "Docker test cldr-apps" | |
| needs: | |
| - package | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Clone Repository | |
| uses: actions/checkout@v4 | |
| with: | |
| lfs: false | |
| - run: mkdir -p tools/cldr-apps/target | |
| - name: Download cldr-apps.zip | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: cldr-apps-server | |
| path: tools/cldr-apps/target/cldr-apps.zip | |
| - 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: 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: Pull Images | |
| run: docker compose pull -q | |
| working-directory: tools/cldr-apps | |
| - name: Build Containers | |
| run: docker compose build | |
| working-directory: tools/cldr-apps | |
| - name: Bringup Containers | |
| run: docker compose up -d cldr-apps selenium | |
| working-directory: tools/cldr-apps | |
| - name: Build webdriver | |
| run: docker compose run -v ~/.m2/repository:/root/.m2/repository:rw --rm webdriver mvn -B test-compile | |
| working-directory: tools/cldr-apps | |
| - name: Test with Webdriver | |
| # See tools/cldr-apps/README.md | |
| run: > | |
| docker compose run -v ~/.m2/repository:/root/.m2/repository:rw --rm webdriver || ( docker compose exec -it cldr-apps tail /logs/messages.log ; true ) | |
| working-directory: tools/cldr-apps | |
| - name: Prepare client tests | |
| run: docker run --rm -v ~/.npm:/root/.npm:rw -v $(pwd)/js:/home/node/app:rw -w /home/node/app node npm ci | |
| working-directory: tools/cldr-apps | |
| - name: Run client tests against ST | |
| run: docker compose run --rm client-test || ( docker compose exec -it cldr-apps tail /logs/messages.log ; false ) | |
| working-directory: tools/cldr-apps | |
| - name: Shut down containers | |
| run: docker compose stop || true | |
| working-directory: tools/cldr-apps | |
| deploy: | |
| name: "Deploy to cldr-smoke for testing" | |
| # 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 | |
| - package | |
| # - servertest | |
| 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 |