]> git.mxchange.org Git - friendica.git/blobdiff - .drone.yml
Update src/Module/Help.php
[friendica.git] / .drone.yml
index 43df677aa8dbe3d5dc406f7f624bf31ec3409d6e..99692d32cf1ee67ec9d98c497400f3586fa1ddf4 100644 (file)
@@ -15,6 +15,22 @@ steps:
 ---
 kind: pipeline
 type: docker
+name: Integrity checks
+
+steps:
+  - name: Check database version
+    image: alpine
+    commands:
+      - export DBSTRUCTURE_VERSION="$(sed -rn "s/.*'DB_UPDATE_VERSION', ([0-9]+).*/\1/p" static/dbstructure.config.php)"
+      - export DATABASE_VERSION="$(sed -rn 's/.*DB_UPDATE_VERSION ([0-9]+).*/\1/p' database.sql)"
+      - echo "Database $DATABASE_VERSION - DB-Structure $DBSTRUCTURE_VERSION"
+      - if [[ "$DBSTRUCTURE_VERSION" != "$DATABASE_VERSION" ]]; then
+          echo "Database version mismatch.";
+          exit 1;
+        fi
+---
+kind: pipeline
+type: docker
 name: php7.3-lint
 
 steps:
@@ -87,6 +103,88 @@ steps:
       - export CHANGED_FILES="$(git diff --name-status ${DRONE_COMMIT_BEFORE}..${DRONE_COMMIT_AFTER} | grep ^A | cut -f2)"
       - /check-php-cs.sh
 
+volumes:
+  - name: cache
+    host:
+      path: /tmp/drone-cache
+---
+kind: pipeline
+type: docker
+name: php7.4-database-check
+
+depends_on:
+  - Integrity checks
+
+steps:
+  - name: Restore cache
+    image: meltwater/drone-cache:dev
+    settings:
+      backend: "filesystem"
+      restore: true
+      cache_key: '{{ .Repo.Name }}_php74_{{ arch }}_{{ os }}'
+      archive_format: "gzip"
+      mount:
+        - '.composer'
+    volumes:
+      - name: cache
+        path: /tmp/cache
+  - name: Composer install
+    image: friendicaci/php7.4:php7.4.18
+    commands:
+      - export COMPOSER_HOME=.composer
+      - ./bin/composer.phar validate
+      - ./bin/composer.phar install --prefer-dist
+  - name: Rebuild cache
+    image: meltwater/drone-cache:dev
+    settings:
+      backend: "filesystem"
+      rebuild: true
+      cache_key: '{{ .Repo.Name }}_php74_{{ arch }}_{{ os }}'
+      archive_format: "gzip"
+      mount:
+        - '.composer'
+    volumes:
+      - name: cache
+        path: /tmp/cache
+  - name: Recreate database.sql
+    image: friendicaci/php7.4:php7.4.18
+    environment:
+      MYSQL_HOST: "mariadb"
+      MYSQL_PORT: 3306
+      MYSQL_DATABASE: "test"
+      MYSQL_PASSWORD: "test"
+      MYSQL_USER: "test"
+      REDIS_HOST: "redis"
+      MEMCACHED_HOST: "memcached"
+      MEMCACHE_HOST: "memcached"
+      XDEBUG_MODE: "coverage"
+    commands:
+      - phpenmod xdebug
+      - cp config/local-sample.config.php config/local.config.php
+      - if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi
+      - mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql
+      - php ./bin/console.php dbstructure dumpsql > database.sql
+  - name: Check database.sql
+    image: alpine/git
+    commands:
+      - git update-index --refresh
+      - git diff-index --quiet HEAD --
+      - if [[ $? -ne 0 ]]; then
+          echo "database.sql mismatch.";
+          exit 1;
+        fi
+
+services:
+  - name: mariadb
+    image: mariadb:latest
+    environment:
+      MYSQL_ALLOW_EMPTY_PASSWORD: "true"
+      MYSQL_DATABASE: "test"
+      MYSQL_PASSWORD: "test"
+      MYSQL_USER: "test"
+    tmpfs:
+      - /var/lib/mysql
+
 volumes:
   - name: cache
     host:
@@ -96,6 +194,9 @@ kind: pipeline
 type: docker
 name: php7.3-mariadb
 
+depends_on:
+  - php7.3-lint
+
 steps:
   - name: Restore cache
     image: meltwater/drone-cache:dev
@@ -170,6 +271,9 @@ kind: pipeline
 type: docker
 name: php7.4-mariadb
 
+depends_on:
+  - php7.4-lint
+
 steps:
   - name: Restore cache
     image: meltwater/drone-cache:dev
@@ -256,6 +360,9 @@ kind: pipeline
 type: docker
 name: php8.0-mariadb
 
+depends_on:
+  - php8.0-lint
+
 steps:
   - name: Restore cache
     image: meltwater/drone-cache:dev
@@ -330,6 +437,11 @@ kind: pipeline
 type: docker
 name: continuous-deployment
 
+depends_on:
+  - php7.3-mariadb
+  - php7.4-mariadb
+  - php8.0-mariadb
+
 trigger:
   repo:
     - friendica/friendica
@@ -376,14 +488,27 @@ steps:
         --transform "s,^,$RELEASE/,"
         -X mods/release-list-exclude.txt
         -T mods/release-list-include.txt
-        -cvjf ./build/$ARTIFACT
+        -cvzf ./build/$ARTIFACT
       - # calculate SHA256 checksum
       - cd ./build
       - sha256sum "$ARTIFACT" > "$ARTIFACT.sum256"
+      - chmod 664 ./*
       - ls -lh
       - # output the sha256 sum for checking
       - cat "$ARTIFACT.sum256"
       - sha256sum "$ARTIFACT"
+  - name: Sign artifacts
+    image: plugins/gpgsign
+    settings:
+      key:
+        from_secret: gpg_key
+      passphrase:
+        from_secret: gpg_password
+      files:
+        - build/*
+      exclude:
+        - build/*.sum256
+      detach_sign: true
   - name: Upload artifacts
     image: alpine
     environment:
@@ -422,6 +547,11 @@ kind: pipeline
 type: docker
 name: release-deployment
 
+depends_on:
+  - php7.3-mariadb
+  - php7.4-mariadb
+  - php8.0-mariadb
+
 trigger:
   repo:
     - friendica/friendica
@@ -460,8 +590,6 @@ steps:
       - apt-get install bzip2
       - mkdir ./build
       - export VERSION="$(cat VERSION)"
-      - mkdir ./build
-      - export VERSION="$(cat VERSION)"
       - # Create artifact
       - export RELEASE="friendica-full-$VERSION"
       - export ARTIFACT="$RELEASE.tar.gz"
@@ -469,14 +597,27 @@ steps:
         --transform "s,^,$RELEASE/,"
         -X mods/release-list-exclude.txt
         -T mods/release-list-include.txt
-        -cvjf ./build/$ARTIFACT
+        -cvzf ./build/$ARTIFACT
       - # calculate SHA256 checksum
       - cd ./build
       - sha256sum "$ARTIFACT" > "$ARTIFACT.sum256"
+      - chmod 664 ./*
       - ls -lh
       - # output the sha256 sum for checking
       - cat "$ARTIFACT.sum256"
       - sha256sum "$ARTIFACT"
+  - name: Sign artifacts
+    image: plugins/gpgsign
+    settings:
+      key:
+        from_secret: gpg_key
+      passphrase:
+        from_secret: gpg_password
+      files:
+        - build/*
+      exclude:
+        - build/*.sum256
+      detach_sign: true
   - name: Upload artifacts
     image: alpine
     environment: