Setup PHP release workflow in drone with lftp
This commit is contained in:
parent
782a54cf8c
commit
e563a193f5
3 changed files with 200 additions and 0 deletions
197
.drone.yml
197
.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
|
||||
|
|
2
mods/release-list-exclude.txt
Normal file
2
mods/release-list-exclude.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
view/lang/*/messages.po
|
||||
view/smarty3/compiled/*
|
|
@ -1,3 +1,4 @@
|
|||
bin/.htaccess
|
||||
bin/auth_ejabberd.php
|
||||
bin/console
|
||||
bin/console.bat
|
Loading…
Reference in a new issue