You've already forked helm-gitea
chore(deps): upgrade to 1.26 and replace environment_to_ini_call with gitea config edit-ini (#1070)
Need more time to know how to handle `expect_environment_to_ini_call` Fix #1068 Reviewed-on: https://gitea.com/gitea/helm-gitea/pulls/1070 Reviewed-by: Zettat123 <39446+zettat123@noreply.gitea.com>
This commit is contained in:
@@ -412,7 +412,7 @@ gitea:
|
|||||||
```
|
```
|
||||||
|
|
||||||
This would mount the two additional volumes (`oauth` and `some-additionals`) from different sources to the init container where the _app.ini_ gets updated.
|
This would mount the two additional volumes (`oauth` and `some-additionals`) from different sources to the init container where the _app.ini_ gets updated.
|
||||||
All files mounted that way will be read and converted to environment variables and then added to the _app.ini_ using [environment-to-ini](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini).
|
All files mounted that way will be read and converted to environment variables and then added to the _app.ini_ using [Gitea config edit-ini](https://docs.gitea.com/administration/config-cheat-sheet#use-environment-variables-to-setup-gitea).
|
||||||
|
|
||||||
The key of such additional source represents the section inside the _app.ini_.
|
The key of such additional source represents the section inside the _app.ini_.
|
||||||
The value for each key can be multiline ini-like definitions.
|
The value for each key can be multiline ini-like definitions.
|
||||||
@@ -453,10 +453,10 @@ Users are able to define their own environment variables, which are loaded into
|
|||||||
We also support to directly interact with the generated _app.ini_.
|
We also support to directly interact with the generated _app.ini_.
|
||||||
|
|
||||||
To inject self defined variables into the _app.ini_ a certain format needs to be honored.
|
To inject self defined variables into the _app.ini_ a certain format needs to be honored.
|
||||||
This is described in detail on the [env-to-ini](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini) page.
|
This is described in detail on the [Gitea config edit-ini](https://docs.gitea.com/administration/config-cheat-sheet#use-environment-variables-to-setup-gitea) page.
|
||||||
|
|
||||||
Prior to Gitea 1.20 and Chart 9.0.0 the helm chart had a custom prefix `ENV_TO_INI`.
|
Prior to Gitea 1.20 and Chart 9.0.0 the helm chart had a custom prefix `ENV_TO_INI`.
|
||||||
After the support for a custom prefix was removed in Gite core, the prefix was changed to `GITEA`.
|
After the support for a custom prefix was removed in Gitea core, the prefix was changed to `GITEA`.
|
||||||
|
|
||||||
For example a database setting needs to have the following format:
|
For example a database setting needs to have the following format:
|
||||||
|
|
||||||
@@ -1577,7 +1577,7 @@ mariadb:
|
|||||||
|
|
||||||
### App.ini generation <!-- omit from toc -->
|
### App.ini generation <!-- omit from toc -->
|
||||||
|
|
||||||
The app.ini generation has changed and now utilizes the environment-to-ini script provided by newer Gitea versions.
|
The app.ini generation has changed and now uses the `gitea config edit-ini` subcommand introduced in Gitea 1.26.
|
||||||
This change ensures, that the app.ini is now persistent.
|
This change ensures, that the app.ini is now persistent.
|
||||||
|
|
||||||
### Secret Key generation <!-- omit from toc -->
|
### Secret Key generation <!-- omit from toc -->
|
||||||
|
|||||||
Generated
+1
@@ -1226,6 +1226,7 @@
|
|||||||
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -78,7 +78,6 @@ function env2ini::reload_preset_envs() {
|
|||||||
rm $TMP_EXISTING_ENVS_FILE
|
rm $TMP_EXISTING_ENVS_FILE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function env2ini::process_config_file() {
|
function env2ini::process_config_file() {
|
||||||
local config_file="${1}"
|
local config_file="${1}"
|
||||||
local section="$(basename "${config_file}")"
|
local section="$(basename "${config_file}")"
|
||||||
@@ -151,4 +150,4 @@ if [ -f ${GITEA_APP_INI} ]; then
|
|||||||
unset GITEA__SERVER__LFS_JWT_SECRET
|
unset GITEA__SERVER__LFS_JWT_SECRET
|
||||||
fi
|
fi
|
||||||
|
|
||||||
environment-to-ini -o $GITEA_APP_INI
|
gitea config edit-ini --apply-env --config "$GITEA_APP_INI" --out "$GITEA_APP_INI"
|
||||||
|
|||||||
@@ -9,27 +9,51 @@ function setup() {
|
|||||||
export GITEA_APP_INI="$BATS_TEST_TMPDIR/app.ini"
|
export GITEA_APP_INI="$BATS_TEST_TMPDIR/app.ini"
|
||||||
export TMP_EXISTING_ENVS_FILE="$BATS_TEST_TMPDIR/existing-envs"
|
export TMP_EXISTING_ENVS_FILE="$BATS_TEST_TMPDIR/existing-envs"
|
||||||
export ENV_TO_INI_MOUNT_POINT="$BATS_TEST_TMPDIR/env-to-ini-mounts"
|
export ENV_TO_INI_MOUNT_POINT="$BATS_TEST_TMPDIR/env-to-ini-mounts"
|
||||||
|
export GITEA_EDIT_INI_EXPECTED=0
|
||||||
|
export PATH="$BATS_TEST_TMPDIR/bin:$PATH"
|
||||||
|
|
||||||
stub gitea \
|
mkdir -p "$BATS_TEST_TMPDIR/bin"
|
||||||
"generate secret INTERNAL_TOKEN : echo 'mocked-internal-token'" \
|
cat >"$BATS_TEST_TMPDIR/bin/gitea" <<'EOF'
|
||||||
"generate secret SECRET_KEY : echo 'mocked-secret-key'" \
|
#!/usr/bin/env bash
|
||||||
"generate secret JWT_SECRET : echo 'mocked-jwt-secret'" \
|
set -euo pipefail
|
||||||
"generate secret LFS_JWT_SECRET : echo 'mocked-lfs-jwt-secret'"
|
|
||||||
|
case "$*" in
|
||||||
|
'generate secret INTERNAL_TOKEN')
|
||||||
|
echo 'mocked-internal-token'
|
||||||
|
;;
|
||||||
|
'generate secret SECRET_KEY')
|
||||||
|
echo 'mocked-secret-key'
|
||||||
|
;;
|
||||||
|
'generate secret JWT_SECRET')
|
||||||
|
echo 'mocked-jwt-secret'
|
||||||
|
;;
|
||||||
|
'generate secret LFS_JWT_SECRET')
|
||||||
|
echo 'mocked-lfs-jwt-secret'
|
||||||
|
;;
|
||||||
|
"config edit-ini --apply-env --config $GITEA_APP_INI --out $GITEA_APP_INI")
|
||||||
|
if [ "$GITEA_EDIT_INI_EXPECTED" -eq 1 ]; then
|
||||||
|
echo 'Stubbed gitea config edit-ini was called!'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 'Unexpected gitea config edit-ini invocation' >&2
|
||||||
|
exit 127
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unexpected gitea invocation: $*" >&2
|
||||||
|
exit 127
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
EOF
|
||||||
|
chmod +x "$BATS_TEST_TMPDIR/bin/gitea"
|
||||||
}
|
}
|
||||||
|
|
||||||
function teardown() {
|
function teardown() {
|
||||||
unstub gitea
|
:
|
||||||
# This condition exists due to https://github.com/jasonkarns/bats-mock/pull/37 being still open
|
|
||||||
if [ $ENV_TO_INI_EXPECTED -eq 1 ]; then
|
|
||||||
unstub environment-to-ini
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# This function exists due to https://github.com/jasonkarns/bats-mock/pull/37 being still open
|
function expect_gitea_config_edit_ini_call() {
|
||||||
function expect_environment_to_ini_call() {
|
export GITEA_EDIT_INI_EXPECTED=1
|
||||||
export ENV_TO_INI_EXPECTED=1
|
|
||||||
stub environment-to-ini \
|
|
||||||
"-o $GITEA_APP_INI : echo 'Stubbed environment-to-ini was called!'"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function execute_test_script() {
|
function execute_test_script() {
|
||||||
@@ -56,18 +80,18 @@ function write_mounted_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "works as expected when nothing is configured" {
|
@test "works as expected when nothing is configured" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
run $PROJECT_ROOT/scripts/init-containers/config/config_environment.sh
|
run $PROJECT_ROOT/scripts/init-containers/config/config_environment.sh
|
||||||
|
|
||||||
assert_success
|
assert_success
|
||||||
assert_line '...Initial secrets generated'
|
assert_line '...Initial secrets generated'
|
||||||
assert_line 'Reloading preset envs...'
|
assert_line 'Reloading preset envs...'
|
||||||
assert_line '=== All configuration sources loaded ==='
|
assert_line '=== All configuration sources loaded ==='
|
||||||
assert_line 'Stubbed environment-to-ini was called!'
|
assert_line 'Stubbed gitea config edit-ini was called!'
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "exports initial secrets" {
|
@test "exports initial secrets" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
run execute_test_script
|
run execute_test_script
|
||||||
|
|
||||||
assert_success
|
assert_success
|
||||||
@@ -78,7 +102,7 @@ function write_mounted_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "does NOT export initial secrets when app.ini already exists" {
|
@test "does NOT export initial secrets when app.ini already exists" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
touch $GITEA_APP_INI
|
touch $GITEA_APP_INI
|
||||||
|
|
||||||
run execute_test_script
|
run execute_test_script
|
||||||
@@ -92,7 +116,7 @@ function write_mounted_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "ensures that preset environment variables take precedence over auto-generated ones" {
|
@test "ensures that preset environment variables take precedence over auto-generated ones" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
export GITEA__OAUTH2__JWT_SECRET="pre-defined-jwt-secret"
|
export GITEA__OAUTH2__JWT_SECRET="pre-defined-jwt-secret"
|
||||||
|
|
||||||
run execute_test_script
|
run execute_test_script
|
||||||
@@ -102,7 +126,7 @@ function write_mounted_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "ensures that preset environment variables take precedence over mounted ones" {
|
@test "ensures that preset environment variables take precedence over mounted ones" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
export GITEA__OAUTH2__JWT_SECRET="pre-defined-jwt-secret"
|
export GITEA__OAUTH2__JWT_SECRET="pre-defined-jwt-secret"
|
||||||
write_mounted_file "inlines" "oauth2" "$(cat << EOF
|
write_mounted_file "inlines" "oauth2" "$(cat << EOF
|
||||||
JWT_SECRET=inline-jwt-secret
|
JWT_SECRET=inline-jwt-secret
|
||||||
@@ -117,7 +141,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "ensures that additionals take precedence over inlines" {
|
@test "ensures that additionals take precedence over inlines" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
write_mounted_file "inlines" "oauth2" "$(cat << EOF
|
write_mounted_file "inlines" "oauth2" "$(cat << EOF
|
||||||
JWT_SECRET=inline-jwt-secret
|
JWT_SECRET=inline-jwt-secret
|
||||||
EOF
|
EOF
|
||||||
@@ -136,7 +160,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "ensures that dotted/dashed sections are properly masked" {
|
@test "ensures that dotted/dashed sections are properly masked" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
write_mounted_file "inlines" "repository.pull-request" "$(cat << EOF
|
write_mounted_file "inlines" "repository.pull-request" "$(cat << EOF
|
||||||
WORK_IN_PROGRESS_PREFIXES=WIP:,[WIP]
|
WORK_IN_PROGRESS_PREFIXES=WIP:,[WIP]
|
||||||
EOF
|
EOF
|
||||||
@@ -152,7 +176,7 @@ EOF
|
|||||||
##### THIS IS A BUG, BUT I WANT IT TO BE COVERED BY TESTS #####
|
##### THIS IS A BUG, BUT I WANT IT TO BE COVERED BY TESTS #####
|
||||||
###############################################################
|
###############################################################
|
||||||
@test "ensures uppercase section and setting names (🐞)" {
|
@test "ensures uppercase section and setting names (🐞)" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
export GITEA__oauth2__JwT_Secret="pre-defined-jwt-secret"
|
export GITEA__oauth2__JwT_Secret="pre-defined-jwt-secret"
|
||||||
write_mounted_file "inlines" "repository.pull-request" "$(cat << EOF
|
write_mounted_file "inlines" "repository.pull-request" "$(cat << EOF
|
||||||
WORK_IN_progress_PREFIXES=WIP:,[WIP]
|
WORK_IN_progress_PREFIXES=WIP:,[WIP]
|
||||||
@@ -167,7 +191,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "treats top-level configuration as section-less" {
|
@test "treats top-level configuration as section-less" {
|
||||||
expect_environment_to_ini_call
|
expect_gitea_config_edit_ini_call
|
||||||
write_mounted_file "inlines" "_generals_" "$(cat << EOF
|
write_mounted_file "inlines" "_generals_" "$(cat << EOF
|
||||||
APP_NAME=Hello top-level configuration
|
APP_NAME=Hello top-level configuration
|
||||||
RUN_MODE=dev
|
RUN_MODE=dev
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
suite: config template | config_environment.sh
|
||||||
|
release:
|
||||||
|
name: gitea-unittests
|
||||||
|
namespace: testing
|
||||||
|
templates:
|
||||||
|
- templates/gitea/config.yaml
|
||||||
|
tests:
|
||||||
|
- it: uses `gitea config edit-ini` to write app.ini from environment variables
|
||||||
|
template: templates/gitea/config.yaml
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 1
|
||||||
|
matchRegex:
|
||||||
|
path: stringData["config_environment.sh"]
|
||||||
|
pattern: 'gitea config edit-ini --apply-env --config .+GITEA_APP_INI.+ --out .+GITEA_APP_INI'
|
||||||
Reference in New Issue
Block a user