Skip to content
Permalink
401534d6c5
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
View runs Go to file
 
 
Cannot retrieve contributors at this time
264 lines (220 sloc) 7.82 KB
name: Build
on:
push:
tags:
- 'latest'
- 'v*'
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build-bicep:
name: 'Build CLI'
runs-on: ${{ matrix.os }}
env:
# don't print dotnet logo
DOTNET_NOLOGO: true
# disable telemetry (reduces dotnet tool output in logs)
DOTNET_CLI_TELEMETRY_OPTOUT: true
strategy:
# let us get failures from other jobs even if one fails
fail-fast: false
matrix:
os: [ 'windows-latest', 'ubuntu-latest', 'macos-latest' ]
include:
- os: 'windows-latest'
rid: 'win-x64'
configuration: 'release'
publishLanguageServer: 'false'
- os: 'ubuntu-latest'
rid: 'linux-x64'
configuration: 'release'
publishLanguageServer: 'true'
- os: 'macos-latest'
rid: 'osx-x64'
configuration: 'release'
publishLanguageServer: 'false'
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
submodules: true
- name: Setup .NET Core
uses: actions/setup-dotnet@v1.7.2
with:
dotnet-version: 3.1.301
- name: Build
run: dotnet build --configuration ${{ matrix.configuration }}
- name: Test
run: dotnet test --configuration ${{ matrix.configuration }} --collect:"XPlat Code Coverage" --settings ./.github/workflows/codecov.runsettings
- name: Publish Language Server
if: ${{ matrix.publishLanguageServer == 'true' }}
run: dotnet publish --configuration ${{ matrix.configuration }} ./src/Bicep.LangServer/Bicep.LangServer.csproj
- name: Publish Bicep
run: dotnet publish --configuration ${{ matrix.configuration }} --self-contained true -p:PublishTrimmed=true -p:PublishSingleFile=true -r ${{ matrix.rid }} ./src/Bicep.Cli/Bicep.Cli.csproj
- name: Upload Language Server
uses: actions/upload-artifact@v2
if: ${{ matrix.publishLanguageServer == 'true' }}
with:
name: Bicep.LangServer
path: ./src/Bicep.LangServer/bin/${{ matrix.configuration }}/netcoreapp3.1/publish/*
- name: Upload Bicep
uses: actions/upload-artifact@v2
with:
name: bicep-${{ matrix.configuration }}-${{ matrix.rid }}
path: ./src/Bicep.Cli/bin/${{ matrix.configuration }}/netcoreapp3.1/${{ matrix.rid }}/publish/*
if-no-files-found: error
- name: Upload Code Coverage
uses: codecov/codecov-action@v1
with:
flags: dotnet
build-windows-setup:
name: 'Build Windows Setup'
runs-on: 'windows-latest'
needs: build-bicep
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
submodules: true
- name: Setup .NET Core
uses: actions/setup-dotnet@v1.7.2
with:
dotnet-version: 3.1.301
- name: Download Bicep CLI
uses: actions/download-artifact@v2
with:
name: bicep-release-win-x64
path: ./src/installer-win/bicep
- name: Build Windows Installer
run: dotnet build --configuration release ./src/installer-win/installer.proj
- name: Upload Windows Installer
uses: actions/upload-artifact@v2
with:
name: bicep-setup-win-x64
path: ./src/installer-win/bin/release/net46/bicep-setup-win-x64.exe
build-vsix:
name: 'Build VSIX'
runs-on: 'ubuntu-latest'
needs: build-bicep
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
submodules: true
- name: Setup Node.js
uses: actions/setup-node@v2.1.2
with:
node-version: 10.x
- name: npm ci
run: npm ci
working-directory: ./src/vscode-bicep
- name: Run lint
run: npm run lint
working-directory: ./src/vscode-bicep
- name: Download Language Server
uses: actions/download-artifact@v2
with:
name: Bicep.LangServer
path: ./src/vscode-bicep/bicepLanguageServer
- name: Create VSIX
run: npm run package
working-directory: ./src/vscode-bicep
- name: Upload VSIX
uses: actions/upload-artifact@v2
with:
name: vscode-bicep.vsix
path: ./src/vscode-bicep/vscode-bicep.vsix
if-no-files-found: error
build-playground:
name: 'Build Playground'
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
submodules: true
- name: Setup .NET Core
uses: actions/setup-dotnet@v1.7.2
with:
dotnet-version: 3.1.301
- name: Setup Node.js
uses: actions/setup-node@v2.1.2
with:
node-version: 10.x
- name: npm ci
run: npm ci
working-directory: ./src/playground
- name: Build
run: npm run package
working-directory: ./src/playground
- name: Upload
uses: actions/upload-artifact@v2
with:
name: playground
path: ./src/playground/dist/*
if-no-files-found: error
create-release:
name: 'Create Release'
runs-on: 'ubuntu-latest'
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
needs: [build-bicep, build-vsix, build-playground, build-windows-setup]
steps:
- name: Download Build Artifacts
uses: actions/download-artifact@v2
- name: Create Release
id: create-release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: true
prerelease: false
- name: Upload bicep-win-x64.exe
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: ./bicep-release-win-x64/bicep.exe
asset_name: bicep-win-x64.exe
asset_content_type: binary/octet-stream
- name: Upload bicep-linux-x64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: ./bicep-release-linux-x64/bicep
asset_name: bicep-linux-x64
asset_content_type: binary/octet-stream
- name: Upload bicep-osx-x64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: ./bicep-release-osx-x64/bicep
asset_name: bicep-osx-x64
asset_content_type: binary/octet-stream
- name: Upload vscode-bicep.vsix
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: ./vscode-bicep.vsix/vscode-bicep.vsix
asset_name: vscode-bicep.vsix
asset_content_type: binary/octet-stream
- name: Upload bicep-setup-win-x64.exe
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: ./bicep-setup-win-x64/bicep-setup-win-x64.exe
asset_name: bicep-setup-win-x64.exe
asset_content_type: binary/octet-stream