Skip to content

Update ci.yml

Update ci.yml #529

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
DOTNET_NOLOGO: true
CONFIGURATION: Release
jobs:
lint-markdown:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3.5.3
- name: Install Node
uses: actions/setup-node@v3.6.0
with:
node-version: 18
- uses: xt0rted/markdownlint-problem-matcher@v2.0.0
- run: npm ci
- run: npm test
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
permissions:
contents: read
packages: read
steps:
- name: Check out repository
uses: actions/checkout@v3.5.3
- name: Build version suffix (main)
if: github.event_name == 'push'
run: echo "VERSION_SUFFIX=beta.${{ github.run_number }}" >> $GITHUB_ENV
shell: bash
- name: Build version suffix (pr)
if: github.event_name == 'pull_request'
run: echo "VERSION_SUFFIX=alpha.${{ github.event.number }}" >> $GITHUB_ENV
shell: bash
- name: Set up .NET
uses: xt0rted/setup-dotnet@v1.5.0
with:
source-url: https://nuget.pkg.github.com/xt0rted/index.json
nuget_auth_token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up .NET
uses: xt0rted/setup-dotnet@v1.5.0
with:
colored-output: false
strip-comments-from-global-json: false
dotnet-version: |
3.1.x
- run: dotnet tool restore
- run: dotnet r build
- run: dotnet r test -- --logger "trx;LogFilePrefix=${{ matrix.os }}"
- run: dotnet r pack -- --version-suffix ${{ env.VERSION_SUFFIX }}
- name: Upload artifacts
uses: actions/upload-artifact@v3.1.2
if: matrix.os == 'ubuntu-latest'
with:
name: nupkg
path: ./artifacts/*.nupkg
- name: Upload test results
uses: actions/upload-artifact@v3.1.2
if: always()
with:
name: test-results
path: ./coverage/*.trx
integration:
needs:
- build
- lint-markdown
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
shell:
- default
- bash
- pwsh
exclude:
- os: windows-latest
shell: bash
include:
- os: windows-latest
shell: C:\Program Files\Git\bin\bash.exe
permissions:
contents: read
packages: read
steps:
- name: Check out repository
uses: actions/checkout@v3.5.3
- name: Set up .NET
uses: xt0rted/setup-dotnet@v1.5.0
with:
source-url: https://nuget.pkg.github.com/xt0rted/index.json
nuget_auth_token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up .NET
uses: xt0rted/setup-dotnet@v1.5.0
if: matrix.os == 'ubuntu-latest'
with:
colored-output: false
strip-comments-from-global-json: false
dotnet-version: |
3.1.x
- name: Download nupkg
uses: actions/download-artifact@v3.0.2
with:
name: nupkg
path: .nuget
- run: dotnet tool restore
- run: dotnet tool uninstall run-script
- run: |
file=(.nuget/*.nupkg)
pattern="run-script\.(.*)\.nupkg"
if [[ $file =~ $pattern ]]; then
dotnet tool install run-script --version "${BASH_REMATCH[1]}" --add-source "${{ github.workspace }}/.nuget"
else
echo "::error::nupkg not found"
exit 1
fi
shell: bash
- run: |
if [ "${{ matrix.shell }}" == "default" ]; then
dotnet r build -v
else
dotnet r build -v --script-shell "${{ matrix.shell }}"
fi
shell: bash
- run: |
if [ "${{ matrix.shell }}" == "default" ]; then
dotnet r test --verbose -- --logger "trx;LogFilePrefix=${{ matrix.os }}-default"
else
shellName="${{ matrix.shell }}"
if [[ "$shellName" == *\.exe ]]; then
shellName="bash"
fi
dotnet r test --verbose --script-shell "${{ matrix.shell }}" -- --logger "trx;LogFilePrefix=${{ matrix.os }}-$shellName"
fi
shell: bash
- name: Upload test results
uses: actions/upload-artifact@v3.1.2
if: always()
with:
name: integration-test-results
path: ./coverage/*.trx
- run: dotnet r integration:ci --verbose -- --logger "trx;LogFilePrefix=ci test"
- run: dotnet r clean:bin build test --verbose
release:
if: github.event_name == 'push'
needs:
- build
- integration
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Download nupkg
uses: actions/download-artifact@v3.0.2
with:
name: nupkg
- name: Publish to GPR
run: |
dotnet nuget push "./*.nupkg" \
--api-key ${{ secrets.GITHUB_TOKEN }} \
--source https://nuget.pkg.github.com/${{ github.repository_owner }}