Publish Check #155
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: 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_dotnet: ${{ steps.filter.outputs.sdk_dotnet }} | |
sdk_go: ${{ steps.filter.outputs.sdk_go }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Filter changed files | |
uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
filters: | | |
sdk_node: | |
- 'sdk-node/**' | |
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@v3 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
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/${version} --github.release=false | |
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@v3 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: "8.0.x" | |
- name: Restore dependencies | |
run: dotnet restore | |
- name: Build | |
run: dotnet build --configuration Release --no-restore | |
- name: Pack | |
run: dotnet pack --configuration Release --no-restore --output ./output | |
# TODO: Auto version bump | |
- name: Setup NuGet | |
uses: nuget/setup-nuget@v1 | |
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 | |
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@v3 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
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 add inferable.go | |
git commit -m "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 }} |