-
-
Notifications
You must be signed in to change notification settings - Fork 31
129 lines (108 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
name: CI
on:
push:
branches:
- master
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install poetry
uses: snok/install-poetry@v1
with:
version: 1.6.1
- name: Install python
id: setup-python
uses: actions/setup-python@v4
with:
cache: 'poetry'
python-version-file: 'pyproject.toml'
- name: make sure poetry lockfile is up to date
run: poetry check --lock && echo Lockfile is ok, $(poetry --version)
shell: bash
- name: install deps
if: steps.setup-python.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root
- name: Run the linters
run: make lint
build-images:
needs: lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install python
id: setup-python
uses: actions/setup-python@v4
with:
python-version-file: 'pyproject.toml'
- name: Set up qemu
uses: docker/setup-qemu-action@v2
- name: Set up buildx
uses: docker/setup-buildx-action@v2
- name: Generate image identifier
id: image
uses: ASzc/change-string-case-action@v5
with:
string: ${{ github.repository_owner }}
- name: Log in to the container registry
uses: docker/login-action@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build bot image
uses: docker/build-push-action@v3
with:
context: .
target: bot
push: ${{ github.ref == 'refs/heads/master' }}
tags: |
ghcr.io/${{ steps.image.outputs.lowercase }}/selfmailbot-bot:latest
ghcr.io/${{ steps.image.outputs.lowercase }}/selfmailbot-bot:${{ github.sha }}
build-args: |
PYTHON_VERSION=${{ steps.setup-python.outputs.python-version }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build web image
uses: docker/build-push-action@v3
with:
context: .
target: web
push: ${{ github.ref == 'refs/heads/master' }}
tags: |
ghcr.io/${{ steps.image.outputs.lowercase }}/selfmailbot-web:latest
ghcr.io/${{ steps.image.outputs.lowercase }}/selfmailbot-web:${{ github.sha }}
build-args: |
PYTHON_VERSION=${{ steps.setup-python.outputs.python-version }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build background processing worker image
uses: docker/build-push-action@v3
with:
context: .
target: worker
push: ${{ github.ref == 'refs/heads/master' }}
tags: |
ghcr.io/${{ steps.image.outputs.lowercase }}/selfmailbot-worker:latest
ghcr.io/${{ steps.image.outputs.lowercase }}/selfmailbot-worker:${{ github.sha }}
build-args: |
PYTHON_VERSION=${{ steps.setup-python.outputs.python-version }}
cache-from: type=gha
cache-to: type=gha,mode=max
deploy:
needs: build-images
if: github.ref == 'refs/heads/master' && github.repository_owner == 'f213'
runs-on: ubuntu-latest
steps:
- name: update production images
uses: appleboy/[email protected]
with:
host: ${{ secrets.DEPLOY_HOST }}
username: selfmailbot
key: ${{ secrets.DEPLOY_KEY }}
script: sudo /home/selfmailbot/update_images.sh ${{ github.sha }}