Skip to content

Commit c83b277

Browse files
authored
Merge pull request #517 from ronghuwz/beta
Beta env set up for dev and test
2 parents 67b9a5a + eea9c6c commit c83b277

18 files changed

+386
-11
lines changed
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
name: Deploy to Beta Dev Env
2+
3+
on:
4+
push:
5+
branches:
6+
- beta
7+
8+
env:
9+
project-directory: ./
10+
11+
jobs:
12+
build:
13+
name: Release and Build
14+
runs-on: ubuntu-latest
15+
if: |
16+
!contains(github.event.head_commit.message, 'skip-ci') &&
17+
github.event_name == 'push' &&
18+
github.repository == 'Greenstand/treetracker-wallet-api'
19+
steps:
20+
- uses: actions/checkout@v4
21+
- name: Use Node.js 20.x
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: '20.x'
25+
26+
27+
- run: npm i -g semantic-release @semantic-release/{git,exec,changelog}
28+
- run: semantic-release
29+
env:
30+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
31+
32+
- name: npm clean install
33+
run: npm ci
34+
working-directory: ${{ env.project-directory }}
35+
36+
37+
- name: get-npm-version
38+
id: package-version
39+
uses: martinbeentjes/npm-get-version-action@master
40+
with:
41+
path: ./
42+
43+
44+
- name: Set up QEMU
45+
uses: docker/setup-qemu-action@v1
46+
47+
- name: Set up Docker Buildx
48+
uses: docker/setup-buildx-action@v1
49+
50+
- name: Login to DockerHub
51+
uses: docker/login-action@v1
52+
with:
53+
username: ${{ secrets.DOCKERHUB_USERNAME }}
54+
password: ${{ secrets.DOCKERHUB_TOKEN }}
55+
56+
- name: Build snapshot with git sha and push on merge
57+
id: docker_build_snapshot_merge
58+
uses: docker/build-push-action@v2
59+
with:
60+
context: ./
61+
file: ./Dockerfile
62+
push: true
63+
tags: greenstand/treetracker-wallet-api:${{ steps.package-version.outputs.current-version }}
64+
65+
- shell: bash
66+
run: |
67+
echo '${{ steps.package-version.outputs.current-version }}' > image-tag
68+
69+
- name: persist tag name
70+
uses: actions/upload-artifact@v4
71+
with:
72+
name: image-tag-${{github.sha}}
73+
path: image-tag
74+
75+
deploy:
76+
name: Deploy latest to beta development environment
77+
runs-on: ubuntu-latest
78+
needs: build
79+
if: |
80+
!contains(github.event.head_commit.message, 'skip-ci') &&
81+
github.event_name == 'push' &&
82+
github.repository == 'Greenstand/${{ github.event.repository.name }}'
83+
steps:
84+
- uses: actions/checkout@v4
85+
- name: get-npm-version
86+
id: package-version
87+
uses: martinbeentjes/npm-get-version-action@master
88+
with:
89+
path: ./
90+
91+
- name: Download tag name
92+
uses: actions/download-artifact@v4
93+
with:
94+
name: image-tag-${{github.sha}}
95+
96+
- name: Set image tag name
97+
id: image-tag-name
98+
run: |
99+
value=`cat image-tag`
100+
echo "::set-output name=image-tag-name::$value"
101+
102+
- name: Install kustomize
103+
run: curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
104+
105+
- name: Run kustomize
106+
run: (cd deployment/overlays/beta/beta-development && ../../../../kustomize edit set image greenstand/treetracker-wallet-api:${{ steps.image-tag-name.outputs.image-tag-name }} )
107+
108+
- name: Install doctl for kubernetes
109+
uses: digitalocean/action-doctl@v2
110+
with:
111+
token: ${{ secrets.DEV_DIGITALOCEAN_TOKEN }}
112+
113+
- name: Save DigitalOcean kubeconfig
114+
run: doctl kubernetes cluster kubeconfig save ${{ secrets.DEV_CLUSTER_NAME}}
115+
116+
- name: Delete completed migration jobs prior to deployment
117+
run: kubectl -n wallet-api-beta delete job --ignore-not-found=true wallet-db-migration-job
118+
119+
- name: Update kubernetes resources
120+
run: kustomize build deployment/overlays/beta/beta-development | kubectl apply -n ${{ secrets.K8S_NAMESPACE_BETA }} --wait -f -
121+
# - name: Attempt to wait for migration job to complete
122+
# run: kubectl wait --for=condition=complete --timeout=45s job/wallet-db-migration-job
123+
124+
# test:
125+
# name: End to End Test
126+
# runs-on: ubuntu-latest
127+
# needs: deploy
128+
# env:
129+
# ENVIRONMENT: beta-dev
130+
131+
# steps:
132+
# - uses: actions/checkout@v4
133+
134+
# - name: Use Node.js 20.x
135+
# uses: actions/setup-node@v4
136+
# with:
137+
# node-version: '20.x'
138+
139+
# - name: Install mocha
140+
# run: npm install -g mocha
141+
142+
# - run: npm ci
143+
144+
# - run: echo ${{ secrets.BETA_DEVELOPMENT_ENV }}
145+
146+
# - run: ${{ secrets.BETA_DEVELOPMENT_ENV }} npm run test-e2e
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: Deploy to Beta Test Env
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
git-tag:
7+
description: 'Branch/hash/tag'
8+
required: true
9+
default: 'beta'
10+
11+
env:
12+
project-directory: ./
13+
14+
jobs:
15+
deploy-beta-test:
16+
name: Deploy latest to beta test environment, requires approval
17+
runs-on: ubuntu-latest
18+
if: github.repository == 'Greenstand/treetracker-wallet-api'
19+
20+
steps:
21+
- name: Checkout code
22+
uses: actions/checkout@v4
23+
with:
24+
ref: ${{ github.event.inputs.git-tag }}
25+
26+
- name: get-npm-version
27+
id: package-version
28+
uses: martinbeentjes/npm-get-version-action@master
29+
with:
30+
path: ./
31+
32+
- name: Install kustomize
33+
run: curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
34+
35+
- name: Run kustomize
36+
run: (cd deployment/overlays/beta/beta-test && ../../../../kustomize edit set image greenstand/treetracker-wallet-api:${{ steps.package-version.outputs.current-version }} )
37+
38+
- name: Install doctl for kubernetes
39+
uses: digitalocean/action-doctl@v2
40+
with:
41+
token: ${{ secrets.TEST_DIGITALOCEAN_TOKEN }}
42+
43+
- name: Save DigitalOcean kubeconfig
44+
run: doctl kubernetes cluster kubeconfig save ${{ secrets.TEST_CLUSTER_NAME }}
45+
46+
- name: Delete completed migration jobs prior to deployment
47+
run: kubectl -n wallet-api-beta delete job wallet-db-migration-job
48+
49+
- name: Update kubernetes resources
50+
run: kustomize build deployment/overlays/beta/beta-test | kubectl apply -n ${{ secrets.K8S_NAMESPACE_BETA }} --wait -f -

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,6 @@ tmp/
1818
*.log
1919

