current commit
260915.12 · tools: avoid workflow shell interpolation
name: Timezone update
on:
  schedule:
    # Run once a week at 00:05 AM UTC on Sunday.
    - cron: 5 0 * * 0

  workflow_dispatch:

permissions:
  contents: read

jobs:
  timezone_update:
    permissions:
      contents: write  # to push local changes (gr2m/create-or-update-pull-request-action)
      pull-requests: write  # to create a PR (gr2m/create-or-update-pull-request-action)

    if: github.repository == 'nodejs/node'
    # cannot use ubuntu-slim here because it does not have icupkg
    runs-on: ubuntu-latest

    steps:
      - name: Checkout nodejs/node
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1  # v7.0.1
        with:
          persist-credentials: false

      - name: Checkout unicode-org/icu-data
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1  # v7.0.1
        with:
          path: icu-data
          persist-credentials: false
          repository: unicode-org/icu-data

      - name: Record new version
        run: echo "new_version=$(ls icu-data/tzdata/icunew | tail -1)" >> $GITHUB_ENV

      - name: Record current version
        run: echo "current_version=$(cat ./test/fixtures/tz-version.txt)" >> $GITHUB_ENV

      - name: Compare versions
        run: |
          echo "Comparing current version $current_version to new version $new_version"

      - run: ./tools/dep_updaters/update-timezone.mjs
        if: ${{ env.new_version != env.current_version }}

      - name: Update the expected timezone version in test
        if: ${{ env.new_version != env.current_version }}
        run: printf '%s\n' "$new_version" > test/fixtures/tz-version.txt

      - name: Open Pull Request
        if: ${{ env.new_version != env.current_version }}
        # Create a PR or update the Action's existing PR
        uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b  # v1.10.1
        env:
          GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
        with:
          author: Node.js GitHub Bot <github-bot@iojs.org>
          body: |
            This PR was generated by `.github/workflows/timezone-update.yml` and `tools/dep_updaters/update-timezone.mjs`.

            Updates the ICU files as per the instructions present in https://github.com/nodejs/node/blob/main/doc/contributing/maintaining/maintaining-icu.md#time-zone-data

            To test, build node off this branch & log the version of tz using
            ```js
            console.log(process.versions.tz)
            ```
          branch: actions/timezone-update
          commit-message: 'deps: update timezone to ${{ env.new_version }}'
          labels: dependencies
          title: 'deps: update timezone to ${{ env.new_version }}'
          reviewers: \@nodejs/i18n-api
          update-pull-request-title-and-body: true