Browse Source

update snapcraft.yaml for core18 and latest features (#11300)

Removing some of the complexity, together with the install and
configure hook.

Signed-off-by: Sergio Schvezov <sergio.schvezov@canonical.com>
master
Sergio Schvezov GitHub 5 years ago
parent
commit
b09ec508c3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 341 deletions
  1. +0
    -66
      snap/helpers/app.ini
  2. +0
    -126
      snap/helpers/configuration.sh
  3. +0
    -23
      snap/helpers/simple_launcher.sh
  4. +0
    -3
      snap/hooks/configure
  5. +0
    -45
      snap/hooks/install
  6. +27
    -78
      snap/snapcraft.yaml

+ 0
- 66
snap/helpers/app.ini View File

@@ -1,66 +0,0 @@
APP_NAME = Gitea: Go Git Service
RUN_USER = root
RUN_MODE = prod
CUSTOM_PATH = SNAP_DIR_DATA/custom

[server]
DOMAIN = localhost
PROTOCOL = http
HTTP_PORT = 3001
ROOT_URL = http://localhost:3001/
DISABLE_SSH = false
SSH_PORT = 22
STATIC_ROOT_PATH = SNAP_DIR_DATA/static
APP_DATA_PATH = SNAP_DIR_COMMON/data
SSH_ROOT = SNAP_DIR_COMMON/ssh
SSH_KEY_TEST_PATH = SNAP_DIR_DATA/sshkeytest

[database]
DB_TYPE = sqlite3
PATH = SNAP_DIR_COMMON/gitea.db

[repository]
ROOT = SNAP_DIR_COMMON/repositories/data

[repository.upload]
ENABLED = true
ALLOWED_TYPES = "image/jpeg|image/png"
FILE_MAX_SIZE = 10
MAX_FILES = 5
TEMP_PATH = SNAP_DIR_COMMON/repositories/tmp

[release.attachment]
PATH = SNAP_DIR_COMMON/releases/attachments

[smartypants]
ENABLED = true

[indexer]
ISSUE_INDEXER_PATH = SNAP_DIR_COMMON/indexers/issues.bleve


[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false

[picture]
AVATAR_UPLOAD_PATH = SNAP_DIR_COMMON/pictures/avatars
DISABLE_GRAVATAR = true
ENABLE_FEDERATED_AVATAR = false

[attachment]
PATH = SNAP_DIR_COMMON/attachments

[session]
PROVIDER = memory

[log]
MODE = file
LEVEL = Trace
ROOT_PATH = SNAP_DIR_COMMON/log

+ 0
- 126
snap/helpers/configuration.sh View File

@@ -1,126 +0,0 @@
#!/bin/bash
if snapctl get gitea.snap.custom; then
cdir=$(snapctl get gitea.snap.custom)
else
cdir=$SNAP_COMMON
fi

cfg="$cdir/conf/app.ini"
bak="$cdir/conf/app.ini.bak-$(date -Ins)"
basecfg="$SNAP/snap/helpers/app.ini"
smp="$SNAP/gitea/custom/conf/app.ini.sample"

function toSnap() {
OIFS=$IFS
IFS='
'
category="none"
src="$cfg"
[[ "$1" = "init" ]] && src="$smp"
[[ "$1" = "snap" ]] && src="$basecfg"

for l in $(sed 's_;\([A-Z]*\)_\1_g' $src | grep -v -e '^;' -e '^$'); do
if echo $l | grep -q '^[[]'; then
category=$(CatToSnap "$l")
elif echo $l | grep -q '^[A-Z]'; then
option=$(OptToSnap "$l")
value=$(ValToSnap "$l")
if [[ $category = "none" ]]; then
snapctl set "$option=$value"
else
snapctl set "$category.$option=$value"
fi
fi
done
IFS=$OIFS
}

function toIni() {
OIFS=$IFS
IFS='
'
category="none"; option="none"; catUnset=true
src=$smp
[[ -f $cfg ]] && src="$cfg"
tmpIni="$cfg.tmp"
[[ -f $src ]] && cp "$src" "$tmpIni"
cp $tmpIni $bak
echo '' > $cfg
for l in $(grep -v -e '^;' -e '^$' $tmpIni); do
if echo $l | grep -q '^[[]'; then
category=$(CatToSnap "$l")
catUnset=true
elif echo $l | grep -q '^[A-Z]'; then
option=$(OptToSnap "$l")
if [[ $category = "none" ]]; then
value=$(snapctl get $option)
echo $(OptToIni "$option") = $value >> $cfg
else
value=$(snapctl get $category.$option)
if $catUnset; then
echo "" >> $cfg
echo "[$(CatToIni "$category")]" >> $cfg
catUnset=false
fi
echo $(OptToIni "$option") = $value >> $cfg
fi
fi
done;
IFS=$OIFS
}

function CatToSnap {
ret=$(echo "$1" \
| grep -oP '[A-Za-z0-9._]+' \
| sed 's|\.|-|g' \
| sed 's|_|99|g')
echo $ret
}
function OptToSnap {
ret=$(echo "$1" \
| grep -oP '^[A-Z_]+' \
| tr '[:upper:]' '[:lower:]' \
| sed 's|_|-|g')
echo $ret
}
function ValToSnap {
ret=$(echo "$1" \
| grep -oP '=.*$' \
| sed 's_^= __g' \
| sed 's_^=__g' \
| sed "s|SNAP_DIR_DATA|$SDATA|g" \
| sed "s|SNAP_DIR_COMMON|$SCOMMON|g" \
| sed 's|{}||g')
echo $ret
}

function CatToIni {
ret=$(echo "$1" \
| sed 's|-|.|g' \
| sed 's|\ |_|g' \
| sed 's|99|_|g')
echo $ret
}
function OptToIni {
ret=$(echo "$1" \
| tr '[:lower:]' '[:upper:]' \
| sed 's|-|_|g')
echo $ret
}

[[ "$1" = "configure" ]] \
&& toIni \
&& exit 0

[[ "$1" = "install" ]] \
&& echo "Initial Configuration..." \
&& mkdir -p $SNAP_COMMON/conf \
&& toSnap init \
&& toSnap snap \
&& toIni sample \
&& exit 0

[[ "$1" = "save" ]] \
&& echo "Saving current config..." \
&& toSnap \
&& exit 0

+ 0
- 23
snap/helpers/simple_launcher.sh View File

@@ -1,23 +0,0 @@
#!/bin/bash

if ! env | grep -q root; then
echo "
+----------------------------------------+
| You are not running gitea as root. |
| This is required for the snap package. |
| Please re-run as root. |
+----------------------------------------+
"
$SNAP/gitea/gitea --help
exit 1
fi

# Set usernames for gitea
export USERNAME=root
export USER=root

export GITEA_WORK_DIR=$(snapctl get gitea.snap.workdir)
export GITEA_CUSTOM=$(snapctl get gitea.snap.custom)

$SNAP/bin/gconfig save
cd $SNAP/gitea; ./gitea $@

+ 0
- 3
snap/hooks/configure View File

@@ -1,3 +0,0 @@
#!/bin/bash

$SNAP/bin/gconfig configure

+ 0
- 45
snap/hooks/install View File

@@ -1,45 +0,0 @@
#!/bin/bash

export SDATA=$(echo $SNAP_DATA | sed "s|$SNAP_REVISION|current|")
export SCOMMON="$SNAP_COMMON"
export isRoot=`true`
snapctl set gitea.snap.workdir="$SDATA/custom"
snapctl set gitea.snap.custom="$SCOMMON"

function mkDirCommon(){
for dir in $@; do
mkdir -p "$SCOMMON/$dir"
done
}

function mkdirData(){
for dir in $@; do
mkdir -p "$SDATA/$dir"
if [ -d $SNAP/$dir ]; then
cp -r --preserve=mode \
$SNAP/$dir/* \
$SNAP/$dir/.[a-zA-Z0-9-]* \
$SDATA/$dir/ 2> $SCOMMON/log/snap-mkdirData.log
fi
done
}

mkDirCommon pictures \
repositories \
attachments \
data \
log

mkdirData certs \
sshkeytest \
custom/conf \
static/templates \
static/scripts \
static/public

[[ -f $SNAP_COMMON/conf/app.ini ]] || $SNAP/bin/gconfig install

# Configure Git to use the right templates
mkdir -p $SDATA/git/
cp -r --preserve=mode $SNAP/usr/share/git-core/templates $SDATA/git/
$SNAP/usr/bin/git config --global init.templateDir $SDATA/git/templates/

+ 27
- 78
snap/snapcraft.yaml View File

@@ -6,93 +6,55 @@ description: |
an independent binary distribution across ALL platforms that Go supports, an independent binary distribution across ALL platforms that Go supports,
including Linux, Mac OS X, Windows and ARM. including Linux, Mac OS X, Windows and ARM.


type: app
icon: public/img/gitea-lg.png icon: public/img/gitea-lg.png
confinement: strict confinement: strict
grade: stable
base: core18
adopt-info: gitea


version: 'git'
environment:
GITEA_CUSTOM: "$SNAP_COMMON"
GITEA_WORK_DIR: "$SNAP_DATA"


apps: apps:
gitea: gitea:
command: bin/gitea
command: gitea
plugs: [network, network-bind] plugs: [network, network-bind]
web: web:
command: bin/gitea web
command: gitea web
daemon: simple daemon: simple
plugs: [network, network-bind] plugs: [network, network-bind]
serv:
command: bin/gitea serv
plugs: [network, network-bind]
admin:
command: bin/gitea admin
plugs: [network, network-bind]
cert:
command: bin/gitea cert
hook:
command: bin/gitea hook
plugs: [network, network-bind]
dump: dump:
command: bin/gitea dump
command: gitea dump
plugs: [home] plugs: [home]
help:
command: bin/gitea --help
version: version:
command: bin/gitea --version
command: gitea --version
sqlite: sqlite:
command: usr/bin/sqlite3 command: usr/bin/sqlite3


parts: parts:
go:
source-tag: go1.8.3
prime:
- -*


gitea: gitea:
plugin: nil
plugin: make
source: . source: .
source-type: git
after: [ go ]
stage-packages: [ git, sqlite3, openssh-client ] stage-packages: [ git, sqlite3, openssh-client ]
build-packages: [ libpam0g-dev, libsqlite3-dev]
prepare: |
export PATH=$SNAPCRAFT_PART_INSTALL/../../go/install/bin:$PATH
export GOPATH=$SNAPCRAFT_PART_INSTALL/../go
export bld=$SNAPCRAFT_PART_INSTALL/../build
export src=$SNAPCRAFT_PART_INSTALL/../src
mkdir -p $GOPATH/src/code.gitea.io/gitea
cp -r $src/* $GOPATH/src/code.gitea.io/gitea
build: |
export PATH=$SNAPCRAFT_PART_INSTALL/../go/bin/:$SNAPCRAFT_PART_INSTALL/../../go/install/bin:$PATH
export GOPATH=$SNAPCRAFT_PART_INSTALL/../go
cd $GOPATH/src/code.gitea.io/gitea
build-packages: [ git, libpam0g-dev, libsqlite3-dev]
build-snaps: [ go, node/14/stable ]
build-environment:
- LDFLAGS: ""
override-pull: |
snapcraftctl pull

version="$(git describe --always | sed -e 's/-/+git/;y/-/./')"
[ -n "$(echo $version | grep "+git")" ] && grade=devel || grade=stable
snapcraftctl set-version "$version"
snapcraftctl set-grade "$grade"

override-build: |
set -x
TAGS="bindata sqlite sqlite_unlock_notify pam cert" make build TAGS="bindata sqlite sqlite_unlock_notify pam cert" make build
install: |
# Set Convenience Variables
src=$SNAPCRAFT_PART_INSTALL/../go/src/code.gitea.io/gitea
giteaBase=$SNAPCRAFT_PART_INSTALL/gitea
scurrent=/var/snap/$SNAPCRAFT_PROJECT_NAME/current
scommon=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
# Copy build artifact and necessary files
mkdir -p $giteaBase/conf
# Workaround for gitea ignoring APP_DATA_PATH in app.ini after snap update.
ln -s $scurrent/custom $giteaBase/custom
ln -s $scommon/data $giteaBase/data
# Workaround for cmd/certs not knowing how to put files somewhere else
ln -s $scurrent/cert.pem $giteaBase/cert.pem
ln -s $scurrent/key.pem $giteaBase/key.pem
# Copy static content
mkdir -p $SNAPCRAFT_PART_INSTALL/static
cp $src/gitea $giteaBase/
cp -r $src/LICENSE \
$src/templates \
$src/public \
$src/scripts \
$SNAPCRAFT_PART_INSTALL/static/
cp -r $src/README.md \
$src/LICENSE \
$src/custom \
$SNAPCRAFT_PART_INSTALL/
install -D gitea "${SNAPCRAFT_PART_INSTALL}/gitea"
cp -r options "${SNAPCRAFT_PART_INSTALL}/"

prime: prime:
- -etc - -etc
- -usr/lib/systemd - -usr/lib/systemd
@@ -101,20 +63,7 @@ parts:
- -usr/lib/x86_64-linux-gnu/krb5 - -usr/lib/x86_64-linux-gnu/krb5
- -usr/share/apport - -usr/share/apport
- -usr/share/bash-completion - -usr/share/bash-completion
- -usr/share/doc
- -usr/share/git-core/contrib - -usr/share/git-core/contrib
- -usr/share/man - -usr/share/man
- -usr/share/upstart - -usr/share/upstart
- -var - -var

helpers:
plugin: dump
source: snap/helpers
organize:
simple_launcher.sh: bin/gitea
app.ini: gitea/snapApp.ini
configuration.sh: bin/gconfig
prime:
- bin/gitea
- bin/gconfig
- gitea/snapApp.ini

Loading…
Cancel
Save