-
Notifications
You must be signed in to change notification settings - Fork 3
143 lines (114 loc) · 4.13 KB
/
ci-release-development.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
name: Development Deploy
on:
push:
tags:
- alpha2
- payments
jobs:
install-dependencies:
runs-on: ubuntu-latest
container:
image: node:16-alpine
steps:
- uses: actions/checkout@v1
- name: install tar (for actions/cache)
run: apk add --no-cache tar
# use the cached node_modules -- this is only used to speed up the install-dependencies job
- uses: actions/cache@v2
with:
path: 'node_modules'
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/yarn.lock') }}
- name: install git
run: apk add --no-cache git
- name: yarn install
run: yarn install
# this copy of node_modules will be used for the rest of the workflow
- name: compress node_modules
run: tar -czf node_modules.tar.gz node_modules
- uses: actions/upload-artifact@v2
with:
name: node_modules.tar.gz
path: node_modules.tar.gz
lint:
needs: install-dependencies
runs-on: ubuntu-latest
container:
image: node:16-alpine
steps:
- uses: actions/checkout@v1
- uses: actions/download-artifact@v2
with:
name: node_modules.tar.gz
- name: extract node_modules
run: tar -xzf node_modules.tar.gz
- name: lint
run: yarn lint
release:
needs: lint
runs-on: ubuntu-latest
container:
image: node:16-alpine
steps:
- name: install git
run: apk add --no-cache git
- name: workaround for git directory permission issue, see https://github.com/actions/checkout/issues/760
run: git config --global --add safe.directory /__w/blogchain-vue/blogchain-vue
- uses: actions/checkout@v1
- name: Set deploy environment vars
run: |
echo "DEPLOY_ENV=$(echo ${GITHUB_REF#refs/tags/})" >> $GITHUB_ENV
echo "RELEASE_ID=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Copy .env for this deploy environment
run: cp ./.github/configs/${DEPLOY_ENV}.env .env
env:
DEPLOY_ENV: ${{ env.DEPLOY_ENV }}
- uses: actions/download-artifact@v2
with:
name: node_modules.tar.gz
- name: extract node_modules
run: tar -xzf node_modules.tar.gz
- name: build
run: yarn build
- name: Compress blogchain-vue static site
run: |
[[ -d dist ]] || { echo "Missing dist, exiting" >&2 ; exit 1 ; }
build_name="blogchain_vue-$DEPLOY_ENV-$RELEASE_ID"
mv dist $build_name
tar -czvf "${build_name}.tar.gz" "$build_name"
echo "BUILD_NAME=$build_name" >> $GITHUB_ENV
env:
DEPLOY_ENV: ${{ env.DEPLOY_ENV }}
RELEASE_ID: ${{ env.RELEASE_ID }}
- name: Upload build as release asset
uses: ncipollo/release-action@v1
with:
artifacts: ${{ env.BUILD_NAME }}.tar.gz
token: ${{ secrets.GITREPO_TOKEN }}
allowUpdates: true
deploy:
needs: release
runs-on: ubuntu-latest
container:
image: lexauw/ansible-alpine:latest
steps:
- name: install git
run: apk add --no-cache git
- name: workaround for git directory permission issue, see https://github.com/actions/checkout/issues/760
run: git config --global --add safe.directory /__w/blogchain-vue/blogchain-vue
- uses: actions/checkout@v1
- name: install bash
run: apk add --no-cache bash
- name: Set deploy environment vars
run: |
echo "DEPLOY_ENV=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
echo "RELEASE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
echo "RELEASE_ID=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Deploy updated images
run: ./.github/scripts/deploy.sh
env:
DEPLOY_ENV: ${{ env.DEPLOY_ENV }}
RELEASE_ID: ${{ env.RELEASE_ID }}
RELEASE_TAG: ${{ env.RELEASE_TAG }}
GITHUB_USER: ${{ secrets.GITREPO_USER }}
GITHUB_TOKEN: ${{ secrets.GITREPO_TOKEN }}
ANSIBLE_PRIVATE_KEY: ${{ secrets.ANSIBLE_PRIVATE_KEY }}