ci: add initial pipeline for releasing.
This commit is contained in:
parent
a92246befc
commit
eb7ab00ea2
1 changed files with 117 additions and 0 deletions
117
ci/pipeline.yml
Normal file
117
ci/pipeline.yml
Normal file
|
@ -0,0 +1,117 @@
|
|||
---
|
||||
resource_types:
|
||||
- name: http-resource
|
||||
type: registry-image
|
||||
source:
|
||||
repository: redxef/concourse-http-resource
|
||||
tag: edge
|
||||
|
||||
resources:
|
||||
- name: source
|
||||
type: git
|
||||
source:
|
||||
uri: https://gitea.redxef.at/redxef/jellyfin-smart-playlist
|
||||
branch: main
|
||||
fetch_tags: true
|
||||
tag_regex: 'v.*'
|
||||
- name: manifest
|
||||
type: git
|
||||
source:
|
||||
uri: ssh://git@gitea.redxef.at:8022/redxef/jellyfin-smart-playlist.git
|
||||
branch: manifest
|
||||
private_key: ((gitea.id_ed25519))
|
||||
- name: releases
|
||||
type: http-resource
|
||||
source:
|
||||
url: https://gitea.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://gitea.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
|
Loading…
Reference in a new issue