diff --git a/.gitignore b/.gitignore index a000f4e..7bed497 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,6 @@ tests/messages tests/debuglog test.log gadgets/ +package/ *.pyc *.dSYM diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7d5d004..79bde13 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,61 +3,114 @@ # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml -jobs: -- job: 'PythonLint' - displayName: "Python Lint" - pool: - vmImage: 'ubuntu-16.04' - container: 'puremourning/vimspector:test' - steps: - - bash: pip3 install -r dev_requirements.txt - displayName: "Install requirements" +stages: +- stage: Build + jobs: + - job: 'PythonLint' + displayName: "Python Lint" + pool: + vmImage: 'ubuntu-16.04' + container: 'puremourning/vimspector:test' + steps: + - bash: pip3 install -r dev_requirements.txt + displayName: "Install requirements" - - bash: $HOME/.local/bin/flake8 python3/ - displayName: "Run flake8" + - bash: $HOME/.local/bin/flake8 python3/ + displayName: "Run flake8" -- job: 'Vimscript' - displayName: "Vimscript Lint" - pool: - vmImage: 'ubuntu-16.04' - container: 'puremourning/vimspector:test' - steps: - - bash: pip3 install -r dev_requirements.txt - displayName: "Install requirements" + - job: 'Vimscript' + displayName: "Vimscript Lint" + pool: + vmImage: 'ubuntu-16.04' + container: 'puremourning/vimspector:test' + steps: + - bash: pip3 install -r dev_requirements.txt + displayName: "Install requirements" - - bash: $HOME/.local/bin/vint autoload/ plugin/ - displayName: "Run vint" + - bash: $HOME/.local/bin/vint autoload/ plugin/ + displayName: "Run vint" -- job: 'linux' - pool: - vmImage: 'ubuntu-16.04' - container: 'puremourning/vimspector:test' - steps: - - bash: python3 install_gadget.py - displayName: 'Install gadgets' + - job: 'linux' + pool: + vmImage: 'ubuntu-16.04' + container: 'puremourning/vimspector:test' + steps: + - bash: python3 install_gadget.py + displayName: 'Install gadgets' - - bash: vim --version - displayName: 'Print vim version information' + - bash: vim --version + displayName: 'Print vim version information' - - bash: ./run_tests - displayName: 'Run the tests' - env: - VIMSPECTOR_MIMODE: gdb + - bash: ./run_tests + displayName: 'Run the tests' + env: + VIMSPECTOR_MIMODE: gdb -- job: 'macos' - pool: - vmImage: 'macOS-10.13' - steps: - - bash: brew install macvim - displayName: 'Install vim' + - bash: ./make_package linux $(Build.SourceVersion) + displayName: 'Package' - - bash: python3 install_gadget.py - displayName: 'Install gadgets' + - task: PublishPipelineArtifact@0 + inputs: + artifactName: 'package-linux' + targetPath: 'package/linux-$(Build.SourceVersion).tar.gz' - - bash: vim --version - displayName: 'Print vim version information' + - job: 'macos' + pool: + vmImage: 'macOS-10.13' + steps: + - bash: brew install macvim + displayName: 'Install vim' - - bash: ./run_tests - displayName: 'Run the tests' - env: - VIMSPECTOR_MIMODE: lldb + - bash: python3 install_gadget.py + displayName: 'Install gadgets' + + - bash: vim --version + displayName: 'Print vim version information' + + - bash: ./run_tests + displayName: 'Run the tests' + env: + VIMSPECTOR_MIMODE: lldb + + - bash: ./make_package macos $(Build.SourceVersion) + displayName: 'Package' + + - task: PublishPipelineArtifact@0 + inputs: + artifactName: 'package-macos' + targetPath: 'package/macos-$(Build.SourceVersion).tar.gz' + +- stage: "Publish" + dependsOn: + - "Build" + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) + jobs: + - job: 'Publish' + pool: + vmImage: 'ubuntu-16.04' + steps: + - task: DownloadPipelineArtifact@0 + inputs: + artifactName: 'package-linux' + targetPath: $(Build.ArtifactStagingDirectory) + - task: DownloadPipelineArtifact@0 + inputs: + artifactName: 'package-macos' + targetPath: $(Build.ArtifactStagingDirectory) + - task: GitHubRelease@0 + inputs: + gitHubConnection: puremourning + repositoryName: '$(Build.Repository.Name)' + action: 'create' # Options: create, edit, delete + target: '$(Build.SourceVersion)' # Required when action == Create || Action == Edit + tagSource: 'manual' # Required when action == Create# Options: auto, manual + tag: "$(Build.BuildId)" + #title: # Optional + #releaseNotesSource: 'file' # Optional. Options: file, input + #releaseNotesFile: # Optional + #releaseNotes: # Optional + #assets: '$(Build.ArtifactStagingDirectory)/*' # Optional + #assetUploadMode: 'delete' # Optional. Options: delete, replace + #isDraft: false # Optional + isPreRelease: true # Optional + #addChangeLog: true # Optional diff --git a/make_package b/make_package new file mode 100755 index 0000000..027b850 --- /dev/null +++ b/make_package @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -e +set -v + +OS=$1 +shift + +VERSION=$1 +shift + +ROOT=$(pwd) +PACK=${ROOT}/package/${OS} + +mkdir -p ${PACK} +pushd ${PACK} + mkdir -p vimspector/opt + mkdir -p vimspector/start + pushd vimspector/opt + for d in autoload plugin python3 vendor doc; do + if [[ -d ${ROOT}/$d ]]; then + cp -r ${ROOT}/$d . + fi + done + mkdir -p gadgets + cp -r ${ROOT}/gadgets/${OS} gadgets/ + popd +popd + +cd ${ROOT}/package +tar zcvf ${OS}-${VERSION}.tar.gz ${OS}/