Skip to content

Publish Check

Publish Check #319

Workflow file for this run

name: Publish Check
on:
workflow_run:
workflows:
- Build and Test
types:
- completed
jobs:
check_changes:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'main' }}
outputs:
sdk_node: ${{ steps.filter.outputs.sdk_node }}
sdk_react: ${{ steps.filter.outputs.sdk_react }}
sdk_dotnet: ${{ steps.filter.outputs.sdk_dotnet }}
sdk_go: ${{ steps.filter.outputs.sdk_go }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Filter changed files
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
sdk_node:
- 'sdk-node/**'
sdk_react:
- 'sdk-react/**'
sdk_dotnet:
- 'sdk-dotnet/**'
sdk_go:
- 'sdk-go/**'
publish-node:
needs: check_changes
if: ${{ needs.check_changes.outputs.sdk_node == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
defaults:
run:
working-directory: sdk-node
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
cache-dependency-path: sdk-node/package-lock.json
- name: Install dependencies
run: npm ci
- name: Build package
run: npm run build
- name: Configure Git User
run: |
git config --global user.name "Inferable CI"
git config --global user.email "[email protected]"
- name: Release It
run: |
npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
version=$(npx release-it --release-version)
npx release-it --npm.skipChecks --git.tagName=sdk-node/v${version} --no-github.release --git.commitMessage="Bump sdk-node version to ${version}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-react:
needs: check_changes
if: ${{ needs.check_changes.outputs.sdk_react == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
defaults:
run:
working-directory: sdk-react
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
cache-dependency-path: sdk-react/package-lock.json
- name: Install dependencies
run: npm ci
- name: Build package
run: npm run build
- name: Configure Git User
run: |
git config --global user.name "Inferable CI"
git config --global user.email "[email protected]"
- name: Release It
run: |
npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
version=$(npx release-it --release-version)
npx release-it --npm.skipChecks --git.tagName=sdk-react/v${version} --no-github.release --git.commitMessage="Bump sdk-react version to ${version}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-dotnet:
needs: check_changes
if: ${{ needs.check_changes.outputs.sdk_dotnet == 'true' }}
runs-on: windows-latest
permissions:
contents: write
defaults:
run:
working-directory: sdk-dotnet
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Restore dependencies
run: dotnet restore
- name: Get and Increment Version
id: increment_version
shell: pwsh
run: |
$projectFile = Get-ChildItem -Path ./src -Filter *.csproj | Select-Object -First 1
if (-not $projectFile) {
throw "No .csproj file found in current directory"
}
$xml = [xml](Get-Content $projectFile.FullName)
$currentVersion = $xml.Project.PropertyGroup.Version
if (-not $currentVersion) {
throw "Version element not found in project file"
}
# Parse version components
$major, $minor, $patch = $currentVersion.Split('.')
$newPatch = [int]$patch + 1
$newVersion = "$major.$minor.$newPatch"
# Update project file
$xml.Project.PropertyGroup.Version = $newVersion
$xml.Save($projectFile.FullName)
# Set output for later steps
echo "new_version=$newVersion" >> $env:GITHUB_OUTPUT
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Pack
run: dotnet pack --configuration Release --no-restore --output ./output
- name: Setup NuGet
uses: nuget/setup-nuget@v2
with:
nuget-api-key: ${{ secrets.NUGET_API_KEY }}
nuget-version: latest
- name: Publish
run: dotnet nuget push output\*.nupkg -s https://api.nuget.org/v3/index.json
- name: Commit and push changes
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -am "Bump sdk-dotnet version to ${{ steps.increment_version.outputs.new_version }}"
git push
- name: Create Git tag
run: |
git tag sdk-dotnet/v${{ steps.increment_version.outputs.new_version }}
git push origin sdk-dotnet/v${{ steps.increment_version.outputs.new_version }}
publish-go:
needs: check_changes
if: ${{ needs.check_changes.outputs.sdk_go == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
defaults:
run:
working-directory: sdk-go
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.22"
- name: Get current version
id: get_version
run: |
VERSION=$(grep -oP 'const Version = "\K[^"]+' inferable.go)
echo "current_version=$VERSION" >> $GITHUB_OUTPUT
- name: Increment patch version
id: increment_version
run: |
IFS='.' read -ra VERSION_PARTS <<< "${{ steps.get_version.outputs.current_version }}"
MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]}
PATCH=$((VERSION_PARTS[2] + 1))
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
- name: Update version in code
run: |
sed -i 's/const Version = "[^"]*"/const Version = "${{ steps.increment_version.outputs.new_version }}"/' inferable.go
- name: Commit and push changes
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -am "Bump sdk-go version to ${{ steps.increment_version.outputs.new_version }}"
git push
- name: Create Git tag
run: |
git tag sdk-go/v${{ steps.increment_version.outputs.new_version }}
git push origin sdk-go/v${{ steps.increment_version.outputs.new_version }}