kind: pipeline
-name: mysql8.0-php7.1
+type: docker
+name: Check messages.po
steps:
-- name: mysql8.0-php7.1
- image: friendicaci/php7.1:php7.1.32
- commands:
- - NOCOVERAGE=true ./autotest.sh mysql
- environment:
- MYSQL_USERNAME: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- MYSQL_HOST: mysql
-
-services:
-- name: mysql
- image: mysql:8.0
- command: [ "--default-authentication-plugin=mysql_native_password" ]
- environment:
- MYSQL_ROOT_PASSWORD: friendica
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- volumes:
- - name: cache
- path: /var/lib/mysql
-
-volumes:
-- name: cache
- temp: {}
-
-trigger:
- branch:
- - master
- - develop
- - "*-rc"
- event:
- - pull_request
- - push
+ - name: Run default Xgettext
+ image: friendicaci/transifex
+ commands:
+ - ./bin/run_xgettext.sh
+
+ - name: Check default
+ image: friendicaci/transifex
+ commands:
+ - /check-messages.sh
---
kind: pipeline
-name: mysql8.0-php7.2
+type: docker
+name: Integrity checks
steps:
-- name: mysql8.0-php7.2
- image: friendicaci/php7.2:php7.2.22
- commands:
- - NOCOVERAGE=true ./autotest.sh mysql
- environment:
- MYSQL_USERNAME: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- MYSQL_HOST: mysql
-
-services:
-- name: mysql
- image: mysql:8.0
- command: [ "--default-authentication-plugin=mysql_native_password" ]
- environment:
- MYSQL_ROOT_PASSWORD: friendica
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- volumes:
- - name: cache
- path: /var/lib/mysql
-
-volumes:
- - name: cache
- temp: {}
-
-trigger:
- branch:
- - master
- - develop
- - "*-rc"
- event:
- - pull_request
- - push
+ - 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
-name: mysql8.0-php7.3
+type: docker
+name: php7.3-lint
steps:
-- name: mysql8.0-php7.3
- image: friendicaci/php7.3:php7.3.9
- commands:
- - NOCOVERAGE=true ./autotest.sh mysql
- environment:
- MYSQL_USERNAME: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- MYSQL_HOST: mysql
-
-services:
-- name: mysql
- image: mysql:8.0
- command: [ "--default-authentication-plugin=mysql_native_password" ]
- environment:
- MYSQL_ROOT_PASSWORD: friendica
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- volumes:
- - name: cache
- path: /var/lib/mysql
-
-volumes:
- - name: cache
- temp: {}
-
-trigger:
- branch:
- - master
- - develop
- - "*-rc"
- event:
- - pull_request
- - push
+ - name: Test
+ image: php:7.3
+ commands:
+ - ./bin/composer.phar run lint
---
kind: pipeline
-name: mariadb10.1-php7.1
+type: docker
+name: php7.4-lint
steps:
-- name: mariadb10.1-php7.1
- image: friendicaci/php7.1:php7.1.32
- commands:
- - phpenmod xdebug
- - sleep 20
- - ./autotest.sh mariadb
- - wget https://codecov.io/bash -O codecov.sh
- - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 5ce7d64e-07b4-4adf-8700-e2eae27e14ec -f tests/autotest-clover.xml; fi"
- - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 5ce7d64e-07b4-4adf-8700-e2eae27e14ec -f tests/autotest-clover.xml; fi"
- environment:
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- MYSQL_HOST: mariadb
-
-services:
-- name: mariadb
- image: mariadb:10.1
- environment:
- MYSQL_ROOT_PASSWORD: friendica
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- volumes:
- - name: cache
- path: /var/lib/mysql
-
-volumes:
- - name: cache
- temp: {}
-
-trigger:
- branch:
- - master
- - develop
- - "*-rc"
- event:
- - pull_request
- - push
+ - name: Test
+ image: php:7.4
+ commands:
+ - ./bin/composer.phar run lint
---
kind: pipeline
-name: mariadb10.1-php7.2
+type: docker
+name: php8.0-lint
steps:
-- name: mariadb10.1-php7.2
- image: friendicaci/php7.2:php7.2.22
- commands:
- - NOCOVERAGE=true ./autotest.sh mariadb
- environment:
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- MYSQL_HOST: mariadb
-
-services:
-- name: mariadb
- image: mariadb:10.1
- environment:
- MYSQL_ROOT_PASSWORD: friendica
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- volumes:
- - name: cache
- path: /var/lib/mysql
-
-volumes:
- - name: cache
- temp: {}
+ - name: Test
+ image: php:8.0
+ commands:
+ - ./bin/composer.phar run lint
+---
+kind: pipeline
+type: docker
+name: php-cs check
trigger:
- branch:
- - master
- - develop
- - "*-rc"
event:
- pull_request
- - push
----
-kind: pipeline
-name: mariadb10.1-php7.3
steps:
-- name: mariadb10.1-php7.3
- image: friendicaci/php7.3:php7.3.9
- commands:
- - NOCOVERAGE=true ./autotest.sh mariadb
- environment:
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- MYSQL_HOST: mariadb
-
-services:
-- name: mariadb
- image: mariadb:10.1
- environment:
- MYSQL_ROOT_PASSWORD: friendica
- MYSQL_USER: friendica
- MYSQL_PASSWORD: friendica
- MYSQL_DATABASE: friendica
- volumes:
- - name: cache
- path: /var/lib/mysql
+ - name: Restore cache
+ image: meltwater/drone-cache:dev
+ settings:
+ backend: "filesystem"
+ restore: true
+ cache_key: '{{ .Repo.Name }}_phpcs_{{ arch }}_{{ os }}'
+ archive_format: "gzip"
+ mount:
+ - '.composer'
+ volumes:
+ - name: cache
+ path: /tmp/cache
+ - name: Install dependencies
+ image: composer
+ commands:
+ - export COMPOSER_HOME=.composer
+ - ./bin/composer.phar run cs:install
+ - name: Rebuild cache
+ image: meltwater/drone-cache:dev
+ settings:
+ backend: "filesystem"
+ rebuild: true
+ cache_key: '{{ .Repo.Name }}_phpcs_{{ arch }}_{{ os }}'
+ archive_format: "gzip"
+ mount:
+ - '.composer'
+ volumes:
+ - name: cache
+ path: /tmp/cache
+ - name: Run coding standards check
+ image: friendicaci/php-cs
+ commands:
+ - export CHANGED_FILES="$(git diff --name-status ${DRONE_COMMIT_BEFORE}..${DRONE_COMMIT_AFTER} | grep ^A | cut -f2)"
+ - /check-php-cs.sh
volumes:
- name: cache
- temp: {}
-
+ host:
+ path: /tmp/drone-cache
---
kind: pipeline
-name: redis-php7.1
+type: docker
+name: php7.4-database-check
+
+depends_on:
+ - Integrity checks
steps:
-- name: redis-php7.1
- image: friendicaci/php7.1:php7.1.32
- commands:
- - phpenmod xdebug
- - sleep 20
- - NOINSTALL=true TEST_SELECTION=REDIS ./autotest.sh mysql
- - wget https://codecov.io/bash -O codecov.sh
- - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 5ce7d64e-07b4-4adf-8700-e2eae27e14ec -f tests/autotest-clover.xml; fi"
- - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 5ce7d64e-07b4-4adf-8700-e2eae27e14ec -f tests/autotest-clover.xml; fi"
- environment:
- REDIS_HOST: redis
+ - 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: redis
- image: redis
+ - name: mariadb
+ image: mariadb:latest
+ environment:
+ MYSQL_ALLOW_EMPTY_PASSWORD: "true"
+ MYSQL_DATABASE: "test"
+ MYSQL_PASSWORD: "test"
+ MYSQL_USER: "test"
+ tmpfs:
+ - /var/lib/mysql
-trigger:
- branch:
- - master
- - develop
- - "*-rc"
- event:
- - pull_request
- - push
+volumes:
+ - name: cache
+ host:
+ path: /tmp/drone-cache
---
kind: pipeline
-name: redis-php7.2
+type: docker
+name: php7.3-mariadb
+
+depends_on:
+ - php7.3-lint
steps:
-- name: redis-php7.2
- image: friendicaci/php7.2:php7.2.22
- commands:
- - NOCOVERAGE=true NOINSTALL=true TEST_SELECTION=REDIS ./autotest.sh mysql
- environment:
- REDIS_HOST: redis
+ - name: Restore cache
+ image: meltwater/drone-cache:dev
+ settings:
+ backend: "filesystem"
+ restore: true
+ cache_key: '{{ .Repo.Name }}_php73_{{ arch }}_{{ os }}'
+ archive_format: "gzip"
+ mount:
+ - '.composer'
+ volumes:
+ - name: cache
+ path: /tmp/cache
+ - name: Composer install
+ image: friendicaci/php7.3:php7.3.28
+ 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 }}_php73_{{ arch }}_{{ os }}'
+ archive_format: "gzip"
+ mount:
+ - '.composer'
+ volumes:
+ - name: cache
+ path: /tmp/cache
+ - name: Test Friendica
+ image: friendicaci/php7.3:php7.3.28
+ 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"
+ commands:
+ - 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
+ - phpunit --configuration tests/phpunit.xml
services:
-- name: redis
- image: redis
+ - name: mariadb
+ image: mariadb:latest
+ environment:
+ MYSQL_ALLOW_EMPTY_PASSWORD: "true"
+ MYSQL_DATABASE: "test"
+ MYSQL_PASSWORD: "test"
+ MYSQL_USER: "test"
+ tmpfs:
+ - /var/lib/mysql
+
+ - name: memcached
+ image: memcached
+
+ - name: redis
+ image: redis
-trigger:
- branch:
- - master
- - develop
- - "*-rc"
- event:
- - pull_request
- - push
+volumes:
+ - name: cache
+ host:
+ path: /tmp/drone-cache
---
kind: pipeline
-name: redis-php7.3
+type: docker
+name: php7.4-mariadb
+
+depends_on:
+ - php7.4-lint
steps:
-- name: redis-php7.3
- image: friendicaci/php7.3:php7.3.9
- commands:
- - NOCOVERAGE=true NOINSTALL=true TEST_SELECTION=REDIS ./autotest.sh mysql
- environment:
- REDIS_HOST: redis
+ - 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: Test Friendica
+ 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
+ - phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml
+ - name: Codecov
+ image: plugins/codecov
+ when:
+ repo:
+ - friendica/friendica
+ settings:
+ token:
+ from_secret: codecov-token
+ files:
+ - clover.xml
services:
-- name: redis
- image: redis
+ - name: mariadb
+ image: mariadb:latest
+ environment:
+ MYSQL_ALLOW_EMPTY_PASSWORD: "true"
+ MYSQL_DATABASE: "test"
+ MYSQL_PASSWORD: "test"
+ MYSQL_USER: "test"
+ tmpfs:
+ - /var/lib/mysql
+
+ - name: memcached
+ image: memcached
+
+ - name: redis
+ image: redis
+volumes:
+ - name: cache
+ host:
+ path: /tmp/drone-cache
---
kind: pipeline
-name: memcache-php7.1
+type: docker
+name: php8.0-mariadb
+
+depends_on:
+ - php8.0-lint
steps:
-- name: memcache-php7.1
- image: friendicaci/php7.1:php7.1.32
- commands:
- - phpenmod xdebug
- - sleep 20
- - NOINSTALL=true TEST_SELECTION=MEMCACHE ./autotest.sh mysql
- - wget https://codecov.io/bash -O codecov.sh
- - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 5ce7d64e-07b4-4adf-8700-e2eae27e14ec -f tests/autotest-clover.xml; fi"
- - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 5ce7d64e-07b4-4adf-8700-e2eae27e14ec -f tests/autotest-clover.xml; fi"
- environment:
- MEMCACHE_HOST: memcached
+ - name: Restore cache
+ image: meltwater/drone-cache:dev
+ settings:
+ backend: "filesystem"
+ restore: true
+ cache_key: '{{ .Repo.Name }}_php80_{{ arch }}_{{ os }}'
+ archive_format: "gzip"
+ mount:
+ - '.composer'
+ volumes:
+ - name: cache
+ path: /tmp/cache
+ - name: Composer install
+ image: friendicaci/php8.0:php8.0.5
+ 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 }}_php80_{{ arch }}_{{ os }}'
+ archive_format: "gzip"
+ mount:
+ - '.composer'
+ volumes:
+ - name: cache
+ path: /tmp/cache
+ - name: Test Friendica
+ image: friendicaci/php8.0:php8.0.5
+ 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"
+ commands:
+ - 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
+ - phpunit --configuration tests/phpunit.xml
services:
-- name: memcached
- image: memcached
+ - name: mariadb
+ image: mariadb:latest
+ environment:
+ MYSQL_ALLOW_EMPTY_PASSWORD: "true"
+ MYSQL_DATABASE: "test"
+ MYSQL_PASSWORD: "test"
+ MYSQL_USER: "test"
+ tmpfs:
+ - /var/lib/mysql
+
+ - name: memcached
+ image: memcached
+
+ - name: redis
+ image: redis
-trigger:
- branch:
- - master
- - develop
- - "*-rc"
- event:
- - pull_request
- - push
+volumes:
+ - name: cache
+ host:
+ path: /tmp/drone-cache
---
kind: pipeline
-name: memcache-php7.2
-
-steps:
-- name: memcache-php7.2
- image: friendicaci/php7.2:php7.2.22
- commands:
- - NOCOVERAGE=true NOINSTALL=true TEST_SELECTION=MEMCACHE ./autotest.sh mysql
- environment:
- MEMCACHE_HOST: memcached
+type: docker
+name: continuous-deployment
-services:
-- name: memcached
- image: memcached
+depends_on:
+ - php7.3-mariadb
+ - php7.4-mariadb
+ - php8.0-mariadb
trigger:
+ repo:
+ - friendica/friendica
branch:
- - master
- develop
- - "*-rc"
+ - 20*-rc
event:
- - pull_request
- push
----
-kind: pipeline
-name: memcache-php7.3
-
-steps:
-- name: memcache-php7.3
- image: friendicaci/php7.3:php7.3.9
- commands:
- - NOCOVERAGE=true NOINSTALL=true TEST_SELECTION=MEMCACHE ./autotest.sh mysql
- environment:
- MEMCACHE_HOST: memcached
-
-services:
-- name: memcached
- image: memcached
----
-kind: pipeline
-name: memcached-php7.1
+node:
+ node: releaser # This prevents executing this pipeline at other servers than drone.friendi.ca
steps:
-- name: memcached-php7.1
- image: friendicaci/php7.1:php7.1.32
- commands:
- - phpenmod xdebug
- - sleep 20
- - NOINSTALL=true TEST_SELECTION=MEMCACHED ./autotest.sh mysql
- - wget https://codecov.io/bash -O codecov.sh
- - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 5ce7d64e-07b4-4adf-8700-e2eae27e14ec -f tests/autotest-clover.xml; fi"
- - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 5ce7d64e-07b4-4adf-8700-e2eae27e14ec -f tests/autotest-clover.xml; fi"
- environment:
- MEMCACHED_HOST: memcached
-
-services:
-- name: memcached
- image: memcached
+ - 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
+ - composer validate
+ - composer install --no-dev --optimize-autoloader
+ - name: Create artifacts
+ image: debian
+ commands:
+ - apt-get update
+ - apt-get install bzip2
+ - mkdir ./build
+ - export VERSION="$(cat VERSION)"
+ - # Create artifact
+ - export RELEASE="friendica-full-$VERSION"
+ - export ARTIFACT="$RELEASE.tar.gz"
+ - tar
+ --transform "s,^,$RELEASE/,"
+ -X mods/release-list-exclude.txt
+ -T mods/release-list-include.txt
+ -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:
+ LFTP_HOST:
+ from_secret: sftp_host
+ LFTP_USER:
+ from_secret: sftp_user
+ LFTP_KEY:
+ from_secret: ssh_key
+ LFTP_PORT: "22"
+ LFTP_SOURCE: "build"
+ LFTP_TARGET: "/http"
+ commands:
+ - apk add lftp openssh openssl
+ - touch drone.key
+ - chmod 400 drone.key
+ - echo "$LFTP_KEY" | openssl base64 -A -d > drone.key
+ - lftp -c "
+ set net:timeout 5;
+ set net:max-retries 2;
+ set net:reconnect-interval-base 5;
+ set sftp:auto-confirm true;
+ set sftp:connect-program 'ssh -q -a -x -i drone.key';
+ connect sftp://$LFTP_USER:@$LFTP_HOST:$LFTP_PORT;
+ cd $LFTP_TARGET;
+ mput $LFTP_SOURCE/*;
+ "
+ - rm drone.key
-trigger:
- branch:
- - master
- - develop
- - "*-rc"
- event:
- - pull_request
- - push
+volumes:
+ - name: cache
+ host:
+ path: /tmp/drone-cache
---
kind: pipeline
-name: memcached-php7.2
+type: docker
+name: release-deployment
-steps:
-- name: memcached-php7.2
- image: friendicaci/php7.2:php7.2.22
- commands:
- - NOCOVERAGE=true NOINSTALL=true TEST_SELECTION=MEMCACHED ./autotest.sh mysql
- environment:
- MEMCACHED_HOST: memcached
-
-services:
-- name: memcached
- image: memcached
+depends_on:
+ - php7.3-mariadb
+ - php7.4-mariadb
+ - php8.0-mariadb
trigger:
+ repo:
+ - friendica/friendica
branch:
- - master
- - develop
- - "*-rc"
+ - stable
event:
- - pull_request
- - push
----
-kind: pipeline
-name: memcached-php7.3
+ - tag
+
+node:
+ node: releaser # This prevents executing this pipeline at other servers than drone.friendi.ca
steps:
-- name: memcached-php7.3
- image: friendicaci/php7.3:php7.3.9
- commands:
- - NOCOVERAGE=true NOINSTALL=true TEST_SELECTION=MEMCACHED ./autotest.sh mysql
- environment:
- MEMCACHED_HOST: memcached
+ - 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
+ - composer validate
+ - composer install --no-dev --optimize-autoloader
+ - name: Create artifacts
+ image: debian
+ commands:
+ - apt-get update
+ - apt-get install bzip2
+ - mkdir ./build
+ - export VERSION="$(cat VERSION)"
+ - # Create artifact
+ - export RELEASE="friendica-full-$VERSION"
+ - export ARTIFACT="$RELEASE.tar.gz"
+ - tar
+ --transform "s,^,$RELEASE/,"
+ -X mods/release-list-exclude.txt
+ -T mods/release-list-include.txt
+ -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:
+ LFTP_HOST:
+ from_secret: sftp_host
+ LFTP_USER:
+ from_secret: sftp_user
+ LFTP_KEY:
+ from_secret: ssh_key
+ LFTP_PORT: "22"
+ LFTP_SOURCE: "build"
+ LFTP_TARGET: "/http"
+ commands:
+ - apk add lftp openssh openssl
+ - touch drone.key
+ - chmod 400 drone.key
+ - echo "$LFTP_KEY" | openssl base64 -A -d > drone.key
+ - lftp -c "
+ set net:timeout 5;
+ set net:max-retries 2;
+ set net:reconnect-interval-base 5;
+ set sftp:auto-confirm true;
+ set sftp:connect-program 'ssh -q -a -x -i drone.key';
+ connect sftp://$LFTP_USER:@$LFTP_HOST:$LFTP_PORT;
+ cd $LFTP_TARGET;
+ mput $LFTP_SOURCE/*;
+ "
+ - rm drone.key
-services:
-- name: memcached
- image: memcached
+volumes:
+ - name: cache
+ host:
+ path: /tmp/drone-cache