# 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@v6 - uses: actions/setup-node@v6 with: node-version: 24 - 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) 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 install 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@b7e972c11790ee16eca101900af1b3c7fd1b106e with: project: ${{ env.REPO_NAME }} version: ${{ env.TARGET_RELEASE_VERSION }} src: .asf-release