Files
softwarekatalog/.github/workflows/release.yml
Ludwig Lehnert 20e9374154
Some checks failed
Release / build-release (push) Failing after 8s
fix workflow
2026-06-29 13:23:01 +00:00

91 lines
2.5 KiB
YAML

name: Release
on:
push:
branches:
- main
- master
workflow_dispatch:
permissions:
contents: write
jobs:
build-release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build dist
run: make dist
- name: Package release zip
run: |
short_sha="${GITHUB_SHA::7}"
archive="softwarekatalog-${short_sha}.zip"
echo "SHORT_SHA=${short_sha}" >> "${GITHUB_ENV}"
echo "ARCHIVE=${archive}" >> "${GITHUB_ENV}"
rm -rf package
mkdir -p package
cp LICENSE package/LICENSE
cp dist/setup.ps1 package/setup.ps1
cp -R PolicyDefinitions package/PolicyDefinitions
(cd package && zip -r "../${archive}" LICENSE setup.ps1 PolicyDefinitions)
- name: Create or update release
uses: actions/github-script@v7
env:
SHORT_SHA: ${{ env.SHORT_SHA }}
ARCHIVE: ${{ env.ARCHIVE }}
with:
script: |
const fs = require('fs');
const path = require('path');
const owner = context.repo.owner;
const repo = context.repo.repo;
const tag = process.env.SHORT_SHA;
const archive = process.env.ARCHIVE;
let release;
try {
const existing = await github.rest.repos.getReleaseByTag({ owner, repo, tag });
release = existing.data;
} catch (error) {
if (error.status !== 404) throw error;
const created = await github.rest.repos.createRelease({
owner,
repo,
tag_name: tag,
target_commitish: context.sha,
name: tag,
body: `Automated build for ${context.sha}.`,
});
release = created.data;
}
const assetName = path.basename(archive);
for (const asset of release.assets || []) {
if (asset.name === assetName) {
await github.rest.repos.deleteReleaseAsset({ owner, repo, asset_id: asset.id });
}
}
const data = fs.readFileSync(archive);
await github.rest.repos.uploadReleaseAsset({
owner,
repo,
release_id: release.id,
name: assetName,
data,
headers: {
'content-type': 'application/zip',
'content-length': data.length,
},
});