From 3e452b73d1887635cd27c52a8859c71f614e5daa Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Fri, 4 Sep 2020 16:39:19 +0100 Subject: [PATCH 1/3] Migrate linting to GitHub actions --- .github/workflows/build.yaml | 32 ++++++++++++++++++++++++++++++++ azure-pipelines.yml | 24 ------------------------ 2 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..b5ffad6 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,32 @@ +name: Build +on: + push: + branches: + - master + pull_request: + branches: + - master + +defaults: + run: + shell: bash + +jobs: + PythonLint: + runs-on: ubuntu-16.04 + container: 'puremourning/vimspector:test' + steps: + - uses: actions/checkout@v2 + - name: 'Insatll requirements' + run: pip3 install --user -r dev_requirements.txt + - name: 'Run flake8' + run: '$HOME/.local/bin/flake8 python3/ *.py' + VimscriptLint: + runs-on: 'ubuntu-16.04' + container: 'puremourning/vimspector:test' + steps: + - uses: actions/checkout@v2 + - name: 'Install requirements' + run: pip3 install --user -r dev_requirements.txt + - name: 'Run vint' + run: $HOME/.local/bin/vint autoload/ compiler/ plugin/ tests/ syntax/ diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7eb6946..e3f5f0d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -7,30 +7,6 @@ pr: 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/ *.py' - 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" - - - bash: $HOME/.local/bin/vint autoload/ compiler/ plugin/ tests/ syntax/ - displayName: "Run vint" - - job: 'linux' pool: vmImage: 'ubuntu-16.04' From 8b8be9f5b59b3b86a10768ac9cd33a23e95d3d72 Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Fri, 4 Sep 2020 17:51:01 +0100 Subject: [PATCH 2/3] Port builds to GitHub Actions too --- .github/workflows/build.yaml | 145 ++++++++++++++++++++++++++++++++--- azure-pipelines.yml | 128 ------------------------------- 2 files changed, 135 insertions(+), 138 deletions(-) delete mode 100644 azure-pipelines.yml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b5ffad6..febe8d7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -16,17 +16,142 @@ jobs: runs-on: ubuntu-16.04 container: 'puremourning/vimspector:test' steps: - - uses: actions/checkout@v2 - - name: 'Insatll requirements' - run: pip3 install --user -r dev_requirements.txt - - name: 'Run flake8' - run: '$HOME/.local/bin/flake8 python3/ *.py' + - uses: actions/checkout@v2 + - name: 'Insatll requirements' + run: pip3 install --user -r dev_requirements.txt + - name: 'Run flake8' + run: '$HOME/.local/bin/flake8 python3/ *.py' VimscriptLint: runs-on: 'ubuntu-16.04' container: 'puremourning/vimspector:test' steps: - - uses: actions/checkout@v2 - - name: 'Install requirements' - run: pip3 install --user -r dev_requirements.txt - - name: 'Run vint' - run: $HOME/.local/bin/vint autoload/ compiler/ plugin/ tests/ syntax/ + - uses: actions/checkout@v2 + - name: 'Install requirements' + run: pip3 install --user -r dev_requirements.txt + - name: 'Run vint' + run: $HOME/.local/bin/vint autoload/ compiler/ plugin/ tests/ syntax/ + + Linux: + runs-on: 'ubuntu-16.04' + container: + image: 'puremourning/vimspector:test' + options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined + steps: + - uses: actions/checkout@v2 + - run: | + eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) + go get -u github.com/go-delve/delve/cmd/dlv + name: 'Install Delve for Go' + + - uses: actions/cache@v2 + with: + key: v1-gadgets-${{ runner.os }}-${{ hashFiles( 'python3/vimspector/gadgets.py' ) }} + path: gadgets/linux/download + name: Cache gadgets + + - run: vim --version + name: 'Print vim version information' + + - run: | + eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) + export GOPATH=$HOME/go + ./run_tests --install --update --report messages --quiet + name: 'Run the tests' + env: + VIMSPECTOR_MIMODE: gdb + + - run: ./make_package linux ${{ github.run_id }} + name: 'Package' + + # TODO: test the tarball + + - name: "Upload package" + uses: actions/upload-artifact@v2 + with: + name: 'package-linux' + path: 'package/linux-${{ github.run_id }}.tar.gz' + + MacOS: + runs-on: 'macos-10.15' + steps: + - uses: actions/checkout@v2 + - run: | + brew update + brew doctor || true + for p in macvim tcl-tk llvm; do + brew install $p + brew outdated $p || brew upgrade $p + done + name: 'Install vim and deps' + + - run: go get -u github.com/go-delve/delve/cmd/dlv + name: 'Install Delve for Go' + + - uses: actions/cache@v2 + with: + key: v1-gadgets-${{ runner.os }}-${{ hashFiles( 'python3/vimspector/gadgets.py' ) }} + path: gadgets/macos/download + name: Cache gadgets + + - run: vim --version + name: 'Print vim version information' + + - run: ./run_tests --install --update --report messages --quiet + name: 'Run the tests' + env: + VIMSPECTOR_MIMODE: lldb + + - run: ./make_package macos ${{ github.run_id }} + name: 'Package' + + # TODO: test the tarball + + - name: "Upload package" + uses: actions/upload-artifact@v2 + with: + name: 'package-macos' + path: 'package/macos-${{ github.run_id }}.tar.gz' + + PublishRelease: + runs-on: 'ubuntu-16.04' + needs: + - Linux + - MacOS + if: github.ref == 'refs/heads/master' + steps: + - name: 'Download artifacts' + id: download_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: Build ${{ github.run_id }} + draft: false + prerelease: true + + - name: 'Upload Linux Package' + id: upload-release-asset-linux + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ${{ steps.download_artifacts.outputs.download-path }}/package-linux + asset_name: linux-${{ github.run_id }}.tar.gz + asset_content_type: application/gzip + + - name: 'Upload MacOS Package' + id: upload-release-asset-macos + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ${{ steps.download_artifacts.outputs.download-path }}/package-macos + asset_name: macos-${{ github.run_id }}.tar.gz + asset_content_type: application/gzip diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index e3f5f0d..0000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,128 +0,0 @@ -trigger: -- master - -pr: -- master - -stages: -- stage: Build - jobs: - - job: 'linux' - pool: - vmImage: 'ubuntu-16.04' - container: - image: 'puremourning/vimspector:test' - options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined - steps: - - bash: | - eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) - go get -u github.com/go-delve/delve/cmd/dlv - displayName: 'Install Delve for Go' - - - task: CacheBeta@0 - inputs: - key: v2 | gadgets | $(Agent.OS) | python3/vimspector/gadgets.py - path: gadgets/linux/download - displayName: Cache gadgets - - - bash: vim --version - displayName: 'Print vim version information' - - - bash: | - eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) - export GOPATH=$HOME/go - ./run_tests --install --update --report messages --quiet - displayName: 'Run the tests' - env: - VIMSPECTOR_MIMODE: gdb - - - bash: ./make_package linux $(Build.SourceVersion) - displayName: 'Package' - - # TODO: test the tarball - - - task: PublishPipelineArtifact@0 - inputs: - artifactName: 'package-linux' - targetPath: 'package/linux-$(Build.SourceVersion).tar.gz' - - - job: 'macos' - pool: - vmImage: 'macOS-10.14' - steps: - # Node.js tool installer - # Finds or downloads and caches the specified version spec of Node.js and adds it to the PATH - - task: NodeTool@0 - inputs: - versionSpec: '>=12.0.0' - - - bash: | - brew update - brew doctor - for p in macvim tcl-tk llvm; do - brew install $p - brew outdated $p || brew upgrade $p - done - displayName: 'Install vim and deps' - - - bash: go get -u github.com/go-delve/delve/cmd/dlv - displayName: 'Install Delve for Go' - - - task: CacheBeta@0 - inputs: - key: v2 | gadgets | $(Agent.OS) | python3/vimspector/gadgets.py - path: gadgets/macos/download - displayName: Cache gadgets - - - bash: vim --version - displayName: 'Print vim version information' - - - bash: ./run_tests --install --update --report messages --quiet - displayName: 'Run the tests' - env: - VIMSPECTOR_MIMODE: lldb - - - bash: ./make_package macos $(Build.SourceVersion) - displayName: 'Package' - - # TODO: test the tarball - - - 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 From 99d20bb2773f6986b00dd51fbd5e68520308ff07 Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Fri, 11 Sep 2020 15:01:37 +0100 Subject: [PATCH 3/3] Update mergify config for GHA --- .mergify.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.mergify.yml b/.mergify.yml index a5fcafb..09d3d83 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -3,10 +3,14 @@ pull_request_rules: conditions: - author=puremourning - base=master + # Review - status-success=code-review/reviewable - - status-success=puremourning.vimspector # Azure pipeline - - "#changes-requested-reviews-by=0" + # CI https://doc.mergify.io/conditions.html#github-actions + - status-success=PythonLint + - status-success=VimscriptLint + - status-success=MacOS + actions: &merge-actions merge: @@ -18,12 +22,16 @@ pull_request_rules: conditions: - author!=puremourning - base=master + # Review - status-success=code-review/reviewable - - status-success=puremourning.vimspector # Azure pipeline - - approved-reviews-by=puremourning - - "#approved-reviews-by>=1" - "#changes-requested-reviews-by=0" + - approved-reviews-by=puremourning + # CI https://doc.mergify.io/conditions.html#github-actions + - status-success=PythonLint + - status-success=VimscriptLint + - status-success=Linux + - status-success=MacOS actions: <<: *merge-actions comment: