Browse Source

Fix museum deployment (#683)

- Add museum lint action (triggered automatically on any push that
touches server/*)
- Add museum release action (triggered manually - that's the behaviour
we want)
- Also fix a lint issue

It's not showing me the workflow_trigger option so can't actually test
the build yet. We can merge this, and if something's not working will
fix that in another PR.
Manav Rathi 1 year ago
parent
commit
2a525da8ad

+ 4 - 6
.github/workflows/auth-lint.yml

@@ -17,20 +17,18 @@ jobs:
             run:
                 working-directory: auth
         steps:
-            # Checkout our code, including submodules
-            - uses: actions/checkout@v4
+            - name: Checkout code and submodules
+              uses: actions/checkout@v4
               with:
                   submodules: recursive
 
-            # Install Flutter
-            - uses: subosito/flutter-action@v2
+            - name: Install Flutter
+              uses: subosito/flutter-action@v2
               with:
                   channel: "stable"
                   flutter-version: "3.13.4"
                   cache: true
 
-            # Install dependencies
             - run: flutter pub get
 
-            # Lint
             - run: flutter analyze --no-fatal-infos

+ 4 - 6
.github/workflows/mobile-lint.yml

@@ -17,20 +17,18 @@ jobs:
             run:
                 working-directory: mobile
         steps:
-            # Checkout our code, including submodules
-            - uses: actions/checkout@v4
+            - name: Checkout code and submodules
+              uses: actions/checkout@v4
               with:
                   submodules: recursive
 
-            # Install Flutter
-            - uses: subosito/flutter-action@v2
+            - name: Install Flutter
+              uses: subosito/flutter-action@v2
               with:
                   channel: "stable"
                   flutter-version: "3.13.4"
                   cache: true
 
-            # Install dependencies
             - run: flutter pub get
 
-            # Lint
             - run: flutter analyze --no-fatal-infos

+ 33 - 0
.github/workflows/server-lint.yml

@@ -0,0 +1,33 @@
+name: "Lint (server)"
+
+on:
+    # Run on every push (this also covers pull requests)
+    push:
+        # See: [Note: Specify branch when specifying a path filter]
+        branches: ["**"]
+        # Only run if something changes in these paths
+        paths:
+            - "server/**"
+            - ".github/workflows/server-lint.yml"
+
+jobs:
+    lint:
+        runs-on: ubuntu-latest
+        defaults:
+            run:
+                working-directory: server
+        steps:
+            - name: Checkout code
+              uses: actions/checkout@v4
+
+            - name: Setup go
+              uses: actions/setup-go@v5
+              with:
+                  go-version-file: "server/go.mod"
+                  cache: true
+
+            - name: Install dependencies
+              run: sudo apt-get update && sudo apt-get install libsodium-dev
+
+            - name: Lint
+              run: "./scripts/lint.sh"

+ 4 - 8
server/.github/workflows/prod-ci.yml → .github/workflows/server-release.yml

@@ -1,16 +1,10 @@
-name: Prod CI
+name: "Release (server)"
 
 on:
-    workflow_dispatch:
-    # Enable manual run
-    push:
-        # Sequence of patterns matched against refs/tags
-        tags:
-            - "v*" # Push events to matching v*, i.e. v4.2.0
+    workflow_dispatch: # Run manually
 
 jobs:
     build:
-        # This job will run on ubuntu virtual machine
         runs-on: ubuntu-latest
         steps:
             - uses: actions/checkout@v4
@@ -19,6 +13,8 @@ jobs:
             - uses: mr-smithers-excellent/docker-build-push@v6
               name: Build & Push
               with:
+                  dockerfile: server/Dockerfile
+                  directory: server
                   image: ente/museum-prod
                   registry: rg.fr-par.scw.cloud
                   enableBuildKit: true

+ 7 - 2
.github/workflows/web-lint.yml

@@ -26,11 +26,16 @@ jobs:
             run:
                 working-directory: web
         steps:
-            - uses: actions/checkout@v4
-            - uses: actions/setup-node@v4
+            - name: Checkout code
+              uses: actions/checkout@v4
+
+            - name: Setup node and enable yarn caching
+              uses: actions/setup-node@v4
               with:
                   node-version: 20
                   cache: "yarn"
                   cache-dependency-path: "web/yarn.lock"
+
             - run: yarn install
+
             - run: yarn lint

+ 0 - 28
server/.github/workflows/dev-ci.yml

@@ -1,28 +0,0 @@
-name: Dev CI
-
-on:
-    workflow_dispatch:
-    # Enable manual run
-    push:
-        # Sequence of patterns matched against refs/tags
-        tags:
-            - "v*" # Push events to matching v*, i.e. v4.2.0
-
-jobs:
-    build:
-        # This job will run on ubuntu virtual machine
-        runs-on: ubuntu-latest
-        steps:
-            - uses: actions/checkout@v4
-              name: Check out code
-
-            - uses: mr-smithers-excellent/docker-build-push@v6
-              name: Build & Push
-              with:
-                  image: ente/museum-dev
-                  registry: rg.fr-par.scw.cloud
-                  enableBuildKit: true
-                  buildArgs: GIT_COMMIT=${GITHUB_SHA}
-                  tags: ${GITHUB_SHA}, latest
-                  username: ${{ secrets.DOCKER_USERNAME }}
-                  password: ${{ secrets.DOCKER_PASSWORD }}

+ 0 - 21
server/.github/workflows/pr.yml

@@ -1,21 +0,0 @@
-name: Code quality
-
-on:
-    # Enable manual run
-    workflow_dispatch:
-    # Run on every push; this also covers pull requests
-    push:
-
-jobs:
-    build:
-        runs-on: ubuntu-latest
-        steps:
-            - uses: actions/checkout@v4
-            - uses: actions/setup-go@v5
-              with:
-                  go-version-file: "go.mod"
-                  cache: true
-            - run: sudo apt-get update && sudo apt-get install libsodium-dev
-            - run:
-                  "./scripts/lint.sh"
-                  # - run: "go test ./..."

+ 2 - 2
server/pkg/repo/queue.go

@@ -48,7 +48,7 @@ type QueueItem struct {
 
 // InsertItem adds entry in the queue with given queueName and item. If entry already exists, it's no-op
 func (repo *QueueRepository) InsertItem(ctx context.Context, queueName string, item string) error {
-	_, err := repo.DB.ExecContext(ctx, `INSERT INTO queue(queue_name, item) VALUES($1, $2) 
+	_, err := repo.DB.ExecContext(ctx, `INSERT INTO queue(queue_name, item) VALUES($1, $2)
 		ON CONFLICT (queue_name, item) DO NOTHING`, queueName, item)
 	if err != nil {
 		return stacktrace.Propagate(err, "")
@@ -83,7 +83,7 @@ func (repo *QueueRepository) RequeueItem(ctx context.Context, queueName string,
 	if count == 0 {
 		return fmt.Errorf("no item found with queueID: %d for queue %s", queueID, queueName)
 	}
-	logrus.Info("Re-queued %d item with queueID: %d for queue %s", count, queueID, queueName)
+	logrus.Infof("Re-queued %d item with queueID: %d for queue %s", count, queueID, queueName)
 	return nil
 }