This is an automated email from the ASF dual-hosted git repository.

erisu pushed a commit to branch chore/release-draft
in repository https://gitbox.apache.org/repos/asf/cordova-node-xcode.git

commit f5c2a4b3b38da81e35a60383577fce5825ac8aa1
Author: Erisu <[email protected]>
AuthorDate: Thu May 28 14:51:48 2026 +0900

    chore(workflow) added release draft, updated release audit, & cleanup CI
---
 .npmrc => .asf-release/.gitkeep     |   6 +-
 .github/workflows/ci.yml            |   3 +-
 .github/workflows/draft-release.yml | 155 ++++++++++++++++++++++++++++++++++++
 .github/workflows/release-audit.yml |   8 +-
 .gitignore                          |   4 +
 .npmignore                          |   3 +
 .npmrc                              |   5 ++
 .ratignore => .rat-excludes         |   0
 8 files changed, 177 insertions(+), 7 deletions(-)

diff --git a/.npmrc b/.asf-release/.gitkeep
similarity index 80%
copy from .npmrc
copy to .asf-release/.gitkeep
index 7cff323..a926db8 100644
--- a/.npmrc
+++ b/.asf-release/.gitkeep
@@ -15,4 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 
-registry=https://registry.npmjs.org
+# ---
+# This directory is used as apart of the release process.
+# Package tarballs will be generated in stored temporarily
+# within this directory and should not be commited to repo.
+# ---
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bcc5647..b952fff 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -74,8 +74,7 @@ jobs:
 
       - uses: 
github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
 
-      # v4.6.0
-      - uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238
+      - uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 
# v4.6.0
         if: success()
         with:
           name: ${{ runner.os }} node.js ${{ matrix.node.version }}
diff --git a/.github/workflows/draft-release.yml 
b/.github/workflows/draft-release.yml
new file mode 100644
index 0000000..d98bbc3
--- /dev/null
+++ b/.github/workflows/draft-release.yml
@@ -0,0 +1,155 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: Draft Release
+
+on:
+  push:
+    tags:
+      - 'draft/**'
+
+permissions:
+  contents: read
+  id-token: write
+
+jobs:
+  upload-to-atr:
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+        with:
+          persist-credentials: false
+          fetch-depth: 1
+
+      - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # 
v6.4.0
+        with:
+          node-version: 24
+          package-manager-cache: false
+          cache: ''
+
+      - name: Setup environment variables
+        run: |
+          REPO_NAME="${GITHUB_REPOSITORY#*/}"
+          TAG_NAME="${GITHUB_REF#refs/tags/}"
+          TARGET_RELEASE_VERSION="${TAG_NAME#draft/}"
+          SRC_PACKAGE_NAME=${REPO_NAME}-source-${TARGET_RELEASE_VERSION}
+          SRC_PACKAGE_TAR=${SRC_PACKAGE_NAME}.tar
+          SRC_PACKAGE_TAR_GZ=${SRC_PACKAGE_NAME}.tar.gz
+          SRC_PACKAGE_ZIP=${SRC_PACKAGE_NAME}.zip
+          NPM_PACKAGE_NAME=${REPO_NAME}-npm-${TARGET_RELEASE_VERSION}
+
+          echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV
+          echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV
+          echo "TARGET_RELEASE_VERSION=$TARGET_RELEASE_VERSION" >> $GITHUB_ENV
+          echo "SRC_PACKAGE_NAME=$SRC_PACKAGE_NAME" >> $GITHUB_ENV
+          echo "SRC_PACKAGE_TAR=$SRC_PACKAGE_TAR" >> $GITHUB_ENV
+          echo "SRC_PACKAGE_TAR_GZ=$SRC_PACKAGE_TAR_GZ" >> $GITHUB_ENV
+          echo "SRC_PACKAGE_ZIP=$SRC_PACKAGE_ZIP" >> $GITHUB_ENV
+          echo "NPM_PACKAGE_NAME=$NPM_PACKAGE_NAME" >> $GITHUB_ENV
+
+          echo "REPO_NAME=$REPO_NAME"
+          echo "TAG_NAME=$TAG_NAME"
+          echo "TARGET_RELEASE_VERSION=$TARGET_RELEASE_VERSION"
+          echo "SRC_PACKAGE_NAME=$SRC_PACKAGE_NAME"
+          echo "SRC_PACKAGE_TAR=$SRC_PACKAGE_TAR"
+          echo "SRC_PACKAGE_TAR_GZ=$SRC_PACKAGE_TAR_GZ"
+          echo "SRC_PACKAGE_ZIP=$SRC_PACKAGE_ZIP"
+          echo "NPM_PACKAGE_NAME=$NPM_PACKAGE_NAME"
+
+      - name: Verify Target Release Version
+        run: |
+          PACKAGE_VERSION=$(jq -r '.version' package.json)
+          if [ "$PACKAGE_VERSION" != "$TARGET_RELEASE_VERSION" ]; then
+            echo "Mismatch version detected between tag version 
($TARGET_RELEASE_VERSION) and package version ($PACKAGE_VERSION)"
+            exit 1
+          fi
+
+          if [ -f "plugin.xml" ]; then
+            PLUGIN_VERSION=$(yq -p=xml -o=json '.plugin.+@version' plugin.xml 
| jq -r .)
+            if [ "$PLUGIN_VERSION" != "$TARGET_RELEASE_VERSION" ]; then
+              echo "Mismatch version detected between tag version 
($TARGET_RELEASE_VERSION) and plugin version ($PLUGIN_VERSION)"
+              exit 1
+            fi
+          fi
+
+      - name: Generate "tgz" npm convenience package
+        run: |-
+          npm ci
+          NPM_PKG_NAME=$(npm pack --json | jq -r '.[0].filename')
+          mv ./.asf-release/$NPM_PKG_NAME 
./.asf-release/${NPM_PACKAGE_NAME}.tgz
+        env:
+          TZ: UTC
+
+      - name: Generate "tar" source package
+        run: |-
+          export SRC_LAST_COMMIT_EPOCH=$(git log -1 --format=%ct "$TAG_NAME")
+
+          git archive \
+            --prefix=$SRC_PACKAGE_NAME/ \
+            --mtime=$SRC_LAST_COMMIT_EPOCH \
+            -o ./.asf-release/${SRC_PACKAGE_TAR} \
+            $TAG_NAME
+        env:
+          TZ: UTC
+
+      - name: Generate "tar.gz" source archive
+        working-directory: ./.asf-release
+        run: |-
+          gzip -n -9 -c "$SRC_PACKAGE_TAR" > "$SRC_PACKAGE_TAR_GZ"
+        env:
+          TZ: UTC
+
+      - name: Generate "zip" source archive
+        working-directory: ./.asf-release
+        run: |-
+          export ASF_RELEASE_DIR=$(pwd)
+          export TMP_DIR=$(mktemp -d)
+
+          tar -xf "$SRC_PACKAGE_TAR" -C "$TMP_DIR"
+          (
+            cd "$TMP_DIR"
+            find . -type f | LC_ALL=C sort | zip -X -q 
"$ASF_RELEASE_DIR/$SRC_PACKAGE_ZIP" -@
+          )
+          rm -rf $TMP_DIR
+        env:
+          TZ: UTC
+
+      - name: Cleanup Process
+        working-directory: ./.asf-release
+        run: |-
+          rm -rf $SRC_PACKAGE_TAR
+          rm -rf .gitkeep
+
+      - name: Create Sign and Checksum
+        working-directory: .asf-release
+        run: |-
+          for f in *.tar.gz *.tgz *.zip; do
+            [ -e "$f" ] || continue
+            echo "$CORDOVA_GPG_SECRET_KEY" | gpg --batch --import 
--import-options import-show
+            gpg --armor --detach-sign "$f"
+            sha512sum "$f" > "${f}.sha512"
+          done
+        env:
+          CORDOVA_GPG_SECRET_KEY: ${{ secrets.CORDOVA_GPG_SECRET_KEY }}
+
+      - name: Upload to Apache Trusted Release (ATR)
+        uses: 
apache/tooling-actions/upload-to-atr@f5f4c0e7ddfbde6b1f8288cef36324c6def68051
+        with:
+          project: ${{ env.REPO_NAME }}
+          version: ${{ env.TARGET_RELEASE_VERSION }}
+          src: .asf-release
diff --git a/.github/workflows/release-audit.yml 
b/.github/workflows/release-audit.yml
index ceddd08..28a6b87 100644
--- a/.github/workflows/release-audit.yml
+++ b/.github/workflows/release-audit.yml
@@ -39,8 +39,8 @@ jobs:
           persist-credentials: false
           fetch-depth: 1
 
