]> source.dussan.org Git - gitea.git/commitdiff
Prepare and check test env during CI (#17725)
authorwxiaoguang <wxiaoguang@gmail.com>
Fri, 19 Nov 2021 05:58:34 +0000 (13:58 +0800)
committerGitHub <noreply@github.com>
Fri, 19 Nov 2021 05:58:34 +0000 (13:58 +0800)
This PR should resolve the permission problems during CI, if the uid doesn't match, a more clear message is shown.

*  CI fails with unknown permission problems #17710

The new drone step dependencies:

(root)prepare-test-env -> (gitea)build -> (gitea)test

.drone.yml
build/test-env-check.sh [new file with mode: 0755]
build/test-env-prepare.sh [new file with mode: 0755]

index a24f4c621e71828e618b4acd83fe6bc47f5620fc..6a69921c4220ee280ba55d80cec8254d71768400 100644 (file)
@@ -1,5 +1,6 @@
 ---
 kind: pipeline
+type: docker
 name: compliance
 
 platform:
@@ -130,6 +131,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: testing-amd64
 
 platform:
@@ -191,26 +193,30 @@ steps:
         exclude:
           - pull_request
 
-  - name: build
-    pull: always
-    image: golang:1.17
-    commands:
-      - make backend
-    environment:
-      GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
-      GOSUMDB: sum.golang.org
-      TAGS: bindata sqlite sqlite_unlock_notify
-
   - name: tag-pre-condition
     pull: always
     image: drone/git
     commands:
       - git update-ref refs/heads/tag_test ${DRONE_COMMIT_SHA}
 
-  - name: fix-permissions
+  - name: prepare-test-env
     image: gitea/test_env:linux-amd64  # https://gitea.com/gitea/test-env
     commands:
-      - chown -R gitea:gitea .
+      - ./build/test-env-prepare.sh
+
+  - name: build
+    pull: always
+    image: gitea/test_env:linux-amd64  # https://gitea.com/gitea/test-env
+    user: gitea
+    commands:
+      - ./build/test-env-check.sh
+      - make backend
+    environment:
+      GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
+      GOSUMDB: sum.golang.org
+      TAGS: bindata sqlite sqlite_unlock_notify
+    depends_on:
+      - prepare-test-env
 
   - name: unit-test
     image: gitea/test_env:linux-amd64  # https://gitea.com/gitea/test-env
@@ -353,21 +359,24 @@ steps:
         exclude:
           - pull_request
 
-  - name: fix-permissions
+  - name: prepare-test-env
     image: gitea/test_env:linux-arm64  # https://gitea.com/gitea/test-env
     commands:
-      - chown -R gitea:gitea .
+      - ./build/test-env-prepare.sh
 
   - name: build
     pull: always
     image: gitea/test_env:linux-arm64  # https://gitea.com/gitea/test-env
     user: gitea
     commands:
+      - ./build/test-env-check.sh
       - make backend
     environment:
       GOPROXY: https://goproxy.cn # proxy.golang.org is blocked in China, this proxy is not
       GOSUMDB: sum.golang.org
       TAGS: bindata gogit sqlite sqlite_unlock_notify
+    depends_on:
+      - prepare-test-env
 
   - name: test-sqlite
     image: gitea/test_env:linux-arm64  # https://gitea.com/gitea/test-env
@@ -461,6 +470,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: update_gitignore_and_licenses
 
 platform:
@@ -497,6 +507,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: release-latest
 
 platform:
@@ -675,6 +686,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: docs
 
 platform:
@@ -716,6 +728,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: docker-linux-amd64-release-version
 
 platform:
@@ -780,6 +793,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: docker-linux-amd64-release
 
 platform:
@@ -844,6 +858,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: docker-linux-arm64-dry-run
 
 platform:
@@ -876,6 +891,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: docker-linux-arm64-release-version
 
 platform:
@@ -943,6 +959,7 @@ steps:
 
 ---
 kind: pipeline
+type: docker
 name: docker-linux-arm64-release
 
 platform:
@@ -1009,6 +1026,7 @@ steps:
         - pull_request
 ---
 kind: pipeline
+type: docker
 name: docker-manifest-version
 
 platform:
@@ -1052,6 +1070,7 @@ depends_on:
 
 ---
 kind: pipeline
+type: docker
 name: docker-manifest
 
 platform:
@@ -1095,6 +1114,7 @@ depends_on:
 
 ---
 kind: pipeline
+type: docker
 name: notifications
 
 platform:
diff --git a/build/test-env-check.sh b/build/test-env-check.sh
new file mode 100755 (executable)
index 0000000..38e5a28
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+if [ ! -f ./build/test-env-check.sh ]; then
+  echo "${0} can only be executed in gitea source root directory"
+  exit 1
+fi
+
+
+echo "check uid ..."
+
+# the uid of gitea defined in "https://gitea.com/gitea/test-env" is 1000
+gitea_uid=$(id -u gitea)
+if [ "$gitea_uid" != "1000" ]; then
+  echo "The uid of linux user 'gitea' is expected to be 1000, but it is $gitea_uid"
+  exit 1
+fi
+
+cur_uid=$(id -u)
+if [ "$cur_uid" != "0" -a "$cur_uid" != "$gitea_uid" ]; then
+  echo "The uid of current linux user is expected to be 0 or $gitea_uid, but it is $cur_uid"
+  exit 1
+fi
diff --git a/build/test-env-prepare.sh b/build/test-env-prepare.sh
new file mode 100755 (executable)
index 0000000..0c5bc25
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ ! -f ./build/test-env-prepare.sh ]; then
+  echo "${0} can only be executed in gitea source root directory"
+  exit 1
+fi
+
+echo "change the owner of files to gitea ..."
+chown -R gitea:gitea .