Release #552
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
docker: | ||
type: boolean | ||
description: 'Build/test docker images?' | ||
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 and docker registry' | ||
required: false | ||
default: false | ||
push: | ||
tags: | ||
- "v*" | ||
- "docker-v*" | ||
branches: | ||
- master | ||
- docker-stable | ||
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 | ||
docker-x86: | ||
if: ${{ inputs.docker || ( github.event_name != 'workflow_dispatch' && startsWith(github.ref_name, 'docker-') ) }} | ||
uses: ./.github/workflows/build-docker.yml | ||
with: | ||
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}" | ||
arch: "x86" | ||
secrets: inherit | ||
docker-armhf: | ||
if: ${{ inputs.docker || ( github.event_name != 'workflow_dispatch' && startsWith(github.ref_name, 'docker-') ) }} | ||
uses: ./.github/workflows/build-docker.yml | ||
with: | ||
git_ref: "${{ inputs.git_ref || github.head_ref || github.ref_name }}" | ||
arch: "armhf" | ||
secrets: inherit | ||
docker-arm64: | ||
if: ${{ inputs.docker || ( github.event_name != 'workflow_dispatch' && startsWith(github.ref_name, 'docker-') ) }} | ||
uses: ./.github/workflows/build-docker.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: raspberrypi | ||
# board_name: RaspberryPi | ||
# 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 | ||
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 | ||
docker-release: | ||
needs: | ||
- docker-x86 | ||
- docker-armhf | ||
- docker-arm64 | ||
if: ${{ (inputs.release || github.event_name != 'workflow_dispatch') && github.ref_type == 'tag' && (github.ref_protected || startsWith(github.ref, 'refs/tags/docker-v')) }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Login to DockerHub | ||
uses: docker/login-action@v1 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
- name: Checkout code | ||
uses: actions/checkout@v3 | ||
- name: Create manifest and push as tag to docker hub | ||
run: | | ||
. ./build/buildlib.sh | ||
version="${version#docker-}" | ||
for arch in x86 armhf arm64 | ||
do | ||
docker pull "thecalcaholic/ncp-internal-${arch}:${{ github.run_id }}" | ||
docker tag "thecalcaholic/ncp-internal-${arch}:${{ github.run_id }}" "ownyourbits/nextcloudpi-${arch}:${version?}" | ||
docker tag "ownyourbits/nextcloudpi-${arch}:${version?}" "ownyourbits/nextcloudpi-${arch}:latest" | ||
docker push "ownyourbits/nextcloudpi-${arch}:${version?}" | ||
[[ "$version" =~ ^(docker-)?v[0-9]+'.'[0-9]+'.'[0-9]+$ ]] && docker push "ownyourbits/nextcloudpi-${arch}:latest" | ||
done | ||
docker manifest create ownyourbits/nextcloudpi:${version?} \ | ||
ownyourbits/nextcloudpi-armhf:${version?} \ | ||
ownyourbits/nextcloudpi-x86:${version?} \ | ||
ownyourbits/nextcloudpi-arm64:${version?} | ||
docker manifest push ownyourbits/nextcloudpi:${version?} | ||
- name: Create manifest and push as latest to docker hub | ||
run: | | ||
[[ "${{ github.ref }}" =~ ^'refs/tags/'(docker-)?'v'[0-9]+'.'[0-9]+'.'[0-9]+$ ]] || { | ||
echo "not tagging latest - is a pre-/beta-release" | ||
exit 0 | ||
} | ||
docker manifest create ownyourbits/nextcloudpi:latest \ | ||
ownyourbits/nextcloudpi-armhf:latest \ | ||
ownyourbits/nextcloudpi-x86:latest \ | ||
ownyourbits/nextcloudpi-arm64:latest | ||
docker manifest push ownyourbits/nextcloudpi:latest | ||
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: | | ||
subject="$(git tag -n10 --format="%(contents:subject)" "${{ env.VERSION }}")" | ||
body="$(git tag -n10 --format="%(contents:body)" "${{ env.VERSION }}")" | ||
separator=" | ||
--- | ||
" | ||
gh release create --draft -F - "${{ env.VERSION }}" <<EOF | ||
${subject:-No message found} | ||
${body:+${body}${separator}} | ||
[Changelog](https://github.com/nextcloud/nextcloudpi/blob/${{ env.VERSION }}/changelog.md) | ||
EOF |