mirror of
https://codeberg.org/gitnex/GitNex.git
synced 2024-12-16 15:48:13 +08:00
Move to woodpecker CI (#1104)
Addresses https://codeberg.org/gitnex/GitNex/issues/1099 @mmarif you would have to enable the repo on woodpecker and disable on gitlab... If you don't think this is a good idea, just close it. Required secrets: `BOT_TOKEN`, `KS_PASS`, `KEY_PASS`, `KS_REPO`, `WEBDAV_PASSWORD`, `CROWDIN_TOKEN` We can easily extend this later to run linters and such things. Co-authored-by: qwerty287 <ndev@web.de> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: 6543 <6543@noreply.codeberg.org> Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1104 Reviewed-by: M M Arif <mmarif@noreply.codeberg.org> Co-authored-by: qwerty287 <qwerty287@noreply.codeberg.org> Co-committed-by: qwerty287 <qwerty287@noreply.codeberg.org>
This commit is contained in:
parent
fd3e6434dc
commit
43b1a3907d
104
.drone.yml
104
.drone.yml
@ -1,104 +0,0 @@
|
|||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: tests
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: unit-tests
|
|
||||||
image: nextcloudci/android:android-49
|
|
||||||
depends_on: [ clone ]
|
|
||||||
commands:
|
|
||||||
- ./gradlew test
|
|
||||||
|
|
||||||
- name: check-formatting
|
|
||||||
image: zosiab/eclint:latest
|
|
||||||
depends_on: [ clone ]
|
|
||||||
commands:
|
|
||||||
- git pull origin main
|
|
||||||
- eclint check $(git diff --name-only origin/main)
|
|
||||||
|
|
||||||
# This may be used in the future, because it makes of intellij's native code inspection/formatting capabilities.
|
|
||||||
# Additional information: https://www.jetbrains.com/help/idea/command-line-formatter.html
|
|
||||||
#
|
|
||||||
# - name: do-or-check-formatting
|
|
||||||
# image: dlsniper/docker-intellij
|
|
||||||
# depends_on: [ clone ]
|
|
||||||
# commands:
|
|
||||||
# - /opt/intellij/bin/idea.sh inspect/format ...
|
|
||||||
#
|
|
||||||
# - name: do-or-check-formatting
|
|
||||||
# image: dlsniper/docker-intellij
|
|
||||||
# depends_on: [ clone ]
|
|
||||||
# commands:
|
|
||||||
# - /opt/intellij/bin/idea.sh format -s .idea/codeStyles/Project.xml -m *.java app/src/main/java
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- pull_request
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: code-analysis
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: check-global-formatting
|
|
||||||
image: zosiab/eclint:latest
|
|
||||||
depends_on: [ clone ]
|
|
||||||
commands:
|
|
||||||
- eclint check $(git ls-files)
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
branch:
|
|
||||||
- main
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: build
|
|
||||||
image: nextcloudci/android:android-49
|
|
||||||
commands:
|
|
||||||
- ./gradlew assembleFreeRelease
|
|
||||||
|
|
||||||
- name: sign
|
|
||||||
image: nextcloudci/android:android-49
|
|
||||||
environment:
|
|
||||||
BOT_TOKEN:
|
|
||||||
from_secret: BOT_TOKEN
|
|
||||||
KS_PASS:
|
|
||||||
from_secret: KS_PASS
|
|
||||||
KEY_PASS:
|
|
||||||
from_secret: KEY_PASS
|
|
||||||
OUTPUT: signed.apk
|
|
||||||
INSTANCE: https://codeberg.org
|
|
||||||
KS_FILE: ci_keystore.jks
|
|
||||||
KS_REPO:
|
|
||||||
from_secret: KS_REPO
|
|
||||||
commands:
|
|
||||||
- ./scripts/sign-build.sh
|
|
||||||
|
|
||||||
- name: publish
|
|
||||||
image: vividboarder/drone-webdav
|
|
||||||
environment:
|
|
||||||
WEBDAV_USERNAME: GitNexBot
|
|
||||||
WEBDAV_PASSWORD:
|
|
||||||
from_secret: NC_TOKEN
|
|
||||||
PLUGIN_FILE: 'signed.apk'
|
|
||||||
PLUGIN_TIMEOUT: 180
|
|
||||||
PLUGIN_ATTEMPTS: 5
|
|
||||||
PLUGIN_DESTINATION: 'https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/builds/latest.apk'
|
|
||||||
PLUGIN_CUSTOM_ARGUMENTS: '--progress-bar'
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
branch:
|
|
||||||
- main
|
|
116
.gitlab-ci.yml
116
.gitlab-ci.yml
@ -1,116 +0,0 @@
|
|||||||
stages:
|
|
||||||
- build
|
|
||||||
- sign
|
|
||||||
- publish
|
|
||||||
- locales
|
|
||||||
|
|
||||||
on_setup:
|
|
||||||
image: curlimages/curl:7.77.0
|
|
||||||
stage: .pre
|
|
||||||
only:
|
|
||||||
- main
|
|
||||||
- tags
|
|
||||||
variables:
|
|
||||||
INSTANCE: "https://codeberg.org"
|
|
||||||
MAIN_REPO: gitnex/GitNex
|
|
||||||
STATE: pending
|
|
||||||
script:
|
|
||||||
- ./scripts/add-commit-status.sh
|
|
||||||
|
|
||||||
build:
|
|
||||||
image: alvrme/alpine-android:android-31-jdk11
|
|
||||||
stage: build
|
|
||||||
only:
|
|
||||||
- main
|
|
||||||
- tags
|
|
||||||
script:
|
|
||||||
- ./gradlew assembleFreeRelease
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- app/build/outputs/
|
|
||||||
expire_in: 15 minutes
|
|
||||||
|
|
||||||
sign:
|
|
||||||
image: alvrme/alpine-android:android-31-jdk11
|
|
||||||
stage: sign
|
|
||||||
only:
|
|
||||||
- main
|
|
||||||
- tags
|
|
||||||
variables:
|
|
||||||
OUTPUT: "signed.apk"
|
|
||||||
INSTANCE: "https://codeberg.org"
|
|
||||||
KS_FILE: "ci_keystore.jks"
|
|
||||||
script:
|
|
||||||
- ./scripts/sign-build.sh
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- signed.apk
|
|
||||||
expire_in: 15 minutes
|
|
||||||
|
|
||||||
latest:
|
|
||||||
image: curlimages/curl:7.77.0
|
|
||||||
stage: publish
|
|
||||||
only:
|
|
||||||
- main
|
|
||||||
- tags
|
|
||||||
variables:
|
|
||||||
WEBDAV_USERNAME: "GitNexBot"
|
|
||||||
PLUGIN_FILE: "signed.apk"
|
|
||||||
PLUGIN_DESTINATION: "https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/builds/latest.apk"
|
|
||||||
script:
|
|
||||||
- curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" "$PLUGIN_DESTINATION"
|
|
||||||
|
|
||||||
release:
|
|
||||||
image: curlimages/curl:7.77.0
|
|
||||||
stage: publish
|
|
||||||
only:
|
|
||||||
- tags
|
|
||||||
variables:
|
|
||||||
WEBDAV_USERNAME: "GitNexBot"
|
|
||||||
PLUGIN_FILE: "signed.apk"
|
|
||||||
script:
|
|
||||||
- "[[ $CI_COMMIT_REF_NAME == *'-rc'* ]] && echo 'Upload blocked. Build seems to be a release candidate.' && exit 0"
|
|
||||||
- curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" 'https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/releases/'"$CI_COMMIT_REF_NAME"'.apk'
|
|
||||||
|
|
||||||
push_translations:
|
|
||||||
image: crowdin/cli:3.7.8
|
|
||||||
stage: locales
|
|
||||||
only:
|
|
||||||
refs:
|
|
||||||
- main
|
|
||||||
changes:
|
|
||||||
- app/src/main/res/values/strings.xml
|
|
||||||
script:
|
|
||||||
- echo "Set up Crowdin CLI"
|
|
||||||
- cp crowdin.example.yml crowdin.yml
|
|
||||||
- sed -i 's/-removed-/'"$CROWDIN_TOKEN"'/' crowdin.yml
|
|
||||||
- echo "Push translations"
|
|
||||||
- crowdin push
|
|
||||||
|
|
||||||
on_success:
|
|
||||||
image: curlimages/curl:7.77.0
|
|
||||||
stage: .post
|
|
||||||
only:
|
|
||||||
- main
|
|
||||||
- tags
|
|
||||||
variables:
|
|
||||||
INSTANCE: "https://codeberg.org"
|
|
||||||
MAIN_REPO: gitnex/GitNex
|
|
||||||
STATE: success
|
|
||||||
script:
|
|
||||||
- ./scripts/add-commit-status.sh
|
|
||||||
when: on_success
|
|
||||||
|
|
||||||
on_failure:
|
|
||||||
image: curlimages/curl:7.77.0
|
|
||||||
stage: .post
|
|
||||||
only:
|
|
||||||
- main
|
|
||||||
- tags
|
|
||||||
variables:
|
|
||||||
INSTANCE: "https://codeberg.org"
|
|
||||||
MAIN_REPO: gitnex/GitNex
|
|
||||||
STATE: failure
|
|
||||||
script:
|
|
||||||
- ./scripts/add-commit-status.sh
|
|
||||||
when: on_failure
|
|
52
.woodpecker/build.yml
Normal file
52
.woodpecker/build.yml
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
pipeline:
|
||||||
|
build:
|
||||||
|
image: alvrme/alpine-android:android-31-jdk11
|
||||||
|
commands:
|
||||||
|
- ./gradlew assembleFreeRelease
|
||||||
|
when:
|
||||||
|
path: [ app/, build.gradle ]
|
||||||
|
|
||||||
|
sign:
|
||||||
|
image: alvrme/alpine-android:android-31-jdk11
|
||||||
|
environment:
|
||||||
|
OUTPUT: "signed.apk"
|
||||||
|
INSTANCE: "https://codeberg.org"
|
||||||
|
KS_FILE: "gitnex_ci_keystore.jks"
|
||||||
|
commands:
|
||||||
|
- >
|
||||||
|
KEYFILE=$(mktemp)
|
||||||
|
curl -X GET "${INSTANCE}/api/v1/repos/${KS_REPO}/contents/${KS_FILE}?token=${BOT_TOKEN}" -H "accept: application/json" | sed 's|"content":"|#|g' | cut -d '#' -f 2 | cut -d '"' -f 1 | base64 -d > ${KEYFILE}
|
||||||
|
apksigner sign -v --ks-pass pass:$KS_PASS --key-pass pass:$KEY_PASS --ks-key-alias GitNexBot --ks ${KEYFILE} --out signed.apk $(find . -name "*release*.apk")
|
||||||
|
secrets: [ BOT_TOKEN, KS_PASS, KEY_PASS, KS_REPO ]
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
branch: main
|
||||||
|
path: [ app/, build.gradle ]
|
||||||
|
|
||||||
|
upload:
|
||||||
|
image: curlimages/curl:7.82.0
|
||||||
|
group: upload
|
||||||
|
environment:
|
||||||
|
WEBDAV_USERNAME: "GitNexBot"
|
||||||
|
PLUGIN_FILE: "signed.apk"
|
||||||
|
PLUGIN_DESTINATION: "https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/builds/latest.apk"
|
||||||
|
commands:
|
||||||
|
- curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" "$PLUGIN_DESTINATION"
|
||||||
|
secrets: [ WEBDAV_PASSWORD ]
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
branch: main
|
||||||
|
path: [ app/, build.gradle ]
|
||||||
|
|
||||||
|
upload-release:
|
||||||
|
image: curlimages/curl:7.82.0
|
||||||
|
group: upload
|
||||||
|
environment:
|
||||||
|
WEBDAV_USERNAME: "GitNexBot"
|
||||||
|
PLUGIN_FILE: "signed.apk"
|
||||||
|
commands:
|
||||||
|
- "[[ $CI_COMMIT_TAG == *'-rc'* ]] && echo 'Upload blocked. Build seems to be a release candidate.' && exit 0"
|
||||||
|
- curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" 'https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/releases/'"$CI_COMMIT_TAG"'.apk'
|
||||||
|
secrets: [ WEBDAV_PASSWORD ]
|
||||||
|
when:
|
||||||
|
event: [ tag ]
|
12
.woodpecker/locale.yml
Normal file
12
.woodpecker/locale.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
pipeline:
|
||||||
|
push:
|
||||||
|
image: crowdin/cli:3.7.8
|
||||||
|
commands:
|
||||||
|
- cp crowdin.example.yml crowdin.yml
|
||||||
|
- sed -i 's/-removed-/'"$CROWDIN_TOKEN"'/' crowdin.yml
|
||||||
|
- crowdin push
|
||||||
|
secrets: [ CROWDIN_TOKEN ]
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
branch: main
|
||||||
|
path: [ app/src/main/res/values/strings.xml ]
|
@ -1,4 +1,4 @@
|
|||||||
[![License: GPL v3](https://codeberg.org/gitnex/GitNex/raw/branch/main/assets/license.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Pipeline status](https://img.shields.io/gitlab/pipeline/mmarif4u/gitnex-ci/main)](https://gitlab.com/mmarif4u/gitnex-ci/-/pipelines) [![Release](https://img.shields.io/badge/dynamic/json.svg?label=release&url=https://codeberg.org/api/v1/repos/gitnex/GitNex/releases&query=$[0].tag_name)](https://codeberg.org/gitnex/GitNex/releases) [![Crowdin](https://badges.crowdin.net/gitnex/localized.svg)](https://crowdin.com/project/gitnex) [![Join the Discord chat at https://discord.gg/FbSS4rf](https://img.shields.io/discord/632219664587685908.svg)](https://discord.gg/FbSS4rf)
|
[![License: GPL v3](https://codeberg.org/gitnex/GitNex/raw/branch/main/assets/license.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Pipeline status](https://ci.codeberg.org/api/badges/gitnex/GitNex/status.svg)](https://ci.codeberg.org/gitnex/GitNex) [![Release](https://img.shields.io/badge/dynamic/json.svg?label=release&url=https://codeberg.org/api/v1/repos/gitnex/GitNex/releases&query=$[0].tag_name)](https://codeberg.org/gitnex/GitNex/releases) [![Crowdin](https://badges.crowdin.net/gitnex/localized.svg)](https://crowdin.com/project/gitnex) [![Join the Discord chat at https://discord.gg/FbSS4rf](https://img.shields.io/discord/632219664587685908.svg)](https://discord.gg/FbSS4rf)
|
||||||
|
|
||||||
[<img alt="Become a Patreon" src="https://codeberg.org/gitnex/GitNex/raw/branch/main/assets/patreon.png" height="40"/>](https://www.patreon.com/mmarif) [<img alt="Buy me a coffee" src="https://codeberg.org/gitnex/GitNex/raw/branch/main/assets/buy-me-a-coffee.png" height="40"/>](https://www.buymeacoffee.com/mmarif)
|
[<img alt="Become a Patreon" src="https://codeberg.org/gitnex/GitNex/raw/branch/main/assets/patreon.png" height="40"/>](https://www.patreon.com/mmarif) [<img alt="Buy me a coffee" src="https://codeberg.org/gitnex/GitNex/raw/branch/main/assets/buy-me-a-coffee.png" height="40"/>](https://www.buymeacoffee.com/mmarif)
|
||||||
|
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Environment variables which have to be set in order for this to work properly
|
|
||||||
# @author opyale
|
|
||||||
#
|
|
||||||
# INSTANCE (e.g. https://codeberg.org)
|
|
||||||
# MAIN_REPO (e.g. gitnex/GitNex)
|
|
||||||
# STATE (e.g. pending, success, error, failure or warning)
|
|
||||||
# CI_COMMIT_SHA; BOT_TOKEN
|
|
||||||
|
|
||||||
context="GitLab CI"
|
|
||||||
description="GitLab continuous integration tool"
|
|
||||||
state=$STATE
|
|
||||||
target_url=$CI_PIPELINE_URL
|
|
||||||
|
|
||||||
body='
|
|
||||||
{
|
|
||||||
"context": "'$context'",
|
|
||||||
"description": "'$description'",
|
|
||||||
"state": "'$state'",
|
|
||||||
"target_url": "'$target_url'"
|
|
||||||
}
|
|
||||||
'
|
|
||||||
|
|
||||||
curl --request POST \
|
|
||||||
--data "$body" \
|
|
||||||
--header "Accept: application/json" \
|
|
||||||
--header "Content-Type: application/json" \
|
|
||||||
"${INSTANCE}/api/v1/repos/${MAIN_REPO}/statuses/${CI_COMMIT_SHA}?token=${BOT_TOKEN}"
|
|
@ -1,15 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Make sure needed var's are here
|
|
||||||
[ -z "${BOT_TOKEN}" ] && { echo "Token is missing (BOT_TOKEN)"; exit 1; }
|
|
||||||
[ -z "${KS_PASS}" ] && { echo "Missing keystore password (KS_PASS)"; exit 1; }
|
|
||||||
[ -z "${KEY_PASS}" ] && { echo "Missing KEY_PASS"; exit 1; }
|
|
||||||
[ -z "${INSTANCE}" ] && { echo "Instance url is missing (INSTANCE)"; exit 1; }
|
|
||||||
[ -z "${KS_REPO}" ] && { echo "Missing repo of keystore (KS_REPO)"; exit 1; }
|
|
||||||
[ -z "${KS_FILE}" ] && { echo "Filename of keystore is missing (KS_FILE)"; exit 1; }
|
|
||||||
[ -z "${OUTPUT}" ] && { echo "Missing filename of signed output (OUTPUT)"; exit 1; }
|
|
||||||
|
|
||||||
KEYFILE=$(mktemp)
|
|
||||||
curl -X GET "${INSTANCE}/api/v1/repos/${KS_REPO}/contents/${KS_FILE}?token=${BOT_TOKEN}" -H "accept: application/json" | sed 's|"content":"|#|g' | cut -d '#' -f 2 | cut -d '"' -f 1 | base64 -d > ${KEYFILE}
|
|
||||||
|
|
||||||
apksigner sign -v --ks-pass pass:$KS_PASS --key-pass pass:$KEY_PASS --ks-key-alias GitNexBot --ks ${KEYFILE} --out signed.apk $(find . -name "*release*.apk")
|
|
Loading…
Reference in New Issue
Block a user