-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (120 loc) · 3.7 KB
/
Copy pathstats.yml
File metadata and controls
137 lines (120 loc) · 3.7 KB
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
on:
push:
branches:
- 'main'
tags:
- 'stats/v*'
paths:
- stats/**
- .github/workflows/stats.yml
- .github/workflows/_*.yml
- .github/actions/**
pull_request:
paths:
- stats/**
- .github/workflows/stats.yml
- .github/workflows/_*.yml
- .github/actions/**
name: Test, lint and docker (stats)
defaults:
run:
working-directory: stats
jobs:
test:
name: Unit, doc and integration tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres:17.2
env:
POSTGRES_PASSWORD: admin
POSTGRES_USER: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
--name postgres
ports:
- 5432:5432
env:
JOBS: 2
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
working-directory: stats
- name: Free disk space
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: false
swap-storage: false
- name: Set Swap Space
id: swapfile
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 14
- name: Build
id: build
if: steps.swapfile.outcome == 'success'
run: RUST_BACKTRACE=1 cargo test --no-run --locked --workspace --all-features --jobs $JOBS
- name: Verify ENVs in README.md
run: cargo run --bin env-docs-generation -- --validate-only
- name: Unit tests
run: RUST_BACKTRACE=1 RUST_LOG=info cargo test --locked --workspace --all-features --lib --bins --jobs $JOBS -- --nocapture
if: steps.build.outcome == 'success'
- name: Doc tests
run: cargo test --locked --workspace --all-features --doc --jobs $JOBS
if: steps.build.outcome == 'success'
- name: Integration tests
run: RUST_BACKTRACE=1 RUST_LOG=info cargo test --locked --workspace --test '*' -- --nocapture
if: steps.build.outcome == 'success'
- name: DB tests
run: RUST_BACKTRACE=1 RUST_LOG=warn cargo test --locked --workspace -- --nocapture --ignored
if: steps.build.outcome == 'success'
env:
DATABASE_URL: postgres://postgres:admin@localhost:5432/
lint:
name: Linting
uses: ./.github/workflows/_linting.yml
with:
working-directory: stats
docker:
name: Docker build and docker push
needs:
- test
- lint
if: |
always() &&
(needs.test.result == 'success' || needs.test.result == 'cancelled') &&
(needs.lint.result == 'success' || needs.lint.result == 'cancelled')
uses: ./.github/workflows/_docker-build-push.yml
with:
service-name: stats
secrets:
ARM_RUNNER_HOSTNAME: ${{ secrets.ARM_RUNNER_HOSTNAME }}
ARM_RUNNER_KEY: ${{ secrets.ARM_RUNNER_KEY }}
publish_types_package:
name: Publish types package
uses: './.github/workflows/npm-publisher.yml'
needs: docker
if: needs.docker.outputs.tag-value != ''
secrets: inherit
with:
version: ${{ needs.docker.outputs.tag-value }}
project_name: stats
push-swagger:
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags'))
uses: ./.github/workflows/_push_swagger.yml
with:
service_name: 'stats'
swagger_path: 'stats/stats-proto/swagger/stats.swagger.yaml'
secrets:
api_token_github: ${{ secrets.BLOCKSCOUT_BOT_TOKEN }}