117 lines
2.8 KiB
YAML
117 lines
2.8 KiB
YAML
---
|
|
resource_types:
|
|
- name: http-resource
|
|
type: registry-image
|
|
source:
|
|
repository: redxef/concourse-http-resource
|
|
tag: edge
|
|
|
|
resources:
|
|
- name: source
|
|
type: git
|
|
source:
|
|
uri: https://git.redxef.at/redxef/jellyfin-smart-playlist
|
|
branch: main
|
|
fetch_tags: true
|
|
tag_regex: 'v.*'
|
|
- name: manifest
|
|
type: git
|
|
source:
|
|
uri: ssh://git@git.redxef.at:8022/redxef/jellyfin-smart-playlist.git
|
|
branch: manifest
|
|
private_key: ((gitea.id_ed25519))
|
|
- name: releases
|
|
type: http-resource
|
|
source:
|
|
url: https://git.redxef.at/api/v1/repos/redxef/jellyfin-smart-playlist/releases
|
|
method: get
|
|
auth:
|
|
basic:
|
|
username: ((gitea.username))
|
|
password: ((gitea.token))
|
|
- name: artifact
|
|
type: http-resource
|
|
source:
|
|
url: https://git.redxef.at/api/v1/repos/redxef/jellyfin-smart-playlist/releases/((.:release_id))/assets
|
|
method: get
|
|
auth:
|
|
basic:
|
|
username: ((gitea.username))
|
|
password: ((gitea.token))
|
|
headers:
|
|
- - Accept
|
|
- application/json
|
|
query:
|
|
- - name
|
|
- smart-playlist_((.:version)).zip
|
|
body:
|
|
multipart:
|
|
files:
|
|
attachment: artifacts/smart-playlist_((.:version)).zip
|
|
version_check_method: none
|
|
|
|
|
|
jobs:
|
|
- name: release
|
|
plan:
|
|
- get: source
|
|
trigger: true
|
|
- get: manifest
|
|
- get: releases
|
|
- task: run-build
|
|
config:
|
|
platform: linux
|
|
image_resource:
|
|
type: registry-image
|
|
source:
|
|
repository: alpine
|
|
inputs:
|
|
- name: source
|
|
- name: manifest
|
|
- name: releases
|
|
outputs:
|
|
- name: artifacts
|
|
- name: manifest
|
|
run:
|
|
path: sh
|
|
args:
|
|
- -c
|
|
- |
|
|
#!/bin/sh
|
|
set -eu
|
|
apk add --no-cache jq git dotnet8-sdk python3 py3-pip
|
|
pip3 install --break-system-packages jprm
|
|
cp manifest/manifest.json source/
|
|
(
|
|
cd source
|
|
./release.sh build
|
|
)
|
|
cp source/artifacts/*.zip artifacts/
|
|
cd source
|
|
VERSION="$(./release.sh version)"
|
|
cd ..
|
|
printf '%s' "$VERSION" > artifacts/version
|
|
cp source/manifest.json manifest/
|
|
(
|
|
cd manifest
|
|
git add .
|
|
git config user.name 'Concourse CI/CD'
|
|
git config user.email 'concourse@redxef.at'
|
|
git commit -m "ci: update manifest for version ${VERSION}."
|
|
)
|
|
jq --arg tag "v$VERSION" -r '.[] | select(.tag_name == $tag) | .id' < releases/body > artifacts/release_id
|
|
ls artifacts
|
|
- load_var: release_id
|
|
file: artifacts/release_id
|
|
reveal: true
|
|
- load_var: version
|
|
file: artifacts/version
|
|
reveal: true
|
|
- put: artifact
|
|
inputs:
|
|
- artifacts
|
|
params:
|
|
method: post
|
|
- put: manifest
|
|
params:
|
|
repository: manifest
|