From d88fbb7c553294fbd21aefdeecc42631d3c77577 Mon Sep 17 00:00:00 2001 From: Andrew Calcutt Date: Sun, 16 Mar 2025 23:25:45 -0400 Subject: [PATCH] Fix light version docker entrypoint permissions (#1478) * put back entrypoint chmod * bump to 5.2.0-pre.3 * move chown * put back manual build steps * Update PUBLISHING.md --- CHANGELOG.md | 5 +- Dockerfile_light | 5 +- PUBLISHING.md | 115 +++++++++++++++++++++++++++++++++++++++++----- package-lock.json | 4 +- package.json | 2 +- 5 files changed, 114 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b10394b..fbfb8ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,14 @@ # tileserver-gl changelog -## 5.2.0-pre.2 +## 5.2.0-pre.3 * Use npm packages for public/resources (https://github.com/maptiler/tileserver-gl/pull/1427) by @okimiko * use ttf files of googlefonts/opensans (https://github.com/maptiler/tileserver-gl/pull/1447) by @okimiko * Limit Elevation Lat/Long Output Length (https://github.com/maptiler/tileserver-gl/pull/1457) by @okimiko * Fetch style from url (https://github.com/maptiler/tileserver-gl/pull/1462) by @YoelRidgway * fix: memory leak on SIGHUP (https://github.com/maptiler/tileserver-gl/pull/1455) by @okimiko * fix: resolves Unimplemented type: 3 error for geojson format (https://github.com/maptiler/tileserver-gl/pull/1465) by @rjdjohnston -* fix: Test light version in ct workflow - fix sqlite build in light (https://github.com/maptiler/tileserver-gl/pull/2034) by @acalcutt +* fix: Test light version in ct workflow - fix sqlite build in light (https://github.com/maptiler/tileserver-gl/pull/1477) by @acalcutt +* fix: light version docker entrypoint permissions (https://github.com/maptiler/tileserver-gl/pull/1478) by @acalcutt ## 5.1.3 * Fix SIGHUP (broken since 5.1.x) (https://github.com/maptiler/tileserver-gl/pull/1452) by @okimiko diff --git a/Dockerfile_light b/Dockerfile_light index b6b3d63..00debcf 100644 --- a/Dockerfile_light +++ b/Dockerfile_light @@ -68,7 +68,10 @@ COPY --from=builder /usr/src/app /usr/src/app COPY . /usr/src/app -RUN mkdir -p /data && chown node:node /data +RUN mkdir -p /data && \ + chown node:node /data && \ + chmod +x /usr/src/app/docker-entrypoint.sh + VOLUME /data WORKDIR /data diff --git a/PUBLISHING.md b/PUBLISHING.md index fedaf39..391247f 100644 --- a/PUBLISHING.md +++ b/PUBLISHING.md @@ -1,19 +1,112 @@ -# Publishing new version +# Publishing a New Version -1.) Change the version number in package.json. Run the following command in the package root directory, replacing with one of the semantic versioning release types (prerelease, prepatch, preminor, premajor, patch, minor, major): -npm version --preid pre --no-git-tag-version +This document outlines the process for publishing new versions of this project. We use a GitHub workflow for automated releases, but also provide manual steps for specific situations. ---preid specifies which suffix to use in the release such as pre, next, beta, rc, etc. +## Automated Publishing via GitHub Workflow (Recommended) -prepatch, preminor, and premajor start a new series of pre-releases while bumping the patch, minor, or major version. E.g. premajor with --preid pre would do a prerelease for a new major using the -pre suffix (i.e. it would be a new major with -pre.0) +This is the preferred method for publishing new versions. It automates the entire process, including version bumping, tagging, building, and publishing. -You can use prerelease to bump the version for a new pre-release version. E.g. you could run npm version prerelease --preid pre --no-git-tag-version to go from -pre.0 to -pre.1. +1. **Prepare the Release:** -For regular versions, you can use patch, minor, or major. E.g. npm version major --no-git-tag-version. + * **Choose the Version Increment:** Determine the appropriate semantic versioning increment (prerelease, prepatch, preminor, premajor, patch, minor, major). -2.) Update the changelog, which can be found in CHANGELOG.md. The heading must match ## exactly, or it will not be picked up. For example, for version 5.0.0: -```## 5.0.0``` + * **Update `package.json`:** Use the `npm version` command to bump the version number. This command also supports creating pre-release versions using the `--preid pre` flag. -3.) Commit and push the changes. + ```bash + # Example: Increment to a new patch version + npm version patch --no-git-tag-version -4.) Run the 'Build, Test, Release' github workflow. The workflow will create a NPM, Docker, and Github release and Tag. + # Example: Increment to a new minor version + npm version minor --no-git-tag-version + + # Example: Increment to a new major version + npm version major --no-git-tag-version + + # Example: Create a pre-release (e.g., -pre.0) version + npm version prepatch --preid pre --no-git-tag-version + # OR + npm version preminor --preid pre --no-git-tag-version + # OR + npm version premajor --preid pre --no-git-tag-version + + # Example: Increment an existing pre-release version (e.g., -pre.0 to -pre.1) + npm version prerelease --preid pre --no-git-tag-version + ``` + + * `--no-git-tag-version`: This prevents `npm version` from automatically creating a git tag, as the GitHub workflow will handle this later. + * `--preid pre`: Specifies that "pre" is the pre-release identifier. + + * **Update the Changelog (`CHANGELOG.md`):** Add a new section for the release. The heading *must* exactly match the format `## `, where `` is the full version number from `package.json`. Describe the changes included in the release. + + ```markdown + ## 1.2.3 + * Added new feature X. + ``` + +2. **Commit and Push:** Commit the changes to `package.json`, `package-lock.json` and `CHANGELOG.md` to a branch. Create a pull request (PR) for review. If you are an administrator, you may push directly, but a PR is generally recommended for code review. + +3. **Run the GitHub Workflow:** Once the PR is merged (or changes pushed directly), trigger the "Build, Test, Release" GitHub workflow. This workflow is responsible for: + + * Building the project. + * Running tests. + * Creating an NPM package. + * Building and pushing Docker images. + * Creating a GitHub Release. + * Creating a Git tag for the release. + +## Manual Publishing (For Special Cases) + +Use the following steps *only* when the automated workflow is not suitable (e.g., for debugging, specific environment needs). + +1. **Update Version in `package.json`:** Modify the `version` field in `package.json` to the desired version number. + +2. **Create and Push Git Tag:** + + ```bash + git tag vX.X.X # Replace X.X.X with the version number + git push origin --tags + ``` + +3. **NPM Publish Options (Choose ONE):** + + * **Option A: Publish only the full `tileserver-gl` version:** + + ```bash + npm publish --access public + ``` + + * **Option B: Build and Publish both `tileserver-gl` and `tileserver-gl-light` using `publish.js`:** + + ```bash + # This script builds the light version and publishes both tileserver-gl and tileserver-gl-light to NPM. + node publish.js + ``` + + * **Option C: Build only the `tileserver-gl-light` version (no publish):** + + ```bash + # This script ONLY builds the light version (e.g., for local testing or Docker image creation) without publishing. + node publish.js --no-publish + ``` + +4. **Build and Push Docker Images:** + + ```bash + # Build the main image + docker buildx build --platform linux/amd64 -t maptiler/tileserver-gl:latest -t maptiler/tileserver-gl:X.X.X . # Replace X.X.X + docker push maptiler/tileserver-gl --all-tags + + # Build the light image + cd light + docker buildx build --platform linux/amd64 -t maptiler/tileserver-gl-light:latest -t maptiler/tileserver-gl-light:X.X.X . # Replace X.X.X + docker push maptiler/tileserver-gl-light --all-tags + cd .. # Return to the project root + ``` + * Make sure you are logged into the docker registry before pushing. `docker login` + +**Important Considerations for Manual Publishing:** + +* **Consistency:** Ensure the version number in `package.json`, the Git tag, and the Docker image tags are identical. +* **Credentials:** Verify that you have the necessary permissions to push Docker images and publish to NPM. +* **Cleanliness:** Before building Docker images, ensure your working directory is clean to avoid including unwanted files in the image. +* **Error Handling:** Manually publishing is more prone to errors. Double-check each step to avoid issues. diff --git a/package-lock.json b/package-lock.json index b6274e3..b206cd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "tileserver-gl", - "version": "5.2.0-pre.2", + "version": "5.2.0-pre.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tileserver-gl", - "version": "5.2.0-pre.2", + "version": "5.2.0-pre.3", "license": "BSD-2-Clause", "dependencies": { "@jsse/pbfont": "^0.2.2", diff --git a/package.json b/package.json index 91781cc..f920fea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tileserver-gl", - "version": "5.2.0-pre.2", + "version": "5.2.0-pre.3", "description": "Map tile server for JSON GL styles - vector and server side generated raster tiles", "main": "src/main.js", "bin": "src/main.js",