From 7d02d4401952bdb2d89561f710f2a0fef23af581 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 11 Oct 2023 15:39:52 +0200 Subject: [PATCH] initial --- .forgejo/run-test.sh | 84 ++++++++++++++++++++++++++ .forgejo/workflows/integration.yml | 96 ++++++++++++++++++++++++++++++ .gitignore | 54 ++--------------- README.md | 16 ++++- action.yml | 24 ++++++++ 5 files changed, 223 insertions(+), 51 deletions(-) create mode 100755 .forgejo/run-test.sh create mode 100644 .forgejo/workflows/integration.yml create mode 100644 action.yml diff --git a/.forgejo/run-test.sh b/.forgejo/run-test.sh new file mode 100755 index 0000000..1e66080 --- /dev/null +++ b/.forgejo/run-test.sh @@ -0,0 +1,84 @@ +#!/bin/bash +# SPDX-License-Identifier: MIT + +SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +VERBOSE=false +DEBUG=false +: ${EXIT_ON_ERROR:=true} + +function debug() { + DEBUG=true + set -x + PS4='${BASH_SOURCE[0]}:$LINENO: ${FUNCNAME[0]}: ' +} + +function verbose() { + VERBOSE=true +} + +function log() { + echo "$@" >&2 +} + +function log_error() { + log "$@" +} + +function log_verbose() { + if $VERBOSE ; then + log "$@" + fi +} + +function log_info() { + log "$@" +} + +function fatal_error() { + log_error "$@" + if $EXIT_ON_ERROR ; then + exit 1 + else + return 1 + fi +} + +function push_self() { + local host_port=$1 + + forgejo-test-helper.sh push_self_action http://root:admin1234@$host_port root cascading-pr vTest +} + +function run() { + local host_port=$1 url=$2 token=$3 + + push_self $host_port + + echo do something +} + +function main() { + local command=run + local host_port=$(cat forgejo-ip):3000 + local url=http://$host_port + local token=$(cat forgejo-token) + + while true; do + case "$1" in + --verbose) + shift + verbose + ;; + --debug) + shift + debug + ;; + *) + "${1:-run}" "$host_port" "$url" "$token" + return 0 + ;; + esac + done +} + +${MAIN:-main} "${@}" diff --git a/.forgejo/workflows/integration.yml b/.forgejo/workflows/integration.yml new file mode 100644 index 0000000..edbe387 --- /dev/null +++ b/.forgejo/workflows/integration.yml @@ -0,0 +1,96 @@ +name: integration + +on: [push, pull_request_target] + +jobs: + integration: + runs-on: self-hosted + steps: + - uses: actions/checkout@v4 + + - id: forgejo + uses: https://code.forgejo.org/actions/setup-forgejo@v1 + with: + user: root + password: admin1234 + image: codeberg.org/forgejo-integration/forgejo + image-version: 1.21.0-3-rc0 + lxc-ip-prefix: 10.1.15 + + - name: tests + run: | + .forgejo/run-test.sh + forgejo-test-helper.sh push_self_action http://root:admin1234@${{ steps.forgejo.outputs.host-port }} root forgejo-release vTest + + - name: admin user create --username testuser + run: | + forgejo='docker exec --user 1000 forgejo forgejo' + user=testuser + if ! $forgejo admin user list | grep -q "$user" ; then + $forgejo admin user create --username "$user" --password "admin1324" --email "$user@example.com" + fi + + - name: build & publish + run: | + set -x + + version=1.2.3 + cat > /etc/docker/daemon.json < $binary$suffix + if test "$suffix" = .xz ; then + unxz --keep $binary$suffix + fi + chmod +x $binary + ./$binary --version | grep $version + curl --fail -L -sS $url/$user/forgejo/releases/download/v$version/$binary$suffix.sha256 > $binary$suffix.sha256 + shasum -a 256 --check $binary$suffix.sha256 + rm $binary$suffix + done + done + docker pull ${{ steps.forgejo.outputs.host-port }}/$user/forgejo:$version + done diff --git a/.gitignore b/.gitignore index c0df46a..53ecd71 100644 --- a/.gitignore +++ b/.gitignore @@ -1,51 +1,5 @@ -# ---> Emacs -# -*- mode: gitignore; -*- +forgejo-token +forgejo-api +forgejo-header +forgejo-ip *~ -\#*\# -/.emacs.desktop -/.emacs.desktop.lock -*.elc -auto-save-list -tramp -.\#* - -# Org-mode -.org-id-locations -*_archive - -# flymake-mode -*_flymake.* - -# eshell files -/eshell/history -/eshell/lastdir - -# elpa packages -/elpa/ - -# reftex files -*.rel - -# AUCTeX auto folder -/auto/ - -# cask packages -.cask/ -dist/ - -# Flycheck -flycheck_*.el - -# server auth directory -/server/ - -# projectiles files -.projectile - -# directory configuration -.dir-locals.el - -# network security -/network-security.data - - diff --git a/README.md b/README.md index 5853bc9..ffb311d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,17 @@ # cascading-pr -Create a synchronize a PR is a dependent repository \ No newline at end of file +Create a synchronize a PR is a dependent repository + +# Hacking + +```sh +git clone https://code.forgejo.org/actions/setup-forgejo +export PATH=$(pwd)/setup-forgejo:$PATH +git clone https://code.forgejo.org/actions/cascading-pr +cd cascading-pr +forgejo-curl.sh logout +forgejo.sh teardown +forgejo.sh setup root admin1234 codeberg.org/forgejo/forgejo 1.21 +firefox http://$(cat forgejo-ip):3000 +.forgejo/run-test.sh --debug +``` diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..df47e7b --- /dev/null +++ b/action.yml @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: MIT +name: 'Cascading PR' +author: 'Forgejo authors' +description: | + Create and update a PR in another repository + +inputs: + forgejo: + description: 'URL of the Forgejo instance where the PR is created (e.g. https://code.forgejo.org)' + required: true + repo: + description: 'the repository into which the PR is created' + required: true + token: + description: 'a token with write permission on repo' + required: true + +runs: + using: "composite" + steps: + - uses: actions/checkout@v4 + - run: | + echo + shell: bash