Setting up continuous deployment
authorDavid Négrier <d.negrier@thecodingmachine.com>
Thu, 9 Apr 2020 09:00:30 +0000 (11:00 +0200)
committerDavid Négrier <d.negrier@thecodingmachine.com>
Thu, 9 Apr 2020 09:00:30 +0000 (11:00 +0200)
.github/workflows/build-and-deploy.yml [new file with mode: 0644]
back/.dockerignore [new file with mode: 0644]
back/Dockerfile [new file with mode: 0644]
deeployer.json [new file with mode: 0644]
front/.dockerignore [new file with mode: 0644]
front/Dockerfile [new file with mode: 0644]

diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml
new file mode 100644 (file)
index 0000000..ec7d3c6
--- /dev/null
@@ -0,0 +1,65 @@
+name: Build, push and deploy Docker image
+
+on:
+  push:
+    branches:
+      - master
+      - cd
+#    tags:
+#      - '*'
+
+# Enables BuildKit
+env:
+  DOCKER_BUILDKIT: 1
+
+jobs:
+
+  build-front:
+
+    runs-on: ubuntu-latest
+
+    steps:
+
+      - name: Checkout
+        uses: actions/checkout@v2
+
+      - name: "Build and push front image"
+        uses: docker/build-push-action@v1
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+          repository: thecodingmachine/workadventure-front
+          tag_with_ref: true
+          add_git_labels: true
+        working-directory: "front"
+
+  build-back:
+
+    runs-on: ubuntu-latest
+
+    steps:
+
+      - name: Checkout
+        uses: actions/checkout@v2
+
+      - name: "Build and push back image"
+        uses: docker/build-push-action@v1
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+          repository: thecodingmachine/workadventure-back
+          tag_with_ref: true
+          add_git_labels: true
+        working-directory: "back"
+
+  deeploy:
+    needs:
+      - build-front
+      - build-back
+    runs-on: ubuntu-latest
+
+      - name: Checkout
+        uses: actions/checkout@v2
+
+      - name: "Deploy"
+        uses: thecodingmachine/deeployer@master
diff --git a/back/.dockerignore b/back/.dockerignore
new file mode 100644 (file)
index 0000000..ca0a17d
--- /dev/null
@@ -0,0 +1,4 @@
+/dist/
+/node_modules/
+/dist/bundle.js
+/yarn-error.log
diff --git a/back/Dockerfile b/back/Dockerfile
new file mode 100644 (file)
index 0000000..edaeee6
--- /dev/null
@@ -0,0 +1,8 @@
+FROM thecodingmachine/nodejs:12
+
+COPY . .
+RUN yarn install
+
+ENV NODE_ENV=production
+
+CMD ['yarn', 'run', 'prod']
diff --git a/deeployer.json b/deeployer.json
new file mode 100644 (file)
index 0000000..2eaeeba
--- /dev/null
@@ -0,0 +1,19 @@
+{
+  "$schema": "https://raw.githubusercontent.com/thecodingmachine/deeployer/master/deeployer.schema.json",
+  "containers": {
+     "back": {
+       "image": "",
+       "host": "http://api.workadventure.test.thecodingmachine.com",
+       "env": {
+         "SECRET_KEY": "tempSecretKeyNeedsToChange"
+       }
+     },
+    "front": {
+      "image": "",
+      "host": "http://workadventure.test.thecodingmachine.com",
+      "env": {
+        "API_URL": "http://api.workadventure.test.thecodingmachine.com"
+      }
+    }
+  }
+}
diff --git a/front/.dockerignore b/front/.dockerignore
new file mode 100644 (file)
index 0000000..048e02c
--- /dev/null
@@ -0,0 +1,3 @@
+/node_modules/
+/dist/bundle.js
+/yarn-error.log
diff --git a/front/Dockerfile b/front/Dockerfile
new file mode 100644 (file)
index 0000000..4ab4f27
--- /dev/null
@@ -0,0 +1,9 @@
+# we are rebuilding on each deploy to cope with the API_URL environment URL
+FROM thecodingmachine/nodejs:12-apache
+
+COPY . .
+RUN yarn install
+
+ENV NODE_ENV=production
+ENV STARTUP_COMMAND_1="yarn run build"
+ENV APACHE_DOCUMENT_ROOT=dist/