mirror of
https://github.com/bitwarden/android.git
synced 2026-02-05 07:28:04 -06:00
174 lines
6.1 KiB
YAML
174 lines
6.1 KiB
YAML
name: Calculate Version Name and Number
|
|
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
app_codename:
|
|
description: "App Name - e.g. 'bwpm' or 'bwa'"
|
|
base_version_number:
|
|
description: "Base Version Number - Will be added to the calculated version number"
|
|
type: number
|
|
default: 0
|
|
version_name:
|
|
description: "Version Name Override - e.g. '2024.8.1'"
|
|
version_number:
|
|
description: "Version Number Override - e.g. '1021'"
|
|
patch_version:
|
|
description: "Patch Version Override - e.g. '999'"
|
|
distinct_id:
|
|
description: "Unique ID for this dispatch, used by dispatch-and-download.yml"
|
|
skip_checkout:
|
|
description: "Skip checking out the repository"
|
|
type: boolean
|
|
workflow_call:
|
|
inputs:
|
|
app_codename:
|
|
description: "App Name - e.g. 'bwpm' or 'bwa'"
|
|
type: string
|
|
base_version_number:
|
|
description: "Base Version Number - Will be added to the calculated version number"
|
|
type: number
|
|
default: 0
|
|
version_name:
|
|
description: "Version Name Override - e.g. '2024.8.1'"
|
|
type: string
|
|
version_number:
|
|
description: "Version Number Override - e.g. '1021'"
|
|
type: string
|
|
patch_version:
|
|
description: "Patch Version Override - e.g. '999'"
|
|
type: string
|
|
distinct_id:
|
|
description: "Unique ID for this dispatch, used by dispatch-and-download.yml"
|
|
type: string
|
|
skip_checkout:
|
|
description: "Skip checking out the repository"
|
|
type: boolean
|
|
outputs:
|
|
version_name:
|
|
description: "Version Name"
|
|
value: ${{ jobs.calculate-version.outputs.version_name }}
|
|
version_number:
|
|
description: "Version Number"
|
|
value: ${{ jobs.calculate-version.outputs.version_number }}
|
|
|
|
env:
|
|
APP_CODENAME: ${{ inputs.app_codename }}
|
|
BASE_VERSION_NUMBER: ${{ inputs.base_version_number || 0 }}
|
|
|
|
jobs:
|
|
calculate-version:
|
|
name: Calculate Version Name and Number
|
|
runs-on: ubuntu-22.04
|
|
permissions:
|
|
contents: read
|
|
outputs:
|
|
version_name: ${{ steps.calc-version-name.outputs.version_name }}
|
|
version_number: ${{ steps.calc-version-number.outputs.version_number }}
|
|
steps:
|
|
- name: Log inputs to job summary
|
|
uses: bitwarden/android/.github/actions/log-inputs@main
|
|
with:
|
|
inputs: "${{ toJson(inputs) }}"
|
|
|
|
- name: Echo distinct ID ${{ github.event.inputs.distinct_id }}
|
|
env:
|
|
_DISTINCT_ID: ${{ inputs.distinct_id }}
|
|
run: echo "${_DISTINCT_ID}"
|
|
|
|
- name: Check out repository
|
|
if: ${{ !inputs.skip_checkout || false }}
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
|
with:
|
|
fetch-depth: 0
|
|
persist-credentials: false
|
|
|
|
- name: Calculate version name
|
|
id: calc-version-name
|
|
env:
|
|
_VERSION_NAME: ${{ inputs.version_name }}
|
|
_PATCH_VERSION: ${{ inputs.patch_version }}
|
|
run: |
|
|
output() {
|
|
local version_name=$1
|
|
echo "version_name=$version_name" >> "$GITHUB_OUTPUT"
|
|
}
|
|
|
|
# override version name if provided
|
|
if [[ ! -z "${_VERSION_NAME}" ]]; then
|
|
version_name=${_VERSION_NAME}
|
|
echo "::warning::Override applied: $version_name"
|
|
output "$version_name"
|
|
exit 0
|
|
fi
|
|
|
|
current_year=$(date +%Y)
|
|
current_month=$(date +%-m)
|
|
|
|
latest_tag_version=$(git tag -l --sort=-creatordate | grep "$APP_CODENAME" | head -n 1)
|
|
if [[ -z "$latest_tag_version" ]]; then
|
|
version_name="${current_year}.${current_month}.${_PATCH_VERSION:-0}"
|
|
echo "::warning::No tags found, did you checkout? Calculating version from current date: $version_name"
|
|
output "$version_name"
|
|
exit 0
|
|
fi
|
|
|
|
# Git tag was found, calculate version from latest tag
|
|
latest_version=${latest_tag_version:1} # remove 'v' from tag version
|
|
|
|
latest_major_version=$(echo "$latest_version" | cut -d "." -f 1)
|
|
latest_minor_version=$(echo "$latest_version" | cut -d "." -f 2)
|
|
patch_version=0
|
|
if [[ ! -z "${_PATCH_VERSION}" ]]; then
|
|
patch_version=${_PATCH_VERSION}
|
|
echo "::warning::Patch Version Override applied: $patch_version"
|
|
elif [[ "$current_year" == "$latest_major_version" && "$current_month" == "$latest_minor_version" ]]; then
|
|
latest_patch_version=$(echo "$latest_version" | cut -d "." -f 3)
|
|
patch_version=$(($latest_patch_version + 1))
|
|
fi
|
|
|
|
version_name="${current_year}.${current_month}.${patch_version}"
|
|
output "$version_name"
|
|
|
|
- name: Calculate version number
|
|
id: calc-version-number
|
|
env:
|
|
_VERSION_NUMBER: ${{ inputs.version_number }}
|
|
run: |
|
|
# override version number if provided
|
|
if [[ ! -z "${_VERSION_NUMBER}" ]]; then
|
|
version_number=${_VERSION_NUMBER}
|
|
echo "::warning::Override applied: $version_number"
|
|
echo "version_number=$version_number" >> "$GITHUB_OUTPUT"
|
|
exit 0
|
|
fi
|
|
|
|
version_number=$(($GITHUB_RUN_NUMBER + ${BASE_VERSION_NUMBER}))
|
|
echo "version_number=$version_number" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Create version info JSON
|
|
env:
|
|
_VERSION_NUMBER: ${{ steps.calc-version-number.outputs.version_number }}
|
|
_VERSION_NAME: ${{ steps.calc-version-name.outputs.version_name }}
|
|
run: |
|
|
json=$(cat <<EOF
|
|
{
|
|
"version_number": "${_VERSION_NUMBER}",
|
|
"version_name": "${_VERSION_NAME}"
|
|
}
|
|
EOF
|
|
)
|
|
echo "$json" > version_info.json
|
|
|
|
echo "## version-info.json" >> "$GITHUB_STEP_SUMMARY"
|
|
echo '```json' >> "$GITHUB_STEP_SUMMARY"
|
|
echo "$json" >> "$GITHUB_STEP_SUMMARY"
|
|
echo '```' >> "$GITHUB_STEP_SUMMARY"
|
|
|
|
- name: Upload version info artifact
|
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
with:
|
|
name: version-info
|
|
path: version_info.json
|