-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (132 loc) · 3.83 KB
/
crystal.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
name: Crystal CI
on:
push:
branches: [master]
pull_request:
branches: [master]
permissions:
contents: write
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
container:
image: crystallang/crystal
services:
postgres:
image: postgres
ports:
- 5432:5432
env:
POSTGRES_USER: example
POSTGRES_PASSWORD: example
POSTGRES_DB: example
options: >-
--health-cmd="pg_isready -U postgres"
--health-interval=10s
--health-timeout=5s
--health-retries=5
steps:
- uses: actions/checkout@v4
- name: Update package list and install SQLite and development files
run: |
apt-get update
apt-get install -y sqlite3 libsqlite3-dev
- name: Verify SQLite installation
run: sqlite3 --version
- name: Create Sqlite databases
run: |
mkdir -p ./spec/db
touch ./spec/db/northwind.db
touch ./spec/db/data.db
touch ./spec/db/billing.db
touch ./spec/db/tabledb.db
chmod 664 ./spec/db/northwind.db
chmod 664 ./spec/db/data.db
chmod 664 ./spec/db/billing.db
chmod 664 ./spec/db/tabledb.db
- name: Install dependencies
run: shards install
- name: Check code style
run: crystal tool format --check
- name: Run tests
env:
DATABASE_URL: postgres://example:example@postgres:5432/example
run: crystal spec
release:
runs-on: ubuntu-latest
needs:
- build
if: ${{ success() }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Compute Release Version
id: semver
uses: paulhatch/[email protected]
with:
tag_prefix: "v"
major_pattern: "(MAJOR)"
minor_pattern: "(MINOR)"
# A string to determine the format of the version output
format: "${major}.${minor}.${patch}"
# If this is set to true, *every* commit will be treated as a new version.
bump_each_commit: true
- name: Bump Shard Version
id: bump-shard
uses: fjogeleit/yaml-update-action@master
with:
valueFile: shard.yml
propertyPath: version
value: ${{steps.semver.outputs.version}}
branch: master
updateFile: true
message: Set shard version ${{ steps.semver.outputs.version }}
- name: Create Release
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{steps.semver.outputs.version_tag}}
release_name: Release v${{steps.semver.outputs.version}}
draft: false
prerelease: false
docs:
needs:
- release
if: ${{ success() }}
runs-on: ubuntu-latest
container:
image: crystallang/crystal
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: shards install
- name: Generate Azu API Docs
run: crystal docs --project-version=${{ steps.semver.outputs.version }}
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "./docs"
- name: Setup Node.js
uses: actions/setup-node@v3
- name: Install dependencies
run: npm ci
- name: Build VitePress site
run: npm run docs:build
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4