Merge pull request #10258 from nupplaphil/feat/drone_release
Create PHP release workflow in drone
This commit is contained in:
commit
dc78686281
197
.drone.yml
197
.drone.yml
|
@ -325,3 +325,200 @@ volumes:
|
||||||
- name: cache
|
- name: cache
|
||||||
host:
|
host:
|
||||||
path: /tmp/drone-cache
|
path: /tmp/drone-cache
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: continuous-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
|
||||||
|
|
67
.github/workflows/releases.yml
vendored
67
.github/workflows/releases.yml
vendored
|
@ -1,67 +0,0 @@
|
||||||
name: Generate release packages
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
name: Create release
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Setup PHP, with composer and extensions
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
tools: pecl, composer:v1
|
|
||||||
|
|
||||||
- name: Retrieve version
|
|
||||||
id: release
|
|
||||||
run: echo "::set-output name=version::$(cat VERSION)"
|
|
||||||
|
|
||||||
- name: Validate composer.json and composer.lock
|
|
||||||
run: composer validate
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
|
||||||
id: composercache
|
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
|
||||||
|
|
||||||
- name: Cache dependencies
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ${{ steps.composercache.outputs.dir }}
|
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: composer install --no-dev --optimize-autoloader
|
|
||||||
|
|
||||||
- name: Create artifact
|
|
||||||
id: artifact
|
|
||||||
run: |
|
|
||||||
ARTIFACT="friendica-full-${{ steps.release.outputs.version }}.tar.gz"
|
|
||||||
echo "::set-output name=name::${ARTIFACT}"
|
|
||||||
mkdir build
|
|
||||||
tar -cvjf build/${ARTIFACT} -T mods/release-list.txt
|
|
||||||
|
|
||||||
- name: SHA256
|
|
||||||
id: sha256
|
|
||||||
run: |
|
|
||||||
cd build
|
|
||||||
ARTIFACT=${{ steps.artifact.outputs.name }}
|
|
||||||
sha256sum "${ARTIFACT}" > "${ARTIFACT}.sha256"
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: friendica
|
|
||||||
path: build/
|
|
||||||
|
|
||||||
- name: Upload to release
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
files: |
|
|
||||||
build/${{ steps.artifact.outputs.name }}.tar.gz
|
|
||||||
build/${{ steps.artifact.outputs.name }}.tar.gz.sha256
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
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/auth_ejabberd.php
|
||||||
bin/console
|
bin/console
|
||||||
bin/console.bat
|
bin/console.bat
|
Loading…
Reference in a new issue