-
Notifications
You must be signed in to change notification settings - Fork 8
149 lines (132 loc) · 4.29 KB
/
ci.yaml
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
141
142
143
144
145
146
147
148
name: CI - CD
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
validations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- uses: bahmutov/npm-install@v1
- name: Build back
run: cd api && yarn build
- name: Fullcheck
run: yarn fullcheck
check_if_version_upgraded:
name: Check if version upgrade
if: github.event_name == 'push'
runs-on: ubuntu-latest
needs: validations
outputs:
from_version: ${{ steps.step1.outputs.from_version }}
to_version: ${{ steps.step1.outputs.to_version }}
is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }}
steps:
- uses: garronej/ts-ci@v2.1.0
id: step1
with:
action_name: is_package_json_version_upgraded
docker:
runs-on: ubuntu-latest
# needs:
# - check_if_version_upgraded
# - create_github_release
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Computing Docker image tags
id: step1
env:
IS_UPGRADED_VERSION: ${{ needs.check_if_version_upgraded.outputs.is_upgraded_version }}
TO_VERSION: ${{ needs.check_if_version_upgraded.outputs.to_version }}
run: |
OUT=$GITHUB_REPOSITORY:$TO_VERSION,$GITHUB_REPOSITORY:latest
OUT=$(echo "$OUT" | awk '{print tolower($0)}')
echo ::set-output name=docker_tags::$OUT
- uses: docker/build-push-action@v5
with:
push: true
context: .
target: api
tags: ${{ steps.step1.outputs.docker_tags }}
- uses: docker/build-push-action@v5
with:
push: true
context: .
target: web
tags: ${{ steps.step1.outputs.docker_tags }}
# build_docker_images:
# # needs:
# # - check_if_version_upgraded
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - uses: docker/setup-buildx-action@v3
# - uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Build API Docker image
# run: |
# docker build . --target api --tag api:latest
# docker save api:latest -o api.tar
# - name: Build Web Docker image
# run: |
# docker build . --target web --tag web:latest
# docker save web:latest -o web.tar
# - name: Upload API Image as Artifact
# uses: actions/upload-artifact@v4
# with:
# name: api-image
# path: api.tar
# - name: Upload Web Image as Artifact
# uses: actions/upload-artifact@v4
# with:
# name: web-image
# path: web.tar
# push_docker_images_to_docker_hub:
# needs:
# - build_docker_images
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Download API Image Artifact
# uses: actions/download-artifact@v4
# with:
# name: api-image
# path: .
# - name: Download Web Image Artifact
# uses: actions/download-artifact@v4
# with:
# name: web-image
# path: .
# - name: Load API Image
# run: docker load -i api.tar
# - name: Load Web Image
# run: docker load -i web.tar
# - name: Push API Image to Docker Hub
# run: echo ${{ secrets.DOCKER_HUB_PASSWORD }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
# env:
# DOCKER_HUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
# DOCKER_HUB_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
# run: docker push api:latest
# - name: Push Web Image to Docker Hub
# run: echo ${{ secrets.DOCKER_HUB_PASSWORD }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
# env:
# DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
# DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }}
# run: docker push web:latest