From: Philipp Date: Sun, 16 May 2021 19:53:55 +0000 (+0200) Subject: Setup PHP release workflow in drone with lftp X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=e563a193f5c29ffb569c711ad45e7063cb7f82d0;p=friendica.git Setup PHP release workflow in drone with lftp --- diff --git a/.drone.yml b/.drone.yml index b45409a846..18b84b76e1 100644 --- a/.drone.yml +++ b/.drone.yml @@ -325,3 +325,200 @@ volumes: - name: cache host: path: /tmp/drone-cache +--- +kind: pipeline +type: docker +name: continous-deployment + +trigger: + repo: + - friendica/friendica + branch: + - develop + - 20*-rc + event: + - push + +node: + node: releaser # This prevents executing this pipeline at other servers than drone.friendi.ca + +steps: + - name: Clone addon + image: alpine/git + commands: + - git clone https://github.com/friendica/friendica-addons ./addon + - cd ./addon + - git checkout $DRONE_REPO_BRANCH + - 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 + -cvjf ./build/$ARTIFACT + - # calculate SHA256 checksum + - cd ./build + - sha256sum "$ARTIFACT" > "$ARTIFACT.sha256" + - ls -lh + - # output the sha256 sum for checking + - cat "$ARTIFACT.sha256" + - sha256sum "$ARTIFACT" + - 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 + +volumes: + - name: cache + host: + path: /tmp/drone-cache +--- +kind: pipeline +type: docker +name: release-deployment + +trigger: + repo: + - friendica/friendica + branch: + - stable + event: + - tag + +node: + node: releaser # This prevents executing this pipeline at other servers than drone.friendi.ca + +steps: + - name: Clone addon + image: alpine/git + commands: + - git clone https://github.com/friendica/friendica-addons ./addon + - cd ./addon + - git checkout $DRONE_REPO_BRANCH + - 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)" + - 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 + -cvjf ./build/$ARTIFACT + - # calculate SHA256 checksum + - cd ./build + - sha256sum "$ARTIFACT" > "$ARTIFACT.sha256" + - ls -lh + - # output the sha256 sum for checking + - cat "$ARTIFACT.sha256" + - sha256sum "$ARTIFACT" + - 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 + +volumes: + - name: cache + host: + path: /tmp/drone-cache diff --git a/mods/release-list-exclude.txt b/mods/release-list-exclude.txt new file mode 100644 index 0000000000..e370e73afc --- /dev/null +++ b/mods/release-list-exclude.txt @@ -0,0 +1,2 @@ +view/lang/*/messages.po +view/smarty3/compiled/* \ No newline at end of file diff --git a/mods/release-list-include.txt b/mods/release-list-include.txt new file mode 100644 index 0000000000..95faa36ed8 --- /dev/null +++ b/mods/release-list-include.txt @@ -0,0 +1,30 @@ +bin/.htaccess +bin/auth_ejabberd.php +bin/console +bin/console.bat +bin/console.php +bin/daemon.php +bin/testargs.php +bin/worker.php +config/ +doc/ +images/ +include/ +mod/ +mods/ +spec/ +src/ +static/ +vendor/ +view/ +.htaccess-dist +boot.php +CHANGELOG +CREDITS.txt +database.sql +index.php +LICENSE +README.md +security.txt +update.php +VERSION \ No newline at end of file diff --git a/mods/release-list.txt b/mods/release-list.txt deleted file mode 100644 index dfebc02169..0000000000 --- a/mods/release-list.txt +++ /dev/null @@ -1,29 +0,0 @@ -bin/auth_ejabberd.php -bin/console -bin/console.bat -bin/console.php -bin/daemon.php -bin/testargs.php -bin/worker.php -config/ -doc/ -images/ -include/ -mod/ -mods/ -spec/ -src/ -static/ -vendor/ -view/ -.htaccess-dist -boot.php -CHANGELOG -CREDITS.txt -database.sql -index.php -LICENSE -README.md -security.txt -update.php -VERSION \ No newline at end of file