Build latest IANA data #5
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: Build latest IANA data | |
on: | |
workflow_dispatch: | |
jobs: | |
build-data: | |
name: Fetch and build latest data from IANA | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
cache: npm | |
- name: Install dependencies | |
run: npm ci | |
# This differs slightly from the default `grunt data` flow. We want to explicitly compile | |
# `zic` and `zdump` to avoid relying on whatever version is on the action runners. | |
- name: Download tzdata and tzcode | |
run: | | |
npx grunt --verbose clean data-download | |
npx grunt --verbose data-download --fetch-tzcode | |
- name: Build zic and zdump | |
run: | | |
pushd temp/download/latest | |
make clean | |
make | |
popd | |
- name: Generate new data | |
run: | | |
npx grunt --verbose data-meta \ | |
data-zic --zic-path=./temp/download/latest/zic \ | |
data-zdump --zdump-path=./temp/download/latest/zdump \ | |
data-collect \ | |
data-dedupe \ | |
data-pack \ | |
data-tests | |
# The PR-specific workflow doesn't seem to run for PRs created by other workflows, | |
# so we run the tests manually here just in case | |
- name: Run tests | |
run: npm test | |
# Create a PR even if tests fail, so the branch can be pulled down locally to debug errors | |
continue-on-error: true | |
# Prepare version metadata for use in PR creation | |
- name: Prepare metadata | |
id: meta | |
run: | | |
echo "TZDATA_VERSION=$(cat temp/download/latest/version)" >> "$GITHUB_OUTPUT" | |
echo -e "This contains the following changes from tzdb (edit this to remove details irrelevant to this project):\n\n\`\`\`" > temp/pr-body.txt | |
awk '/^Release [[:digit:]]{4}/ {\ | |
if (used != 1) { used = 1; active = 1 }\ | |
else { active = 0 }\ | |
} { if (active == 1) print }' \ | |
temp/download/latest/NEWS >> temp/pr-body.txt | |
echo "\`\`\`" >> temp/pr-body.txt | |
- name: Create pull request | |
uses: peter-evans/create-pull-request@v6 | |
with: | |
author: 'github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>' | |
branch: automated/data-update | |
commit-message: 'data: Add ${{ steps.meta.outputs.TZDATA_VERSION }}' | |
title: 'data: Add ${{ steps.meta.outputs.TZDATA_VERSION }}' | |
body-path: temp/pr-body.txt | |
reviewers: ${{ github.actor }} |