-
Notifications
You must be signed in to change notification settings - Fork 1
140 lines (126 loc) · 3.71 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
on:
push:
branches:
- '*'
pull_request:
schedule:
- cron: '13 5 * * *'
name: Continuous Integration
jobs:
ubuntu:
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: groot
POSTGRES_USER: groot
POSTGRES_DB: groot
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
redis:
image: redis
ports:
- 6379:6379
strategy:
matrix:
rust:
- stable
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
components: rustfmt, clippy
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --all-features
- name: Test
uses: actions-rs/cargo@v1
with:
command: test
- name: fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings
- name: Prepare env
run: |
mv .env.example .env
cat >> requirements.yml<< EOF
---
roles:
- geerlingguy.postgresql
collections:
- community.kubernetes
EOF
- name: Run
run: |
./target/release/groot &
sleep 2
curl -X POST -F '[email protected]' http://127.0.0.1:3030/sync/
sleep 30
ansible-galaxy collection install --force -vvv community.kubernetes -c -s http://127.0.0.1:3030/
wget https://galaxy.ansible.com/download/testing-k8s_demo_collection-0.0.3.tar.gz
ansible-galaxy collection publish -c -s http://127.0.0.1:3030/ testing-k8s_demo_collection-0.0.3.tar.gz -vvvv
macos:
runs-on: macos-latest
strategy:
matrix:
rust:
- stable
steps:
- uses: actions/checkout@v2
- name: Install libpq
run: |
brew install libpq
brew link --force libpq
echo "PQ_LIB_DIR=$(brew --prefix libpq)/lib" >> $GITHUB_ENV
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --all-features
- name: Test
uses: actions-rs/cargo@v1
with:
command: test
image:
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
needs: [ubuntu, macos]
steps:
- uses: actions/checkout@v3
- name: Quay login
env:
QUAY_BOT_PASSWORD: ${{ secrets.QUAY_BOT_PASSWORD }}
QUAY_BOT_USERNAME: ${{ secrets.QUAY_BOT_USERNAME }}
run: echo "$QUAY_BOT_PASSWORD" | docker login -u "$QUAY_BOT_USERNAME" --password-stdin quay.io
- name: Push image to quay
run: |
sed -e '1 s/\(^FROM\)/FROM --platform=\$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross
docker buildx create --name project-v3-builder
docker buildx use project-v3-builder
PLATFORMS=linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
docker buildx build --push --platform=${PLATFORMS} --tag quay.io/fabricio_aguiar/groot:latest -f Dockerfile.cross .
docker buildx rm project-v3-builder
rm Dockerfile.cross