Skip to content

Commit

Permalink
Merge branch 'main' into shields-brazil
Browse files Browse the repository at this point in the history
  • Loading branch information
claysmalley authored Oct 6, 2023
2 parents 3a7e6a6 + 9efee5b commit a965a20
Show file tree
Hide file tree
Showing 215 changed files with 22,126 additions and 8,364 deletions.
86 changes: 86 additions & 0 deletions .github/workflows/build-preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Build PR Preview
on:
pull_request:
branches: [main]
types:
- opened
- reopened
- synchronize
workflow_dispatch:
permissions:
contents: read
pages: write
pull-requests: write
id-token: write
checks: write
concurrency: preview-${{ github.ref }}
jobs:
deploy-preview:
runs-on: ubuntu-latest
steps:
- name: Checkout Main Branch 🛎️
uses: actions/checkout@v3
with:
ref: main
- name: Install and Build Main Branch 🔧
run: |
npm ci --include=dev
npm run build
npm run style
npm run shields
cp src/configs/config.aws.js src/config.js
- name: Capture main branch usage statistics
id: main-stats
run: |
MAIN_STATS=$(node scripts/stats.js -j)
echo "MAIN_STATS<<EOF" >> $GITHUB_ENV
echo -e "$MAIN_STATS" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Checkout PR Branch 🛎️
uses: actions/checkout@v3
- name: Use Node.js 18.16.1
uses: actions/setup-node@v3
with:
node-version: 18.16.1 #18.17.0 is buggy
- name: Install and Build 🔧
# TODO: when we move shieldlib to its own repo, move shieldlib docs CI also
run: |
npm ci --include=dev
npm run build
npm run style
npm run shields
cp src/configs/config.aws.js src/config.js
mkdir -p dist/shield-docs
cp -r shieldlib/docs/* dist/shield-docs
- name: Upload Build artifact
uses: actions/upload-artifact@v3
with:
name: americana
path: dist/
- name: Capture PR branch usage statistics
id: pr-stats
run: |
PR_STATS=$(node scripts/stats.js -j)
echo "PR_STATS<<EOF" >> $GITHUB_ENV
echo -e "$PR_STATS" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Compare Stats
id: compare-stats
run: |
mkdir -p pr
echo '${{ env.MAIN_STATS }}'
echo '${{ env.PR_STATS }}'
npm exec ts-node scripts/stats_compare '${{ env.MAIN_STATS }}' '${{ env.PR_STATS }}' > pr/stats-difference.md
- name: Save PR artifacts
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_SHA: ${{ github.event.pull_request.head.sha }}
run: |
echo $PR_NUMBER > pr/pr_number
echo $PR_SHA > pr/pr_sha
echo "Saved PR# ${{ github.event.pull_request.number }}, SHA# ${{ github.event.pull_request.head.sha }} for upload"
- name: Upload PR artifacts
uses: actions/upload-artifact@v3
with:
name: pr_ci_artifacts
path: pr/
140 changes: 140 additions & 0 deletions .github/workflows/deploy-pr-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: Deploy PR Preview
on:
workflow_run:
workflows: [Build PR Preview]
types:
- completed
workflow_dispatch:
jobs:
deploy-preview:
runs-on: ubuntu-latest
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
steps:
- name: "Download PR Number"
uses: actions/github-script@v6
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "pr_ci_artifacts"
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr_ci_artifacts.zip`, Buffer.from(download.data));
- name: "Download Build"
uses: actions/github-script@v6
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "americana"
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/americana.zip`, Buffer.from(download.data));
- name: "Unzip artifacts"
run: |
unzip pr_ci_artifacts.zip
unzip -d dist americana.zip
- name: Set PR variable
run: |
if [ ! -f pr_number ] || [ ! -f pr_sha ]; then
echo "Required files pr_number or pr_sha do not exist. Exiting."
exit 1
fi
PR_NUM=$(cat pr_number)
PR_SHA=$(cat pr_sha)
if [ -z "$PR_NUM" ] || [ -z "$PR_SHA" ]; then
echo "PR_NUM or PR_SHA is empty. Exiting."
exit 1
fi
echo "Configuring deployment for PR# $PR_NUM commit $PR_SHA"
echo "PR_NUM=$PR_NUM" >> $GITHUB_ENV
echo "PR_SHA=$PR_SHA" >> $GITHUB_ENV
- name: Deploy via S3
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete --exclude '.git/*' --exclude '.github/*'
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
SOURCE_DIR: "./dist"
DEST_DIR: pr/${{ env.PR_NUM }}
- name: Wait for PR Preview Upload (1x Sprite)
uses: cygnetdigital/[email protected]
with:
url: "https://preview.ourmap.us/pr/${{ env.PR_NUM }}/sprites/sprite.png"
responseCode: "200"
timeout: 120000
interval: 500
- name: Wait for PR Preview Upload (2x Sprite)
uses: cygnetdigital/[email protected]
with:
url: "https://preview.ourmap.us/pr/${{ env.PR_NUM }}/sprites/[email protected]"
responseCode: "200"
timeout: 120000
interval: 500
- name: Generate Preview text
run: |
echo "## PR Preview:
* [Map](https://preview.ourmap.us/pr/${{ env.PR_NUM }}/)
* [Shield Test](https://preview.ourmap.us/pr/${{ env.PR_NUM }}/shieldtest.html)
* [style.json](https://preview.ourmap.us/pr/${{ env.PR_NUM }}/style.json)
* [shields.json](https://preview.ourmap.us/pr/${{ env.PR_NUM }}/shields.json)
* [taginfo.json](https://preview.ourmap.us/pr/${{ env.PR_NUM }}/taginfo.json)
## Sprite Sheets:
<img src="https://preview.ourmap.us/pr/${{ env.PR_NUM }}/sprites/sprite.png" />
<img src="https://preview.ourmap.us/pr/${{ env.PR_NUM }}/sprites/[email protected]" />
" > pr_preview.md
- uses: tibdex/github-app-token@v1
id: checks_token
with:
app_id: 396440 #osm-americana checks app
private_key: ${{ secrets.CHECKS_WRITER_SECRET }}
- name: Print Preview Links to GitHub Checks
uses: LouisBrunner/[email protected]
if: always()
with:
sha: ${{ env.PR_SHA }}
token: ${{ steps.checks_token.outputs.token }}
name: PR Preview
details_url: https://preview.ourmap.us/pr/${{ env.PR_NUM }}/
conclusion: neutral
output: |
{"summary":"Preview map changes introduced by this PR", "title":"View live map and artifacts"}
output_text_description_file: pr_preview.md
- name: Print Stats to GitHub Checks
uses: LouisBrunner/[email protected]
if: always()
with:
sha: ${{ env.PR_SHA }}
token: ${{ steps.checks_token.outputs.token }}
name: Style Performance
conclusion: neutral
output: |
{"summary":"Style size changes introduced by this PR", "title":"View metrics on style size changes"}
output_text_description_file: stats-difference.md
11 changes: 9 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ permissions:
contents: read
pages: write
id-token: write
concurrency: preview-${{ github.ref }}
jobs:
# TODO remove old PRs from s3 bucket automatically
build-and-deploy:
runs-on: ubuntu-latest
environment:
Expand All @@ -18,15 +20,20 @@ jobs:
steps:
- name: Checkout 🛎️
uses: actions/checkout@v3
- name: Use Node.js 17.x
- name: Use Node.js 18.16.1
uses: actions/setup-node@v3
with:
node-version: 17.x
node-version: 18.16.1 #18.17.0 is buggy
- name: Install and Build 🔧
# TODO: when we move shieldlib to its own repo, move shieldlib docs CI also
run: |
npm ci --include=dev
cp src/configs/config.aws.js src/config.js
npm run build
npm run style
npm run shields
mkdir -p dist/shield-docs
cp -r shieldlib/docs/* dist/shield-docs
- name: Upload 🏗
uses: actions/upload-pages-artifact@v1
with:
Expand Down
34 changes: 34 additions & 0 deletions .github/workflows/test-build-mac.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Test Build (MacOS)

on:
pull_request:
branches: [main]

jobs:
build:
runs-on: macos-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v3
# Node v18.17.0, introduced July 18, 2023, introduces an error in unicode processing that breaks test cases on Ubuntu.
# See PR #905 and #908 for more details.
# If this bug is resolved in node, these lines can revert to 18.x rather than 18.16.0.
- name: Use Node.js 18.16.1
uses: actions/setup-node@v3
with:
node-version: 18.16.1
- name: Build Shield Library 🛡️
run: |
cd shieldlib
npm ci --include=dev
npm run build
- name: Install and Build 🔧
run: |
npm ci --include=dev
npm run build
npm run style
- name: Test 🧪
run: |
npm test
cd shieldlib
npm test
34 changes: 34 additions & 0 deletions .github/workflows/test-build-ubuntu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Test Build (Ubuntu)

on:
pull_request:
branches: [main]

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v3
# Node v18.17.0, introduced July 18, 2023, introduces an error in unicode processing that breaks test cases on Ubuntu.
# See PR #905 and #908 for more details.
# If this bug is resolved in node, these lines can revert to 18.x rather than 18.16.1.
- name: Use Node.js 18.16.1
uses: actions/setup-node@v3
with:
node-version: 18.16.1
- name: Build Shield Library 🛡️
run: |
cd shieldlib
npm ci --include=dev
npm run build
- name: Install and Build 🔧
run: |
npm ci --include=dev
npm run build
npm run style
- name: Test 🧪
run: |
npm test
cd shieldlib
npm test
25 changes: 0 additions & 25 deletions .github/workflows/test-build.yml

This file was deleted.

7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
node_modules
sprites
build
rebusurance.zip
.DS_Store
config.js
.parcel-cache
dist/
dist
download
local.config.js
shieldlib/docs
samples/
9 changes: 9 additions & 0 deletions .mocharc.yml
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
recursive: true
extension:
- ts
spec:
- test/**/*.js
- test/**/*.spec.ts
require: ts-node/register
node-option:
- loader=ts-node/esm
- experimental-specifier-resolution=node
2 changes: 1 addition & 1 deletion ACKNOWLEDGEMENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

- The stylized highway shields are inspired by "[Rebusurance](https://github.com/1ec5/rebusurance/)" by Minh Nguyễn.
- Initial layer code is derived from Oliver Wipfli's [openmaptiles-starter](https://github.com/wipfli/openmaptiles-starter/) style.
- The font stack was [packaged by the OpenHistoricalMap project](https://github.com/OpenHistoricalMap/map-styles/).
- The font stack was [packaged from Google Fonts](https://fonts.google.com/attribution).
- Support for right-to-left Arabic and Hebrew text is provided by the [mapbox-gl-rtl-text](https://github.com/mapbox/mapbox-gl-rtl-text/) plugin.
Loading

0 comments on commit a965a20

Please sign in to comment.