mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-03-12 19:07:28 -04:00
70 lines
2.5 KiB
YAML
70 lines
2.5 KiB
YAML
name: Create Internal Release Tag
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
base_version:
|
|
description: "Base version to iterate on (e.g. 2.6.7). The next internal iteration will be created for this version."
|
|
required: true
|
|
dry_run:
|
|
description: "If true, calculate but do not push tag"
|
|
required: false
|
|
default: "false"
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
create-internal-tag:
|
|
runs-on: ubuntu-latest
|
|
environment: Release
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Compute Tag
|
|
id: tag
|
|
run: |
|
|
set -euo pipefail
|
|
BASE='${{ inputs.base_version }}'
|
|
# Find the highest existing internal tag for this base version and increment it.
|
|
EXISTING=$(git tag --list "v${BASE}-internal.*" | sed -E 's/^v.*-internal\.([0-9]+)$/\1/' | sort -n | tail -1 || true)
|
|
if [ -z "$EXISTING" ]; then NEXT=1; else NEXT=$((EXISTING+1)); fi
|
|
FINAL_TAG="v${BASE}-internal.${NEXT}"
|
|
# Check if the tag already exists for some reason (e.g. race condition).
|
|
if git tag --list | grep -q "^${FINAL_TAG}$"; then
|
|
echo "Tag ${FINAL_TAG} already exists." >&2
|
|
exit 1
|
|
fi
|
|
echo "internal_tag=$FINAL_TAG" >> $GITHUB_OUTPUT
|
|
|
|
- name: Dry Run Preview
|
|
if: ${{ inputs.dry_run == 'true' }}
|
|
run: |
|
|
echo "DRY RUN: Would create tag ${{ steps.tag.outputs.internal_tag }} pointing to $(git rev-parse HEAD)"
|
|
git log -5 --oneline
|
|
|
|
- name: Configure Git User
|
|
if: ${{ inputs.dry_run != 'true' }}
|
|
run: |
|
|
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
git config --global user.name "github-actions[bot]"
|
|
|
|
- name: Create and Push Tag
|
|
if: ${{ inputs.dry_run != 'true' }}
|
|
run: |
|
|
TAG='${{ steps.tag.outputs.internal_tag }}'
|
|
MSG="Internal build iteration for ${TAG}"
|
|
git tag -a "$TAG" -m "$MSG"
|
|
git push origin "$TAG"
|
|
echo "Created and pushed $TAG"
|
|
|
|
- name: Output Summary
|
|
run: |
|
|
echo "### Internal Tag Created" >> $GITHUB_STEP_SUMMARY
|
|
echo "Tag: ${{ steps.tag.outputs.internal_tag }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "Base Version: ${{ inputs.base_version }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "Dry Run: ${{ inputs.dry_run }}" >> $GITHUB_STEP_SUMMARY
|