-
-
Notifications
You must be signed in to change notification settings - Fork 0
147 lines (120 loc) · 4.06 KB
/
release-and-publish.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
141
142
143
144
145
146
147
# name: Release And Publish
# on:
# workflow_run:
# workflows: [Test Coverage]
# types:
# - completed
# branches:
# - main
# paths:
# - backend/**
# jobs:
# release:
# name: Release
# runs-on: ubuntu-latest
# if: ${{ github.event.workflow_run.conclusion == 'success' }}
# permissions:
# contents: read
# pull-requests: write
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Get version
# id: get_version
# run: |
# wget https://raw.githubusercontent.com/lzaycoe/brainbox-deployment/refs/heads/main/scripts/get-version.sh
# sudo apt-get install jq
# chmod +x ./get-version.sh
# echo "version=$(./get-version.sh ./package.json)" >> $GITHUB_OUTPUT
# - name: Release
# uses: softprops/action-gh-release@v2
# with:
# name: ${{ github.repository.split('/')[1] }} - v${{ steps.get_version.outputs.version }}
# tag_name: ${{ steps.get_version.outputs.version }}
# generate_release_notes: true
# publish:
# name: Publish Docker Image
# runs-on: ubuntu-latest
# if: ${{ github.event.workflow_run.conclusion == 'success' }}
# permissions:
# contents: read
# packages: write
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
# - name: Get version
# id: get_version
# run: |
# wget https://raw.githubusercontent.com/lzaycoe/brainbox-deployment/refs/heads/main/scripts/get-version.sh
# sudo apt-get install jq
# chmod +x ./get-version.sh
# echo "version=$(./get-version.sh ./package.json)" >> $GITHUB_OUTPUT
# - name: Login ghcr.io
# uses: docker/login-action@v3
# with:
# registry: ghcr.io
# username: ${{ github.repository_owner }}
# password: ${{ secrets.GITHUB_TOKEN }}
# - name: Publish image
# run: |
# cd backend
# docker buildx build . \
# -t ghcr.io/${{ github.repository }}:${{ steps.get_version.outputs.version }} \
# -t ghcr.io/${{ github.repository }}:latest \
# --platform=linux/amd64 \
# --load
# docker push ghcr.io/${{ github.repository }}:${{ steps.get_version.outputs.version }}
# docker push ghcr.io/${{ github.repository }}:latest
name: Release and Publish
on:
workflow_run:
workflows: [Test Coverage]
types:
- completed
branches:
- main
jobs:
release:
name: Release
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
permissions:
contents: read
pull-requests: write
steps:
- name: Get Version
uses: ./.github/actions/get-version
- name: Release
uses: softprops/action-gh-release@v2
with:
name: brainbox-backend - v${{ steps.get_version.outputs.version }}
tag_name: ${{ steps.get_version.outputs.version }}
generate_release_notes: true
publish:
name: Publish Docker Image
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
permissions:
contents: read
packages: write
steps:
- name: Get Version
uses: ./.github/actions/get-version
- name: Login ghcr.io
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Publish image
run: |
cd backend
docker buildx build . \
-t ghcr.io/${{ github.repository }}:${{ steps.get_version.outputs.version }} \
-t ghcr.io/${{ github.repository }}:latest \
--platform=linux/amd64 \
--load
docker push ghcr.io/${{ github.repository }}:${{ steps.get_version.outputs.version }}
docker push ghcr.io/${{ github.repository }}:latest