mirror of
https://github.com/nextcloud/nextcloudpi.git
synced 2026-01-10 15:12:01 -03:30
388 lines
16 KiB
YAML
388 lines
16 KiB
YAML
name: 'Release'
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
git_ref:
|
|
description: git ref, branch or tag to test against
|
|
required: false
|
|
type: string
|
|
sd-images:
|
|
type: boolean
|
|
description: 'Build/test SD images?'
|
|
required: false
|
|
default: true
|
|
lxd:
|
|
type: boolean
|
|
description: 'Build/test LXD image?'
|
|
required: false
|
|
default: true
|
|
installer:
|
|
type: boolean
|
|
description: 'Run curl-installer/upgrade tests?'
|
|
required: false
|
|
default: true
|
|
release:
|
|
type: boolean
|
|
description: 'Release images to GH'
|
|
required: false
|
|
default: false
|
|
test_image_url:
|
|
type: string
|
|
description: 'URL for test image to test instead of actual armbian builds'
|
|
required: false
|
|
default: ''
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
branches:
|
|
- master
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
lxd-x86:
|
|
if: ${{ inputs.lxd || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-lxd.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
arch: 'x86'
|
|
secrets: inherit
|
|
lxd-arm64:
|
|
if: ${{ inputs.lxd || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-lxd.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
arch: 'arm64'
|
|
secrets: inherit
|
|
|
|
test-curl-installer:
|
|
if: ${{ inputs.installer || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/vm-tests.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
secrets: inherit
|
|
|
|
raspberrypi:
|
|
if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: rpi4b
|
|
board_name: RaspberryPi 4+
|
|
secrets: inherit
|
|
|
|
armbian-test-image:
|
|
if: ${{ inputs.test_image_url != '' }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: testimage
|
|
board_name: TestImage
|
|
test_image_url: "${{ inputs.test_image_url }}"
|
|
secrets: inherit
|
|
|
|
# TODO: Fix 32bit armbian images
|
|
odroidxu4:
|
|
# if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
if: ${{ false }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: odroidxu4
|
|
board_name: OdroidHC2
|
|
secrets: inherit
|
|
rockpro64:
|
|
if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: rockpro64
|
|
board_name: RockPro64
|
|
secrets: inherit
|
|
rock64:
|
|
if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: rock64
|
|
board_name: Rock64
|
|
secrets: inherit
|
|
# TODO: Fix 32bit armbian images
|
|
bananapi:
|
|
# if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
if: ${{ false }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: bananapi
|
|
board_name: BananaPi
|
|
secrets: inherit
|
|
odroidhc4:
|
|
if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: odroidhc4
|
|
board_name: OdroidHC4
|
|
secrets: inherit
|
|
odroidc4:
|
|
if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: odroidc4
|
|
board_name: OdroidC4
|
|
secrets: inherit
|
|
odroidc2:
|
|
if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: odroidc2
|
|
board_name: OdroidC2
|
|
secrets: inherit
|
|
orangepi5:
|
|
if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: orangepi5
|
|
board_name: OrangePi5
|
|
secrets: inherit
|
|
orangepi5plus:
|
|
if: ${{ inputs.sd-images || ( github.event_name != 'workflow_dispatch' && !startsWith(github.ref_name, 'docker-') ) }}
|
|
uses: ./.github/workflows/build-sd-images.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
board_id: orangepi5-plus
|
|
board_name: OrangePi5Plus
|
|
secrets: inherit
|
|
|
|
lxd-x86-release:
|
|
needs:
|
|
- github-release
|
|
- lxd-x86
|
|
if: ${{ inputs.lxd || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.lxd-x86.outputs.lxd_artifact_name }}"
|
|
artifact_file: "${{ needs.lxd-x86.outputs.lxd_artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
|
|
lxd-arm64-release:
|
|
needs:
|
|
- github-release
|
|
- lxd-arm64
|
|
if: ${{ inputs.lxd || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.lxd-arm64.outputs.lxd_artifact_name }}"
|
|
artifact_file: "${{ needs.lxd-arm64.outputs.lxd_artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
|
|
lxc-x86-release:
|
|
needs:
|
|
- github-release
|
|
- lxd-x86
|
|
if: ${{ inputs.lxd || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.lxd-x86.outputs.lxc_artifact_name }}"
|
|
artifact_file: "${{ needs.lxd-x86.outputs.lxc_artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
|
|
lxc-arm64-release:
|
|
needs:
|
|
- github-release
|
|
- lxd-arm64
|
|
if: ${{ inputs.lxd || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.lxd-arm64.outputs.lxc_artifact_name }}"
|
|
artifact_file: "${{ needs.lxd-arm64.outputs.lxc_artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
|
|
raspberrypi-release:
|
|
needs:
|
|
- raspberrypi
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.raspberrypi.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.raspberrypi.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
|
|
odroidxu4-release:
|
|
needs:
|
|
- odroidxu4
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.odroidxu4.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.odroidxu4.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
rockpro64-release:
|
|
needs:
|
|
- rockpro64
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.rockpro64.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.rockpro64.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
rock64-release:
|
|
needs:
|
|
- rock64
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.rock64.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.rock64.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
bananapi-release:
|
|
needs:
|
|
- bananapi
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.bananapi.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.bananapi.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
odroidhc4-release:
|
|
needs:
|
|
- odroidhc4
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.odroidhc4.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.odroidhc4.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
odroidc4-release:
|
|
needs:
|
|
- odroidc4
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.odroidc4.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.odroidc4.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
odroidc2-release:
|
|
needs:
|
|
- odroidc2
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.odroidc2.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.odroidc2.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
orangepi5-release:
|
|
needs:
|
|
- orangepi5
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.orangepi5.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.orangepi5.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
orangepi5plus-release:
|
|
needs:
|
|
- orangepi5plus
|
|
- github-release
|
|
if: ${{ inputs.sd-images || github.event_name != 'workflow_dispatch' }}
|
|
uses: ./.github/workflows/publish-image.yml
|
|
with:
|
|
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
artifact_id: "${{ needs.orangepi5plus.outputs.artifact_name }}"
|
|
artifact_file: "${{ needs.orangepi5plus.outputs.artifact_file }}"
|
|
dry_run: ${{ (!inputs.release && github.event_name == 'workflow_dispatch') || github.ref_type != 'tag' || !(github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
secrets: inherit
|
|
|
|
github-release:
|
|
if: ${{ github.event_name == 'workflow_dispatch' || !startsWith(github.ref_name, 'docker-') }}
|
|
needs:
|
|
- test-curl-installer
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
UID: "${{ github.run_id }}-rpi"
|
|
VERSION: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}"
|
|
- name: Debug output
|
|
run: |
|
|
echo "do release?: ${{ inputs.release }}"
|
|
echo "event name: ${{ github.event_name }}"
|
|
echo "ref type: ${{ github.ref_type }}"
|
|
echo "protected?: ${{ github.ref_protected }}"
|
|
- name: Create Draft
|
|
if: ${{ (inputs.release || github.event_name != 'workflow_dispatch') && github.ref_type == 'tag' && (github.ref_protected || startsWith(github.ref, 'refs/tags/v')) }}
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
|
|
NC_VERSION="$(jq -r '.nextcloud_version' < etc/ncp.cfg)"
|
|
PHP_VERSION="$(jq -r '.php_version' < etc/ncp.cfg)"
|
|
DEBIAN_VERSION="$(jq -r '.release' < etc/ncp.cfg)"
|
|
ARMBIAN_VERSIOn="$(cat build/armbian/armbian_version)"
|
|
|
|
subject="$(git tag -n10 --format="%(contents:subject)" "${{ env.VERSION }}")"
|
|
body="$(git tag -n30 --format="%(contents:body)" "${{ env.VERSION }}")"
|
|
separator="
|
|
|
|
---
|
|
|
|
"
|
|
|
|
gh release create --draft -F - "${{ env.VERSION }}" <<EOF
|
|
${subject:-No message found}
|
|
|
|
### Included Software
|
|
Nextcloud ${NC_VERSION} (can be automatically updated to latest minor version)
|
|
PHP ${PHP_VERSION}
|
|
Debian ${DEBIAN_VERSION}
|
|
Armbian ${ARMBIAN_VERSION}
|
|
|
|
${body:+${body}${separator}}
|
|
|
|
[Changelog](https://github.com/nextcloud/nextcloudpi/blob/${{ env.VERSION }}/changelog.md)
|
|
EOF
|