فهرست منبع

Working on deploy

Florian Hoss 2 سال پیش
والد
کامیت
cbf662bfce
3فایلهای تغییر یافته به همراه98 افزوده شده و 0 حذف شده
  1. 32 0
      Dockerfile
  2. 32 0
      Jenkinsfile
  3. 34 0
      entrypoint.sh

+ 32 - 0
Dockerfile

@@ -0,0 +1,32 @@
+FROM golang:alpine AS go
+WORKDIR /backend
+
+COPY ./go.mod .
+RUN go mod download
+
+COPY . .
+RUN npm build
+RUN go build -o app
+
+FROM alpine AS logo
+RUN apk add figlet
+WORKDIR /logo
+
+RUN figlet Launchpad > logo.txt
+
+FROM alpine AS final
+WORKDIR /app
+
+COPY --from=logo /logo/logo.txt .
+
+# copy all the configuration files and default bookmark json
+COPY --from=go /backend/bookmark/bookmarks.json ./bookmark/bookmarks.json
+COPY --from=go /backend/logging/logging.json ./logging/logging.json
+
+COPY entrypoint.sh .
+RUN chmod +x entrypoint.sh
+
+COPY --from=go /backend/static .
+COPY --from=go /backend/app .
+
+ENTRYPOINT ["/app/entrypoint.sh"]

+ 32 - 0
Jenkinsfile

@@ -0,0 +1,32 @@
+pipeline {
+    environment {
+        VERSION = "v1.0.0"
+        PROJECT_NAME = JOB_NAME.split('/')
+        IMAGE_NAME = "flohoss/${PROJECT_NAME[0]}"
+        IMAGE = ''
+    }
+    agent any
+    stages {
+        stage('Building') {
+            steps {
+                script {
+                    IMAGE = docker.build IMAGE_NAME
+                }
+            }
+        }
+        stage('Deploying') {
+            steps {
+                script {
+                    docker.withRegistry( 'https://ghcr.io', 'githubContainer' ) {
+                        if (BRANCH_NAME == "main") {
+                            IMAGE.push("${VERSION}")
+                            IMAGE.push("latest")
+                        } else {
+                            IMAGE.push("${BRANCH_NAME}")
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 34 - 0
entrypoint.sh

@@ -0,0 +1,34 @@
+#!/bin/sh
+
+cat logo.txt
+APP=app
+
+if [ -n "$PUID" ] || [ -n "$PGID" ]; then
+  USER=appuser
+  HOME=/"$APP"
+
+  if ! grep -q "$USER" /etc/passwd; then
+    # Usage: addgroup [-g GID] [-S] [USER] GROUP
+    #
+    # Add a group or add a user to a group
+    #    -g GID       Group id
+    addgroup -g "$PGID" "$USER"
+
+    # Usage: adduser [OPTIONS] USER [GROUP]
+    # Create new user, or add USER to GROUP
+    #    -h DIR       Home directory
+    #    -g GECOS     GECOS field
+    #    -G GRP       Group
+    #    -D           Don't assign a password
+    #    -H           Don't create home directory
+    #    -u UID       User id
+    adduser -h "$HOME" -g "" -G "$USER" -D -H -u "$PUID" "$USER"
+  fi
+
+  chown "$USER":"$USER" "$HOME" -R
+  printf "UID: %s GID: %s\n\n" "$PUID" "$PGID"
+  exec su -c - $USER ./"$APP"
+else
+  printf "WARNING: Running docker as root\n\n"
+  exec ./"$APP"
+fi