Updated PersonsAPI nuget package to v1.1.0 #3
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Push NuGet Package | |
on: | |
push: | |
branches: | |
- release/* | |
paths: | |
- 'Dfe.PersonsApi.Client*/**' | |
env: | |
DOTNET_VERSION: '8.0.x' | |
jobs: | |
build-and-test: | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.ref }} | |
fetch-depth: 0 # Shallow clones disabled for a better relevancy of SC analysis | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Set up curl and jq | |
run: sudo apt-get install -y curl jq | |
- name: Check for custom version in commit message or check the feed for the latest version and increment it | |
id: check_custom_version | |
run: | | |
# Search the last 10 commits for the version update indicator | |
COMMIT_HASH=$(git log -n 10 --pretty=format:"%H %s" | grep -P '\(#update package version to \d+\.\d+\.\d+\)' | grep -oP '^\w+' | head -n 1) | |
if [[ -n "$COMMIT_HASH" ]]; then | |
echo "Found commit with version update indicator: $COMMIT_HASH" | |
# Check if the commit is already tagged | |
if git rev-parse "processed-nuget-version-${COMMIT_HASH}" >/dev/null 2>&1; then | |
echo "This commit has already been processed for version update. Skipping." | |
else | |
# Extract the version from the commit message | |
CUSTOM_VERSION=$(git show -s --format=%s $COMMIT_HASH | grep -oP '\(#update package version to \K([0-9]+\.[0-9]+\.[0-9]+)') | |
if [[ -n "$CUSTOM_VERSION" ]]; then | |
echo "Using custom version: $CUSTOM_VERSION" | |
echo "NEW_VERSION=$CUSTOM_VERSION" >> $GITHUB_ENV | |
# Tag the commit to prevent reprocessing | |
git tag "processed-nuget-version-${COMMIT_HASH}" | |
git push origin "processed-nuget-version-${COMMIT_HASH}" | |
else | |
echo "Failed to extract version from commit message. Exiting." | |
exit 1 | |
fi | |
fi | |
fi | |
if [[ -z "$CUSTOM_VERSION" ]]; then | |
echo "No unprocessed custom version found in the last 10 commits. Proceeding to fetch and increment the latest version from the feed." | |
# Fetch the latest version and increment the version | |
PACKAGE_ID="Dfe.PersonsApi.Client" | |
FEED_URL="https://nuget.pkg.github.com/DFE-Digital/query?q=$PACKAGE_ID" | |
LATEST_VERSION=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "$FEED_URL" | jq -r '.data[0].version') | |
if [[ -z "$LATEST_VERSION" || "$LATEST_VERSION" == "null" ]]; then | |
echo "No existing version found in the feed. Defaulting to version 1.0.0" | |
NEW_VERSION="1.0.0" | |
else | |
echo "Latest version is $LATEST_VERSION" | |
IFS='.' read -r -a VERSION_PARTS <<< "$LATEST_VERSION" | |
NEW_VERSION="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.$((VERSION_PARTS[2] + 1))" | |
echo "Incrementing to new version: $NEW_VERSION" | |
fi | |
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV | |
fi | |
shell: /usr/bin/bash -e {0} | |
- name: Build, pack and publish | |
working-directory: Dfe.PersonsApi.Client | |
run: | | |
dotnet build -c Release | |
dotnet pack -c Release -p:PackageVersion=${{ env.NEW_VERSION }} --output . | |
dotnet nuget push "*.nupkg" --api-key ${{ secrets.GITHUB_TOKEN }} --source https://nuget.pkg.github.com/DFE-Digital/index.json |