diff --git a/.azure/build-template.yml b/.azure/build-template.yml new file mode 100644 index 0000000..67c2a65 --- /dev/null +++ b/.azure/build-template.yml @@ -0,0 +1,27 @@ +parameters: + name: '' + artifact: '' + runtime: '' + +jobs: +- job: ${{ parameters.name }} + pool: + vmImage: ${{ parameters.vmImage }} + continueOnError: false + steps: + - task: DotNetCoreCLI@2 + inputs: + command: 'build' + projects: '**/*.csproj' + - task: DotNetCoreCLI@2 + inputs: + command: 'publish' + publishWebProjects: false + projects: '**/*.csproj' + zipAfterPublish: true + arguments: --configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory) --self-contained -r ${{ parameters.runtime }} + - pwsh: mv $(build.artifactstagingdirectory)/s.zip $(build.artifactstagingdirectory)/${{ parameters.artifact }}.zip + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(build.artifactstagingdirectory)' + ArtifactName: ${{ parameters.artifact }} diff --git a/.azure/build-test.yml b/.azure/build-test.yml new file mode 100644 index 0000000..c2ccd43 --- /dev/null +++ b/.azure/build-test.yml @@ -0,0 +1,12 @@ + + +jobs: +- job: 'test' + pool: + vmImage: ubuntu-latest + continueOnError: false + steps: + - task: DotNetCoreCLI@2 + inputs: + command: 'build' + projects: '**/*.csproj' \ No newline at end of file diff --git a/.dockerignore b/.dockerignore index bbd5c8a..f1724d4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,5 +2,6 @@ sample.botconfig.json .git .gitignore .env +.vscode LICENSE README.md \ No newline at end of file diff --git a/.gitignore b/.gitignore index b6a4079..184c804 100644 --- a/.gitignore +++ b/.gitignore @@ -596,6 +596,7 @@ fabric.properties .env .idea +.vscode *.botconfig.json !sample.botconfig.json diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..2d18279 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,73 @@ +trigger: +- master + +pr: +- master + +stages: +- stage: test + jobs: + - template: .azure/build-test.yml # Template reference + +- stage: build + condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') + jobs: + - template: .azure/build-template.yml # Template reference + parameters: + name: linux + vmImage: 'ubuntu-latest' + artifact: linux + runtime: linux-x64 + - template: .azure/build-template.yml # Template reference + parameters: + name: windows + vmImage: 'windows-2019' + artifact: windows + runtime: win-x64 + - template: .azure/build-template.yml # Template reference + parameters: + name: macos + vmImage: 'macOS-10.14' + artifact: macos + runtime: osx-x64 + +- stage: github + condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') + jobs: + - job: github_release + steps: + - checkout: none + - task: DownloadPipelineArtifact@2 + inputs: + buildType: 'current' + targetPath: '$(Pipeline.Workspace)' + - task: GitHubRelease@0 + inputs: + gitHubConnection: 'github.com' + repositoryName: 'mattiascibien/image-search-bot' + tagSource: manual + tag: v$(Build.BuildNumber) + title: Release v$(Build.BuildNumber) + assets: '$(Pipeline.Workspace)/**/*.zip' + isDraft: false + addChangeLog: true + +- stage: docker + condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') + jobs: + - job: dockerhub + continueOnError: false + steps: + - task: Docker@2 + inputs: + command: 'build' + Dockerfile: '**/Dockerfile' + - task: Docker@2 + inputs: + containerRegistry: 'DockerHub' + repository: 'mattiascibien/image-search-bot' + command: 'buildAndPush' + Dockerfile: '**/Dockerfile' + tags: | + $(Build.BuildNumber) + latest \ No newline at end of file