commit a4d6f3c256f1c547b203fe633fc1d2eee3ddf728 Author: Philipp Dieter Date: Wed Aug 16 13:28:39 2023 +0200 [TASK] Init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..735d96b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +* +!pipeline.yml +!Makefile +!.gitignore diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..48ef681 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +set_pipeline: + fly -t datentonne sp -p pixelfed -c pipeline.yml + +trigger_job_docker: + fly -t datentonne tj -j pixelfed/build-docker -w + +trigger_job_deb: + fly -t datentonne tj -j pixelfed/build-deb -w diff --git a/pipeline.yml b/pipeline.yml new file mode 100644 index 0000000..65a5833 --- /dev/null +++ b/pipeline.yml @@ -0,0 +1,174 @@ +--- +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 \ + --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