This repository has been archived by the owner on Feb 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
134 lines (118 loc) · 4.93 KB
/
main.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
name: main
on:
push:
branches:
- main
tags:
- "**"
pull_request:
branches:
- main
jobs:
python:
name: python
runs-on: ubuntu-latest
env:
ENVIRONMENT: prod
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "${GITHUB_CONTEXT}"
- name: Checkout
uses: actions/checkout@v4
- name: Install Poetry
run: |
pipx environment
pipx install poetry
poetry config virtualenvs.in-project true
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.12
cache: poetry
- name: Poetry cache
uses: actions/cache@v3
with:
path: ~/.cache/pypoetry
key: pypoetry-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}
restore-keys: |
pypoetry-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}
pypoetry-${{ runner.os }}-
- name: Run CI
env:
ENVIRONMENT: ci
run: |
source $(poetry env info --path)/bin/activate
make run-ci
docker:
name: docker
runs-on: ubuntu-latest
env:
ENVIRONMENT: prod
IMAGE_TAG: ${{ github.ref_name }}
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "${GITHUB_CONTEXT}"
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker CI
run: |
touch .env
ENVIRONMENT=ci make dc-ci
- name: Docker metadata
id: docker_metadata
uses: docker/metadata-action@v5
with:
images: |
${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}
ghcr.io/${{ github.repository }}
- name: Login to Docker Hub
if: ${{ github.event_name != 'pull_request' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GHCR
if: ${{ github.event_name != 'pull_request' }}
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push dev image
uses: docker/build-push-action@v5
with:
target: dev
tags: |
${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:dev
ghcr.io/${{ github.repository }}:dev
labels: ${{ steps.docker_metadata.outputs.labels }}
annotations: ${{ steps.docker_metadata.outputs.annotations }}
push: ${{ github.event_name != 'pull_request' }}
cache-from: |
type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:dev
type=registry,ref=ghcr.io/${{ github.repository }}:dev
type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:cache
type=registry,ref=ghcr.io/${{ github.repository }}:cache
cache-to: type=inline
- name: Build and push prod image
if: ${{ github.event_name != 'pull_request' }}
uses: docker/build-push-action@v5
with:
tags: ${{ steps.docker_metadata.outputs.tags }}
labels: ${{ steps.docker_metadata.outputs.labels }}
annotations: ${{ steps.docker_metadata.outputs.annotations }}
push: true
cache-from: |
type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:dev
type=registry,ref=ghcr.io/${{ github.repository }}:dev
type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:cache
type=registry,ref=ghcr.io/${{ github.repository }}:cache
cache-to: |
type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:cache,mode=max
type=registry,ref=ghcr.io/${{ github.repository }}:cache,mode=max