Release #4
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: "Release" | |
on: | |
workflow_dispatch: | |
inputs: | |
pre-release: | |
description: 'Is this a release candidate (pre-release)? (NOTE: candidates get uploaded to MyGet.org instead of NuGet.org)' | |
required: true | |
default: 'true' | |
schedule: | |
- cron: "0 0 1 * *" # First day of every month | |
jobs: | |
build-job: | |
name: "Build" | |
uses: "./.github/workflows/build.yml" | |
release-job: | |
name: "Release" | |
needs: [build-job] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: "Clone Git repository" | |
uses: actions/checkout@master | |
with: | |
submodules: "recursive" | |
- name: "Set version" | |
id: set-version | |
shell: bash | |
run: | | |
IS_PRERELEASE="${{ github.event.inputs.pre-release }}" | |
if [[ "$IS_PRERELEASE" = "true" ]]; then | |
VERSION="$(date +'%Y.%m.%d')-rc" | |
else | |
VERSION="$(date +'%Y.%m.%d')" | |
fi | |
echo "VERSION=$VERSION" | |
echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT" | |
- name: "Download native libraries (win-x64)" | |
uses: actions/download-artifact@v1 | |
with: | |
name: "native-libraries-win-x64" | |
path: "./lib" | |
- name: "Download native libraries (osx)" | |
uses: actions/download-artifact@v1 | |
with: | |
name: "native-libraries-osx" | |
path: "./lib" | |
- name: "Download native libraries (linux-x64)" | |
uses: actions/download-artifact@v1 | |
with: | |
name: "native-libraries-linux-x64" | |
path: "./lib" | |
- name: ".NET pack" | |
run: dotnet pack "./src/cs" --nologo --verbosity minimal --configuration Release -p:PackageVersion="${{ steps.set-version.outputs.VERSION }}" -p:RepositoryBranch="${{ github.head_ref || github.ref_name }}" -p:RepositoryCommit="${{ github.sha }}" | |
- name: "Upload packages to NuGet" | |
if: github.event_name == 'schedule' || github.event.inputs.pre-release == 'false' | |
env: | |
NUGET_ACCESS_TOKEN: ${{ secrets.NUGET_ACCESS_TOKEN }} | |
run: dotnet nuget push "./nupkg/**/*.nupkg" --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key $NUGET_ACCESS_TOKEN | |
- name: "Create tag and GitHub release" | |
uses: softprops/action-gh-release@v1 | |
if: github.event_name == 'schedule' || github.event.inputs.pre-release == 'false' | |
with: | |
generate_release_notes: true | |
prerelease: "{{ github.event.inputs.pre-release == 'true' }}" | |
tag_name: "v${{ steps.set-version.outputs.VERSION }}" | |