-
Notifications
You must be signed in to change notification settings - Fork 0
126 lines (109 loc) · 4.64 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
name: Create and publish a Docker image
# remember to put the githb Token into the action secrets! (GH_PACKAGE_TOKEN)
# https://docs.github.com/en/actions/publishing-packages/publishing-docker-images#publishing-images-to-github-packages
# https://community.redwoodjs.com/t/containerize-redwood-sides-with-docker-compose/2706
# https://github.com/caprover/caprover/issues/360
# https://github.com/caprover/caprover/issues/1605
on:
push:
# branches: ['master']
branches: ['dev', 'production', 'testing']
env:
REGISTRY: ghcr.io
jobs:
build-and-push-image:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- dockerfile: ./web/Dockerfile
image: ghcr.io/pcace/redwood-docker-compose-web
appname: web
- dockerfile: ./api/Dockerfile
image: ghcr.io/pcace/redwood-docker-compose-api
appname: api
permissions:
contents: read
packages: write
steps:
- name: Get branch name
id: branch-name
uses: tj-actions/branch-names@v6
# checkout lates repository
- name: Checkout repository
uses: actions/checkout@v2
# add .env file from github secret
# this can be done in the caprover interface too!!!
# https://github.com/caprover/caprover/discussions/1571
- name: add .env file
uses: DamianReeves/write-file-action@master
with:
path: api/db/.env
contents: ${{ secrets.DB_STAGING }}
write-mode: append
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GH_PACKAGE_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ matrix.image }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
file: ${{ matrix.dockerfile }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# from https://stackoverflow.com/questions/73599803/refer-to-docker-image-variable-name-in-github-action
- name: Deploy image
uses: floms/action-caprover@v1
with:
host: '${{ secrets.CAPROVER_SERVER }}'
password: '${{ secrets.CAPROVER_PASSWORD }}'
app: ${{ steps.branch-name.outputs.current_branch }}${{ matrix.appname }}
image: ${{ steps.meta.outputs.tags }}
# -name: push to caprover
# #https://github.com/marketplace/actions/caprover-deploy
# uses: AlexxNB/caprover-action@v1
# with:
# server: '${{ secrets.CAPROVER_SERVER }}'
# password: '${{ secrets.CAPROVER_PASSWORD }}'
# appname: ${{ steps.branch-name.outputs.current_branch }}${{ matrix.appname }})
# branch: ${{ steps.meta.outputs.tags }}
# when both docker images are made and uploaded then add a caprovercfg to branch caprover-deploy
# so that caprover can pick up the change and deploy
# https://github.com/caprover/caprover/issues/360
# https://github.com/ad-m/github-push-action
# - name: Build and push Docker image
# uses: actions/checkout@v2
# with:
# persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
# fetch-depth: 0 # otherwise, there would be errors pushing refs to the destination repository.
# - name: generate and Commit captain-definition to caprover-relase-branch
# run: |
# git config --local user.email "[email protected]"
# git config --local user.name "pcace"
# git checkout caprover-release
# echo "{"schemaVersion": 2,"imageName" : "ghcr.io/pcace/redwood-docker-compose-web:master"}" | tee captain-definition
# git add captain-definition
# git commit -a -m "Add caprover web" --allow-empty
# - name: Push changes caprover-release
# uses: ad-m/github-push-action@master
# with:
# github_token: ${{ secrets.GH_PACKAGE_TOKEN }}
# branch: caprover-release
# -name: push to caprover
# #https://github.com/marketplace/actions/caprover-deploy
# uses: AlexxNB/caprover-action@v1
# with:
# server: 'https://captain.pfcace.de'
# password: '${{ secrets.CAPROVER_PW }}'
# appname: 'staging'
# branch: 'caprover-release'