2020
#IDEA
21-
.idea
21+
.idea.DS_Store
22+
.secrets
23+
.github/event-payloads/

.releaserc

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
{
2-
"branches": ["master", "v1.10"],
2+
"branches": [
3+
"master",
4+
"v1.10",
5+
{
6+
"name": "beta",
7+
"prerelease": true
8+
}
9+
],
310
"plugins": [
4-
"@semantic-release/commit-analyzer",
5-
"@semantic-release/release-notes-generator",
6-
"@semantic-release/changelog",
7-
"@semantic-release/npm",
8-
["@semantic-release/git", {
11+
"@semantic-release/commit-analyzer",
12+
"@semantic-release/release-notes-generator",
13+
"@semantic-release/changelog",
14+
"@semantic-release/npm",
15+
[
16+
"@semantic-release/git",
17+
{
918
"assets": ["docs", "package.json", "CHANGELOG.md"],
1019
"message": "chore(release): ${nextRelease.version} [skip ci]"
11-
}],
12-
"@semantic-release/github"
13-
]
20+
}
21+
],
22+
"@semantic-release/github"
23+
]
1424
}

deployment/base/kustomization.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ resources:
44
- treetracker-wallet-api-service.yaml
55
- treetracker-wallet-api-db-migration-job.yaml
66
- treetracker-wallet-api-clusterrole.yaml
7-
- treetracker-wallet-api-clusterrolebinding.yaml
7+
- treetracker-wallet-api-clusterrolebinding.yaml
8+
- treetracker-wallet-api-beta-clusterrolebinding.yaml
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: k8s-wait-for-beta
5+
subjects:
6+
- kind: ServiceAccount
7+
name: default
8+
namespace: wallet-api-beta
9+
roleRef:
10+
kind: ClusterRole
11+
name: k8s-wait-for
12+
apiGroup: rbac.authorization.k8s.io

deployment/overlays/beta/.DS_Store