-      # Check license headers (v3.0.0)
-      - uses: erisu/apache-rat-action@30c94d10ed21e6f6fd5590dc5c158f58cae7a0dd
+      # Check license headers
+      - uses: erisu/apache-rat-action@30c94d10ed21e6f6fd5590dc5c158f58cae7a0dd 
# v3.0.0
 
       # Setup environment with node
       - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # 
v6.4.0
@@ -51,8 +51,8 @@ jobs:
       - name: npm install packages
         run: npm ci
 
-      # Check node package licenses (v2.1.0)
-      - uses: 
erisu/license-checker-action@04511f4c052b5773f11e1c65b42cda88235c62ae
+      # Check node package licenses
+      - uses: 
erisu/license-checker-action@04511f4c052b5773f11e1c65b42cda88235c62ae # v2.1.0
         with:
           license-config: 'licence_checker.yml'
           include-asf-category-a: true
diff --git a/.gitignore b/.gitignore
index 665b3be..54c853c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,7 @@ npm-debug.log
 coverage
 .nyc_output
 lcov.info
+
+# ASF release workspace
+.asf-release/
+!.asf-release/.gitkeep
diff --git a/.npmignore b/.npmignore
index 9f655bf..58ea548 100644
--- a/.npmignore
+++ b/.npmignore
@@ -20,3 +20,6 @@ coverage
 test
 eslint.config.js
 licence_checker.yml
+
+# ASF release workspace
+.asf-release/
diff --git a/.npmrc b/.npmrc
index 7cff323..6f982f7 100644
--- a/.npmrc
+++ b/.npmrc
@@ -16,3 +16,8 @@
 # under the License.
 
 registry=https://registry.npmjs.org
+
+# ASF release settings
+git-tag-version=false
+preid=dev
+pack-destination=./.asf-release
diff --git a/.ratignore b/.rat-excludes
similarity index 100%
rename from .ratignore
rename to .rat-excludes


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to