pixelfed/pipeline.yml

176 lines
5.9 KiB
YAML

---
resource_types:
- name: aptly-resource
type: docker-image
source:
repository: git.datentonne.net/docker-public/aptly-resource
tag: latest
resources:
- name: pixelfed
type: github-release
source:
owner: pixelfed
repository: pixelfed
access_token: ((github.access_token))
tag_filter: "v([^v].*)"
- name: pixelfed-deb
type: aptly-resource
source:
api_uri: https://apt-api.datentonne.net/
repo_uri: https://apt.datentonne.net/
repo: datentonne
distribution: debian
component: main
architecture: amd64
package: pixelfed
username: ((aptly.username))
password: ((aptly.password))
timeout: 1801
jobs:
- name: build-docker
plan:
- get: pixelfed
trigger: true
params:
include_source_tarball: true
- task: build
privileged: true
config:
platform: linux
#image_resource:
# type: registry-image
# source:
# repository: git.datentonne.net/docker-public/fpm-docker
# tag: latest
image_resource:
type: docker-image
source:
repository: amidos/dcind
inputs:
- name: pixelfed
#outputs:
# - name: deb
caches:
- path: go-build
caches:
- path: go-mod
params:
PACKAGE_TOKEN: ((datentonne.gitea_package_token))
#PACKAGE_TOKEN: ((github.access_token))
run:
path: bash
args:
- -ec
- |
source /docker-lib.sh
start_docker || true
export VERSION="$(cat pixelfed/version)"
export VERSION_OUT="$(cat pixelfed/version)-$(date +%s)"
cd pixelfed
mkdir source
tar xf source.tar.gz --strip-components=1 -C source
cd source
env
docker build . -t pixelfed:$VERSION -f contrib/docker/Dockerfile.apache
echo $PACKAGE_TOKEN | docker login git.datentonne.net --username phil --password-stdin
docker tag pixelfed:$VERSION git.datentonne.net/docker-public/pixelfed:$VERSION
docker push git.datentonne.net/docker-public/pixelfed:$VERSION
- name: build-deb
plan:
- get: pixelfed
trigger: true
params:
include_source_tarball: true
- task: build
config:
platform: linux
image_resource:
type: registry-image
source:
repository: git.datentonne.net/docker-public/fpm-docker
tag: latest
inputs:
- name: pixelfed
outputs:
- name: deb
run:
path: bash
args:
- -cc
- |
export VERSION="$(cat pixelfed/version)"
export VERSION_OUT="$(cat pixelfed/version)-$(date +%s)"
mkdir -p pixelfed/source
mkdir -p opt/pixelfed
cat <<- EOF > pixelfed.service
[Unit]
Description=pixelfed service with docker compose
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=true
WorkingDirectory=/opt/pixelfed
ExecStart=docker compose \
-f docker-compose.yml \
-f docker-compose.version.yml \
-f docker-compose.config.yml \
up -d --remove-orphans
ExecStop=docker compose down
[Install]
WantedBy=multi-user.target
EOF
cat <<- EOF > after_upgrade.sh
cd /opt/pixelfed
docker compose exec app composer install
docker compose exec app php artisan migrate --force
docker compose exec app php artisan config:cache
docker compose exec app php artisan route:cache
docker compose exec app php artisan instance:actor
EOF
chmod +x after_upgrade.sh
cd pixelfed
tar xf source.tar.gz --strip-components=1 -C source
cd ..
cp pixelfed/source/.env.docker opt/pixelfed/.env.docker
cp pixelfed/source/docker-compose.yml opt/pixelfed/docker-compose.yml
sed -i 's/- \"8080:80\"/- ${APP_PORTS:-8080:80}/g' opt/pixelfed/docker-compose.yml
cat <<- EOF > opt/pixelfed/docker-compose.version.yml
version: "3.4"
services:
app:
image: git.datentonne.net/docker-public/pixelfed:$VERSION
worker:
image: git.datentonne.net/docker-public/pixelfed:$VERSION
EOF
cat <<- EOF > opt/pixelfed/docker-compose.config.yml
version: "3.4"
EOF
fpm \
--verbose \
-f \
-n pixelfed \
-s dir \
-t deb \
-v $VERSION_OUT \
--config-files opt/pixelfed/docker-compose.config.yml \
--config-files opt/pixelfed/.env.docker \
--after-upgrade after_upgrade.sh \
--deb-systemd pixelfed.service \
--deb-systemd-restart-after-upgrade \
opt/pixelfed/=/opt/pixelfed/
dpkg-deb -c pixelfed_*.deb
mv -v pixelfed_${VERSION_OUT}_amd64.deb deb/
echo "deb/pixelfed_${VERSION_OUT}_amd64.deb" > deb/filename
- put: pixelfed-deb
params:
archive_file: deb/filename
gpg_passphrase_file: /etc/hosts