Skip to content

Commit

Permalink
Add AppVeyor pull request previews
Browse files Browse the repository at this point in the history
Merges manubot/rootstock#262
References manubot/rootstock#198

Add an AppVeyor continuous integration file to enable manuscript build previews in pull requests.
AppVeyorBot comments in pull requests with a link to the latest manuscript PDF.
Move shared continuous integration steps to an install script.
Change the continuous integration skip message in the deploy script to work across multiple continuous integration services.
  • Loading branch information
ploegieku authored Aug 9, 2019
1 parent 5ffe993 commit 2275b83
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 15 deletions.
57 changes: 57 additions & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# See https://www.appveyor.com/docs/getting-started-with-appveyor-for-linux/
skip_branch_with_pr: true

# Enable 'Do not build on "Push" events' in the AppVeyor project settings
# to only build commits from pull requests
branches:
only:
- master

# Only run AppVeyor on commits that modify at least one of the following files
# Delete these lines to run AppVeyor on all master branch commits
only_commits:
files:
- .appveyor.yml
- build/
- ci/install.sh
- content/

image: ubuntu
services:
- docker

install:
# Create the message with the triggering commit before install so it is
# available if the build fails
- TRIGGERING_COMMIT=${APPVEYOR_PULL_REQUEST_HEAD_COMMIT:-APPVEYOR_REPO_COMMIT}
- appveyor AddMessage "commit $TRIGGERING_COMMIT"
- source ci/install.sh

test_script:
- bash build/build.sh
- MANUSCRIPT_FILENAME=manuscript-$APPVEYOR_BUILD_VERSION-${TRIGGERING_COMMIT:0:7}.pdf
- cp output/manuscript.pdf $MANUSCRIPT_FILENAME
- appveyor PushArtifact $MANUSCRIPT_FILENAME

build: off

cache:
- ci/cache

on_success:
- echo "Artifacts available from $APPVEYOR_URL/project/$APPVEYOR_ACCOUNT_NAME/$APPVEYOR_PROJECT_SLUG/builds/$APPVEYOR_BUILD_ID/artifacts"
- echo "Updated PDF available from $APPVEYOR_URL/api/buildjobs/$APPVEYOR_JOB_ID/artifacts/$MANUSCRIPT_FILENAME"

# The following lines can be safely deleted, which will disable AppVeyorBot
# notifications in GitHub pull requests
# Notifications use Mustache templates http://mustache.github.io/mustache.5.html
# See https://www.appveyor.com/docs/notifications/#customizing-message-template
# for available variables
notifications:
- provider: GitHubPullRequest
template: "AppVeyor [build {{buildVersion}}]({{buildUrl}})
{{#jobs}}{{#messages}} for {{message}} by @{{&commitAuthorUsername}} {{/messages}}{{/jobs}}
{{#passed}} is now complete.{{/passed}}
{{#failed}} failed.{{/failed}}
{{#jobs}}{{#artifacts}} The rendered manuscript from this build is temporarily available for download at
[`{{fileName}}`]({{permalink}}).{{/artifacts}}{{/jobs}}"
13 changes: 1 addition & 12 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,8 @@ services:
branches:
only:
- master
before_install:
- wget https://repo.continuum.io/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh
--output-document miniconda.sh
- bash miniconda.sh -b -p $HOME/miniconda
- source $HOME/miniconda/etc/profile.d/conda.sh
- hash -r
- conda config
--set always_yes yes
--set changeps1 no
install:
- conda env create --quiet --file build/environment.yml
- conda list --name manubot
- conda activate manubot
- source ci/install.sh
script:
- bash build/build.sh
cache:
Expand Down
11 changes: 11 additions & 0 deletions SETUP.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,3 +196,14 @@ When there are no longer any unstaged changes, then do `git commit`.

If updating `master` via a pull request, proceed to push the commit to GitHub and open a pull request.
Once the pull request is ready to merge, use GitHub's "Create a merge commit" option rather than "Squash and merge" or "Rebase and merge" to preserve the rootstock commit hashes.

# Previewing pull request builds with AppVeyor

You can optionally enable AppVeyor continuous integration to view pull request builds.
Unlike Travis CI, AppVeyor supports storing manuscripts generated during pull request builds as artifacts.
These can be previewed to facilitate pull request review and ensure formatting and reference changes render as expected.
When a pull request build runs successfully, **@AppVeyorBot** will comment on the pull request with a download link to the manuscript PDF.

To enable AppVeyor, follow steps 1 and 2 of the [AppVeyor welcome](https://www.appveyor.com/docs/) to sign in to AppVeyor and add your manuscript repository as an AppVeyor project.
The repository already contains an `.appveyor.yml` build configuration file, so no other setup is required.
AppVeyor only runs when it detects changes that are likely to affect the manuscript.
4 changes: 1 addition & 3 deletions ci/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ fi

# Commit message
MESSAGE="\
$(git log --max-count=1 --format='%s')
$(git log --max-count=1 --format='%s') [ci skip]
This build is based on
https://github.com/$TRAVIS_REPO_SLUG/commit/$TRAVIS_COMMIT.
Expand All @@ -68,8 +68,6 @@ This commit was created by the following Travis CI build and job:
$TRAVIS_BUILD_WEB_URL
$TRAVIS_JOB_WEB_URL
[ci skip]
The full commit message that triggered this build is copied below:
$TRAVIS_COMMIT_MESSAGE
Expand Down
19 changes: 19 additions & 0 deletions ci/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env bash

## install.sh: run during a Travis CI or AppVeyor build to install the conda environment.

# Set options for extra caution & debugging
set -o errexit \
-o pipefail

wget https://repo.continuum.io/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh \
--output-document miniconda.sh
bash miniconda.sh -b -p $HOME/miniconda
source $HOME/miniconda/etc/profile.d/conda.sh
hash -r
conda config \
--set always_yes yes \
--set changeps1 no
conda env create --quiet --file build/environment.yml
conda list --name manubot
conda activate manubot

0 comments on commit 2275b83

Please sign in to comment.