6 KB
Binary file not shown.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace: wallet-api-beta
2+
3+
resources:
4+
- ../../../base
5+
# - ../common
6+
- secrets/jwt-sealedsecret.yaml
7+
- secrets/db-sealedsecret.yaml
8+
- secrets/s3-sealedsecret.yaml
9+
10+
patchesStrategicMerge:
11+
- mapping-patch.yaml
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: getambassador.io/v2
2+
kind: Mapping
3+
metadata:
4+
name: treetracker-wallet-api-v2
5+
spec:
6+
prefix: /beta/wallet/
7+
service: treetracker-wallet-api-v2
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
apiVersion: bitnami.com/v1alpha1
3+
kind: SealedSecret
4+
metadata:
5+
creationTimestamp: null
6+
name: treetracker-api-database-connection
7+
namespace: wallet-api-beta
8+
spec:
9+
encryptedData:
10+
db: AgBtOq7jP3S9fF4UPwWRk1kkgoMzkvGQygdPIHKAnRNS2ISW0YFyZnR+YqQV9dhfn0NMSWuZqjCk9DY3VOzFtU6bfQWk8AV/4jxlGkh1WXwWYU1BBrwxdPjroVV0u2LTke+n/TR7Woy6jQA8ViS8PUxNzFkGI/09WfbLQ+UEtnGse5HUk2YVYRgd/ALM59GsOclI5ywvpigqjWkG3auljwg2Df3efoaeWylMCNEk02ICG3nx0Sr6VTMbFGskdq+H56HJim238odfWEFcEUAwfyNGA+7Tq0uvepRVsAb8l8X7pq1ZG7zF/9pXd3gw4Y5sQ88/dr8ch+9GIn7lEOQ9GSthJgELXn/xO+6r3MGWLtde3S34fXvnLuUdoZrVGGMsIlqQYWRiESf8E+8+aRhQ/TTDxzSmoIxOQMA4QEvdyy8T5h4mW11laoa78VFUxkTokD006Q9DYux7f2v21hE8WKJM/3qG2IJvNm6lR519kOyrC5KKtRKgqp5ncc0AGVtCHdre8Csq8ARrXjKEcHhsSfow+ayuYCL77qVUiKKMHfunRIGIeYQr/jEunHTGWexLPwQ5V8G4dls+D13x3IwOUgQ/3pJIoSyVuf8DCBfcPG7eBZbSnK/ghoBYXzQ0Ake1bt9fP36wd+wEhrQuUa650Yx/mssyBKYoyU3vM2MnJTVQpsyjHHmTBHe7MCDJPxUDMU/oxbDfyKPSAFL0NnpfZz7kO9KsXI3NRtb68Bk2CeASHhaeQcWkPEUhek8IXk1TCoXqDobKmSA97Dy9dhpZtQHHYjePgLsSodR1m8UFHf178FMnIj/ZcY6RF8t7tykkZJXoeRSqBH1nTiJxFT6kt+UxH8cuQwgZOEntYNLSkejU4Qy2ORo3kQ==
11+
schema: AgAKFEUtYmHQLqjdSdT1J9h2uqJA2w3ppM9DMNGiTrqkHslt5hI92KjTxRwWx/SCOPjgm3BkmQRYjzqoD1E3eFCXmQVaHVs5lXml2eFMLJrXtkSQvmzGyz0S4u6l/ncreaQK43OYRrgMmT5GUJFMyXPl61ND8rfur2Nl6nTAHOoy8LCvrijjzsTjAZF0XU2qDljHVb7V/DZwk5TA7QjqQuXRyu5NBQUXhOmiWbDN1gBWpL8P+uvtr0smEubH95MPbNZukZG5KJDqOTA8BMHVvVcQHBt8ZsJWImWJprlfrCvoMTNljcvZxpEryDgbF36nO73WQK9+9o4ZEgSoC+4CxTYOOKDryXDxS7kceK0HV4zddABVhMiCrSTIYoSJPwdziClD7ZKv1ZqN3UHMZIln78x0RwB7n7DNCr4BPyIqzPhsZ8X2UNLq88QY5kuoJAYF7ovfL67ADnF1w357RE4MYdhKnM/PheGuq/ReTpMqb7hiHPelCWIblvUaA8npdlD3wkiZ9n7yXE3LoO8jHIyXm1ZUm94Z5Y8K5o4+yfQFdAS8N9DTG5Y36KJfsz9mKG/nET2Ns4dBwEinOr0xgSknFZsYzvi3OYsptYBqpX+f3qoG6Sp7iSG1fVJ8Our4HgRpKlwCkOnTZMf5FMcD/3LhKhEg13qHPm26WGt/HiiFAId/cc44B2yE+AtwMLkJGnOXfVmxTPEwzhg=
12+
template:
13+
metadata:
14+
creationTimestamp: null
15+
name: treetracker-api-database-connection
16+
namespace: wallet-api-beta
17+
type: Opaque

0 commit comments

Comments
 (0)