From dab21d0ba5c8d07e562e2f5ffcd2fcc58516edc3 Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 30 Dec 2021 13:51:35 +0100 Subject: [PATCH] Replace Drone with Woodpecker --- .drone.yml | 282 ------------------------- .woodpecker/.code_standards_check.yml | 35 +++ .woodpecker/.continuous-deployment.yml | 126 +++++++++++ .woodpecker/.messages.po_check.yml | 35 +++ .woodpecker/.releaser.yml | 121 +++++++++++ 5 files changed, 317 insertions(+), 282 deletions(-) delete mode 100644 .drone.yml create mode 100644 .woodpecker/.code_standards_check.yml create mode 100644 .woodpecker/.continuous-deployment.yml create mode 100644 .woodpecker/.messages.po_check.yml create mode 100644 .woodpecker/.releaser.yml diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index b80d4344..00000000 --- a/.drone.yml +++ /dev/null @@ -1,282 +0,0 @@ ---- -kind: pipeline -type: docker -name: Check messages.po - -clone: - disable: true - -trigger: - event: - - pull_request - -steps: - - name: clone friendica base - image: alpine/git - commands: - - git clone https://github.com/friendica/friendica.git . - - git checkout $DRONE_COMMIT_BRANCH - - name: clone friendica addon - image: alpine/git - commands: - - git clone $DRONE_REPO_LINK addon - - cd addon/ - - git checkout $DRONE_COMMIT_BRANCH - - git fetch origin $DRONE_COMMIT_REF - - git merge $DRONE_COMMIT_SHA - - name: Run Xgettext for addons - image: friendicaci/transifex - commands: - - /xgettext-addon.sh - - name: Check update necessary - image: friendicaci/transifex - commands: - - /check-addons.sh ---- -kind: pipeline -type: docker -name: php-cs check - -clone: - disable: true - -trigger: - event: - - pull_request - -steps: - - name: Clone friendica base - image: alpine/git - commands: - - git clone https://github.com/friendica/friendica.git . - - git checkout $DRONE_COMMIT_BRANCH - - name: Clone friendica addon - image: alpine/git - commands: - - git clone $DRONE_REPO_LINK addon - - cd addon/ - - git checkout $DRONE_COMMIT_BRANCH - - git fetch origin $DRONE_COMMIT_REF - - git merge $DRONE_COMMIT_SHA - - name: Install dependencies - image: composer - commands: - - ./bin/composer.phar run cs:install - - name: Run coding standards check - image: friendicaci/php-cs - commands: - - cd addon/ - - export CHANGED_FILES="$(git diff --name-status ${DRONE_COMMIT_BEFORE}..${DRONE_COMMIT_AFTER} | grep ^A | cut -f2 | sed -e "s/^/addon\\//")" - - cd ../ - - /check-php-cs.sh ---- -kind: pipeline -type: docker -name: continuous-deployment - -trigger: - repo: - - friendica/friendica-addons - branch: - - develop - - 20*-rc - event: - - push - -node: - node: releaser # This prevents executing this pipeline at other servers than drone.friendi.ca - -clone: - disable: true - -steps: - - name: Clone friendica base - image: alpine/git - commands: - - git clone https://github.com/friendica/friendica.git . - - git checkout $DRONE_COMMIT_BRANCH - - name: Clone friendica addon - image: alpine/git - commands: - - git clone $DRONE_REPO_LINK addon - - cd addon/ - - git checkout $DRONE_COMMIT_BRANCH - - git fetch origin $DRONE_COMMIT_REF - - git merge $DRONE_COMMIT_SHA - - name: Create artifacts - image: debian - commands: - - apt-get update - - apt-get install bzip2 - - export VERSION="$(cat VERSION)" - - export RELEASE="friendica-addons-$VERSION" - - export ARTIFACT="$RELEASE.tar.gz" - - mkdir ./build - - # Create artifact for friendica-addons - - tar - --exclude='.tx' - --exclude='.git' - --exclude='.editorconfig' - --exclude='.gitattributes' - --exclude='.gitignore' - --exclude='.drone.yml' - --exclude='**/*/messages.po' - -cvzf ./build/$ARTIFACT addon/ - - # 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 - -volumes: - - name: cache - host: - path: /tmp/drone-cache ---- -kind: pipeline -type: docker -name: release-deployment - -trigger: - repo: - - friendica/friendica-addons - branch: - - stable - event: - - tag - -node: - node: releaser # This prevents executing this pipeline at other servers than drone.friendi.ca - -clone: - disable: true - -steps: - - name: Clone friendica base - image: alpine/git - commands: - - git clone https://github.com/friendica/friendica.git . - - git checkout $DRONE_COMMIT_BRANCH - - name: Clone friendica addon - image: alpine/git - commands: - - git clone $DRONE_REPO_LINK addon - - cd addon/ - - git checkout $DRONE_COMMIT_BRANCH - - git fetch origin $DRONE_COMMIT_REF - - git merge $DRONE_COMMIT_SHA - - name: Create artifacts - image: debian - commands: - - apt-get update - - apt-get install bzip2 - - export VERSION="$(cat VERSION)" - - export RELEASE="friendica-addons-$VERSION" - - export ARTIFACT="$RELEASE.tar.gz" - - mkdir ./build - - # Create artifact for friendica-addons - - tar - --exclude='.tx' - --exclude='.git' - --exclude='.editorconfig' - --exclude='.gitattributes' - --exclude='.gitignore' - --exclude='.drone.yml' - --exclude='**/*/messages.po' - -cvzf ./build/$ARTIFACT addon/ - - # 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 - -volumes: - - name: cache - host: - path: /tmp/drone-cache diff --git a/.woodpecker/.code_standards_check.yml b/.woodpecker/.code_standards_check.yml new file mode 100644 index 00000000..ba31f36b --- /dev/null +++ b/.woodpecker/.code_standards_check.yml @@ -0,0 +1,35 @@ +skip_clone: true + +pipeline: + clone_friendica_base: + image: alpine/git + commands: + - git clone https://github.com/friendica/friendica.git . + - git checkout $CI_COMMIT_BRANCH + when: + event: pull_request + clone_friendica_addon: + image: alpine/git + commands: + - git clone $CI_REPO_LINK addon + - cd addon/ + - git checkout $CI_COMMIT_BRANCH + - git fetch origin $CI_COMMIT_REF + - git merge $CI_COMMIT_SHA + when: + event: pull_request + composer_install: + image: composer + commands: + - ./bin/composer.phar run cs:install + when: + event: pull_request + check: + image: friendicaci/php-cs + commands: + - cd addon/ + - export CHANGED_FILES="$(git diff --name-status ${CI_PREV_COMMIT_SHA}..${CI_COMMIT_SHA} | grep ^A | cut -f2 | sed -e "s/^/addon\\//")" + - cd ../ + - /check-php-cs.sh + when: + event: pull_request diff --git a/.woodpecker/.continuous-deployment.yml b/.woodpecker/.continuous-deployment.yml new file mode 100644 index 00000000..2d3a43f1 --- /dev/null +++ b/.woodpecker/.continuous-deployment.yml @@ -0,0 +1,126 @@ +matrix: + include: + - PHP_MAJOR_VERSION: 7.4 + PHP_VERSION: 7.4.18 + +depends_on: + - code_standards_check + - messages.po_check + +platform: releaser/release # This prevents executing this pipeline at other servers than ci.friendi.ca + +skip_clone: true + +pipeline: + clone_friendica_base: + image: alpine/git + commands: + - git clone https://github.com/friendica/friendica.git . + - git checkout $CI_COMMIT_BRANCH + when: + repo: friendica/friendica-addons + branch: [ develop, '*-rc' ] + event: push + clone_friendica_addon: + image: alpine/git + commands: + - git clone $CI_REPO_LINK addon + - cd addon/ + - git checkout $CI_COMMIT_BRANCH + - git fetch origin $CI_COMMIT_REF + - git merge $CI_COMMIT_SHA + when: + repo: friendica/friendica-addons + branch: [ develop, '*-rc' ] + event: push + composer_install: + image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION} + commands: + - export COMPOSER_HOME=.composer + - composer validate + - composer install --no-dev --optimize-autoloader + volumes: + - /etc/hosts:/etc/hosts + when: + repo: friendica/friendica-addons + branch: [ develop, '*-rc' ] + event: push + create_artifacts: + image: debian + commands: + - apt-get update + - apt-get install bzip2 + - export VERSION="$(cat VERSION)" + - export RELEASE="friendica-addons-$VERSION" + - export ARTIFACT="$RELEASE.tar.gz" + - mkdir ./build + - tar + --exclude='.tx' + --exclude='.git' + --exclude='.editorconfig' + --exclude='.gitattributes' + --exclude='.gitignore' + --exclude='.drone.yml' + --exclude='**/*/messages.po' + -cvzf ./build/$ARTIFACT addon/ + - cd ./build + - sha256sum "$ARTIFACT" > "$ARTIFACT.sum256" + - chmod 664 ./* + - ls -lh + - cat "$ARTIFACT.sum256" + - sha256sum "$ARTIFACT" + when: + repo: friendica/friendica-addons + branch: [ develop, '*-rc' ] + event: push + sign_artifacts: + image: plugins/gpgsign + settings: + key: + from_secret: gpg_key + passphrase: + from_secret: gpg_password + files: + - build/* + exclude: + - build/*.sum256 + detach_sign: true + when: + repo: friendica/friendica-addons + branch: [ develop, '*-rc' ] + event: push + upload_artifacts: + image: alpine + secrets: + - source: sftp_host + target: lftp_host + - source: sftp_user + target: lftp_user + - source: ssh_key + target: lftp_key + environment: + LFTP_PORT: "22" + LFTP_SOURCE: "build" + LFTP_TARGET: "/http" + volumes: + - /etc/hosts:/etc/hosts + 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 + when: + repo: friendica/friendica-addons + branch: [ develop, '*-rc' ] + event: push diff --git a/.woodpecker/.messages.po_check.yml b/.woodpecker/.messages.po_check.yml new file mode 100644 index 00000000..d9012869 --- /dev/null +++ b/.woodpecker/.messages.po_check.yml @@ -0,0 +1,35 @@ +skip_clone: true + +branches: + exclude: [ stable ] + +pipeline: + clone_friendica_base: + image: alpine/git + commands: + - git clone https://github.com/friendica/friendica.git . + - git checkout $CI_COMMIT_BRANCH + when: + event: pull_request + clone_friendica_addon: + image: alpine/git + commands: + - git clone $CI_REPO_LINK addon + - cd addon/ + - git checkout $CI_COMMIT_BRANCH + - git fetch origin $CI_COMMIT_REF + - git merge $CI_COMMIT_SHA + when: + event: pull_request + build_xgettext: + image: friendicaci/transifex + commands: + - /xgettext-addon.sh + when: + event: pull_request + check: + image: friendicaci/transifex + commands: + - /check-addons.sh + when: + event: pull_request diff --git a/.woodpecker/.releaser.yml b/.woodpecker/.releaser.yml new file mode 100644 index 00000000..0b2f79f5 --- /dev/null +++ b/.woodpecker/.releaser.yml @@ -0,0 +1,121 @@ +matrix: + include: + - PHP_MAJOR_VERSION: 7.4 + PHP_VERSION: 7.4.18 + +depends_on: + - code_standards_check + +platform: releaser/release # This prevents executing this pipeline at other servers than ci.friendi.ca + +skip_clone: true + +pipeline: + clone_friendica_base: + image: alpine/git + commands: + - git clone https://github.com/friendica/friendica.git . + - git checkout $CI_COMMIT_BRANCH + when: + repo: friendica/friendica-addons + branch: stable + event: tag + clone_friendica_addon: + image: alpine/git + commands: + - git clone $CI_REPO_LINK addon + - cd addon/ + - git checkout $CI_COMMIT_BRANCH + - git fetch origin $CI_COMMIT_REF + - git merge $CI_COMMIT_SHA + when: + repo: friendica/friendica-addons + branch: stable + event: tag + composer_install: + image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION} + commands: + - export COMPOSER_HOME=.composer + - composer validate + - composer install --no-dev --optimize-autoloader + volumes: + - /etc/hosts:/etc/hosts + when: + repo: friendica/friendica-addons + branch: stable + event: tag + create_artifacts: + image: debian + commands: + - apt-get update + - apt-get install bzip2 + - mkdir ./build + - export VERSION="$(cat VERSION)" + - 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 + - cd ./build + - sha256sum "$ARTIFACT" > "$ARTIFACT.sum256" + - chmod 664 ./* + - ls -lh + - cat "$ARTIFACT.sum256" + - sha256sum "$ARTIFACT" + when: + repo: friendica/friendica-addons + branch: stable + event: tag + sign_artifacts: + image: plugins/gpgsign + settings: + key: + from_secret: gpg_key + passphrase: + from_secret: gpg_password + files: + - build/* + exclude: + - build/*.sum256 + detach_sign: true + when: + repo: friendica/friendica-addons + branch: stable + event: tag + upload_artifacts: + image: alpine + secrets: + - source: sftp_host + target: lftp_host + - source: sftp_user + target: lftp_user + - source: ssh_key + target: lftp_key + environment: + LFTP_PORT: "22" + LFTP_SOURCE: "build" + LFTP_TARGET: "/http" + volumes: + - /etc/hosts:/etc/hosts + 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 + when: + repo: friendica/friendica-addons + branch: stable + event: tag