forked from asciidoctor/asciidoctor
-
Notifications
You must be signed in to change notification settings - Fork 1
150 lines (150 loc) · 5.04 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
name: CI
on:
push:
branches: ['**']
paths-ignore: ['*.adoc', 'docs/**']
pull_request:
paths-ignore: ['*.adoc', 'docs/**']
schedule:
- cron: '0 2 * * *'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
activate:
if: |
(github.event_name == 'schedule' && github.repository_owner == 'asciidoctor') ||
github.event_name == 'push' || github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request' && !startsWith(github.head_ref, 'docs/'))
runs-on: ubuntu-latest
steps:
- name: Proceed
run: echo ok go
build:
needs: activate
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
ruby: [jruby-9.4.5.0, '2.7', '3.0', '3.3']
asciimath-version: [~]
haml-version: [~]
pygments-version: ['~> 2.3.0']
rouge-version: [~]
exclude:
# remove 3.3 on ubuntu-latest to mark as primary
- os: ubuntu-latest
ruby: '3.3'
include:
- os: ubuntu-latest
ruby: truffleruby-22.2.0
- os: ubuntu-latest
ruby: jruby-9.2.21.0
pygments-version: ~
- os: windows-latest
ruby: jruby-9.2.21.0
pygments-version: ~
- os: macos-latest
ruby: '3.3'
- os: ubuntu-latest
ruby: '2.7'
asciimath-version: '~> 1.0.0'
- os: ubuntu-latest
ruby: '2.7'
haml-version: '~> 5.2.0'
- os: ubuntu-latest
ruby: '2.7'
pygments-version: '~> 1.2.0'
- os: ubuntu-latest
ruby: '2.7'
rouge-version: '~> 2.0.0'
- os: ubuntu-latest
ruby: '3.3'
primary: primary
runs-on: ${{ matrix.os }}
env:
BUNDLE_WITHOUT: coverage:docs:lint
SOURCE_DATE_EPOCH: '1521504000'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set AsciiMath version
if: matrix.asciimath-version
run: echo 'ASCIIMATH_VERSION=${{ matrix.asciimath-version }}' >> $GITHUB_ENV
- name: Set Pygments version
if: matrix.pygments-version
run: echo 'PYGMENTS_VERSION=${{ matrix.pygments-version }}' >> $GITHUB_ENV
- name: Install prerequisites for Pygments ~> 1.2.0 (Linux)
if: matrix.os == 'ubuntu-latest' && matrix.pygments-version == '~> 1.2.0'
run: sudo apt-get install python2
- name: Set Rouge version
if: matrix.rouge-version
run: echo 'ROUGE_VERSION=${{ matrix.rouge-version }}' >> $GITHUB_ENV
- name: Enable lint and coverage (primary only)
if: matrix.primary
run: |
echo 'BUNDLE_WITHOUT=docs' >> $GITHUB_ENV
echo 'COVERAGE=true' >> $GITHUB_ENV
- name: Upgrade Java (JRuby for Windows)
if: matrix.os == 'windows-latest' && startsWith(matrix.ruby, 'jruby-')
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Install Ruby (uses cached dependencies for non-scheduled build)
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler: ${{ matrix.os == 'windows-latest' && '2.3.22' || 'default' }}
bundler-cache: ${{ github.event_name != 'schedule' }}
- name: Install dependencies (scheduled build only)
if: github.event_name == 'schedule'
run: |
bundle config --local path vendor/bundle
bundle --jobs 3 --retry 3
- name: Run linter
if: matrix.primary
run: bundle exec rake lint
- name: Check default stylesheet
if: matrix.primary
run: |
cd src/stylesheets
npm i --silent --no-audit --no-fund --no-package-lock --no-progress
npm run lint
npm run build
cd -
if [ -n "$(git diff --name-only -- data/stylesheets)" ]; then
echo 'Detected the following uncommitted changes to the default stylesheet:'
git --no-pager diff
exit 1
fi
- name: Run tests
run: bundle exec ruby -w $(bundle exec ruby -e 'print File.join Gem.bindir, %q(rake)') test:all
- name: Install gem and doc
if: |
!startsWith(matrix.ruby, 'truffleruby-') && (matrix.os != 'windows-latest' || !startsWith(matrix.ruby, 'jruby-9.2.'))
run: |
ruby -r fileutils -e "FileUtils.rmtree 'pkg'"
bundle exec gem build asciidoctor.gemspec -o asciidoctor.gem
bundle exec gem install --local --document rdoc,ri asciidoctor.gem
bundle exec gem uninstall -ax asciidoctor
build-dependents:
name: build:dependents
if: success() && github.event_name == 'push' && github.repository == 'asciidoctor/asciidoctor'
needs: build
runs-on: ubuntu-latest
env:
BUNDLE_WITHOUT: docs:lint:coverage
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true
- name: Build dependents
env:
GITHUB_API_TOKEN: ${{ secrets._GITHUB_API_TOKEN }}
run: bundle exec rake build:dependents