Use proper Git repository for new branch tests (#145) #304
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, test and release | |
on: | |
push: | |
branches: ["main"] | |
paths-ignore: | |
- README.md | |
pull_request: | |
branches: ["main"] | |
paths-ignore: | |
- README.md | |
jobs: | |
version: | |
name: Get versioning information | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.get_versioning_information.outputs.version }} | |
next_release_version: ${{ steps.get_versioning_information.outputs.next_release_version }} | |
create_release: ${{ steps.get_versioning_information.outputs.create_release }} | |
has_unreleased_changes: ${{ steps.get_versioning_information.outputs.has_unreleased_changes }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Get all tags | |
- name: Get versioning information | |
uses: ./.github/actions/get-versioning-information | |
id: get_versioning_information | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
build: | |
needs: version | |
strategy: | |
matrix: | |
include: | |
- name: Linux | |
os: ubuntu-latest | |
- name: Windows | |
os: windows-latest | |
- name: macOS | |
os: macos-latest | |
name: Build and test on ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
working-directory: src | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 9.0.x | |
- name: Restore dependencies | |
run: dotnet restore | |
- name: Build | |
run: dotnet build --no-restore -c Release | |
- name: Test | |
run: dotnet test --no-build -c Release --verbosity normal --logger "trx;LogFileName=${{ github.workspace }}/tests/test_results.trx" | |
- name: Create test report | |
uses: phoenix-actions/test-reporting@v15 | |
if: success() || failure() # run this step even if previous step failed | |
with: | |
name: Tests | |
path: ${{ github.workspace }}/tests/*.trx | |
path-replace-backslashes: true # Required for Windows paths | |
reporter: dotnet-trx | |
output-to: step-summary | |
publish: | |
needs: [version, build] | |
strategy: | |
matrix: | |
include: | |
- name: Linux amd64 | |
runtime-id: linux-x64 | |
artifact-name: linux_amd64 | |
archive_type: tar | |
- name: Linux arm64 | |
runtime-id: linux-arm64 | |
artifact-name: linux_arm64 | |
archive_type: tar | |
- name: Windows amd64 | |
runtime-id: win-x64 | |
artifact-name: windows_amd64 | |
archive_type: zip | |
- name: Windows arm64 | |
runtime-id: win-arm64 | |
artifact-name: windows_arm64 | |
archive_type: zip | |
- name: macOS amd64 | |
runtime-id: osx-x64 | |
artifact-name: macos_amd64 | |
archive_type: tar | |
- name: macOS arm64 | |
runtime-id: osx-arm64 | |
artifact-name: macos_arm64 | |
archive_type: tar | |
name: Publish ${{ matrix.name }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 9.0.x | |
- name: Publish | |
run: dotnet publish src/Stack/Stack.csproj -c Release -r ${{ matrix.runtime-id }} -p:Version=${{ needs.version.outputs.version }} -p:DebugType=None -p:DebugSymbols=false -o ${{ github.workspace }}/publish | |
- name: Copy changelog to publish folder | |
run: cp ${{ github.workspace }}/CHANGELOG.md ${{ github.workspace }}/publish | |
- name: Copy readme to publish folder | |
run: cp ${{ github.workspace }}/README.md ${{ github.workspace }}/publish | |
- run: mkdir -p ${{ github.workspace }}/artifacts | |
- name: Create tar.gz archive | |
run: tar -czf ${{ github.workspace }}/artifacts/stack_${{ needs.version.outputs.version }}_${{ matrix.artifact-name }}.tar.gz * | |
working-directory: ${{ github.workspace }}/publish | |
if: matrix.archive_type == 'tar' | |
- name: Create zip archive | |
run: zip -r ${{ github.workspace }}/artifacts/stack_${{ needs.version.outputs.version }}_${{ matrix.artifact-name }}.zip * | |
working-directory: ${{ github.workspace }}/publish | |
if: matrix.archive_type == 'zip' | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
overwrite: true | |
name: ${{ matrix.artifact-name }} | |
path: ${{ github.workspace }}/artifacts/* | |
pr_complete: | |
name: PR checks complete | |
runs-on: ubuntu-latest | |
needs: [publish] | |
if: github.event_name == 'pull_request' | |
steps: | |
- run: echo "PR required checks complete" | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
needs: [version, publish] | |
if: github.ref == 'refs/heads/main' && github.event_name == 'push' && needs.version.outputs.create_release == 'true' | |
permissions: | |
contents: write | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Get all tags | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: ${{ github.workspace }}/artifacts | |
- name: List artifacts | |
run: ls -lR ${{ github.workspace }}/artifacts | |
- name: Download auto | |
run: | | |
curl -kL -o - https://github.com/intuit/auto/releases/download/v11.3.0/auto-linux.gz | gunzip > ${{ runner.temp }}/auto | |
chmod +x ${{ runner.temp }}/auto | |
- name: Release | |
run: ${{ runner.temp }}/auto shipit --no-changelog --only-publish-with-release-label --name github-actions[bot] --email github-actions[bot]@users.noreply.github.com |