Add automatic scheduled updates for nightly release

A daily schedule for the update-nightly-release workflow was added. Now, apart from when the 'nightly' input is set to
 true, the release update will be triggered everyday at 5:20 CET. This functionality allows more up to date releases
  without manual input. Also, installer file names were updated and it now includes the daily creation timestamp which
  provides visibility on when the nightly build was generated.

  Contributes to CURA-9494
This commit is contained in:
Jelle Spijker 2023-08-20 14:08:00 +02:00
parent 7a55124e73
commit 4303695316
No known key found for this signature in database
GPG Key ID: 034D1C0527888B65
4 changed files with 111 additions and 23 deletions

View File

@ -29,6 +29,9 @@ on:
default: false default: false
required: true required: true
type: boolean type: boolean
schedule:
# Daily at 5:20 CET
- cron: '20 4 * * *'
env: env:
CURA_CONAN_VERSION: ${{ inputs.cura_conan_version }} CURA_CONAN_VERSION: ${{ inputs.cura_conan_version }}
@ -91,26 +94,41 @@ jobs:
operating_system: self-hosted operating_system: self-hosted
secrets: inherit secrets: inherit
# Run and update nightly release when the nightly input is set to true or if the schedule is triggered
update-nightly-release: update-nightly-release:
if: ${{ inputs.nightly }} if: ${{ inputs.nightly == 'true' || github.event_name == 'schedule' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [ windows-installer, linux-modern-installer, linux-legacy-installer, macos-installer, macos-arm-installer ] needs: [ windows-installer, linux-modern-installer, linux-legacy-installer, macos-installer, macos-arm-installer ]
steps: steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download the run info
uses: actions/download-artifact@v2
with:
name: macos-run-info
- name: Set the run info as environment variables
run: |
. run_info.sh
- name: Output the name file name and extension - name: Output the name file name and extension
id: filename id: filename
shell: python shell: python
run: | run: |
import os import os
import datetime
enterprise = "-Enterprise" if "${{ inputs.enterprise }}" == "true" else "" enterprise = "-Enterprise" if "${{ inputs.enterprise }}" == "true" else ""
linux_modern = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-linux-modern-X64-AppImage" linux_modern = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-linux-modern-X64"
linux_legacy = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-linux-X64-AppImage" linux_legacy = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-linux-X64"
mac_x64_dmg = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-X64-dmg" mac_x64_dmg = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-X64"
mac_x64_pkg = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-X64-pkg" mac_x64_pkg = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-X64"
mac_arm_dmg = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-ARM64-dmg" mac_arm_dmg = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-ARM64"
mac_arm_pkg = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-ARM64-pkg" mac_arm_pkg = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-ARM64"
win_msi = installer_filename = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-win64-X64-msi win_msi = installer_filename = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-win64-X64"
win_exe = installer_filename = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-win64-X64-exe" win_exe = installer_filename = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-win64-X64"
nightly_name = "UltiMaker-Cura-" + os.getenv('CURA_VERSION_FULL').split("+")[0]
nightly_creation_time = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
output_env = os.environ["GITHUB_OUTPUT"] output_env = os.environ["GITHUB_OUTPUT"]
content = "" content = ""
if os.path.exists(output_env): if os.path.exists(output_env):
@ -126,59 +144,84 @@ jobs:
f.writelines(f"MAC_ARM_PKG={mac_arm_pkg}\n") f.writelines(f"MAC_ARM_PKG={mac_arm_pkg}\n")
f.writelines(f"WIN_MSI={win_msi}\n") f.writelines(f"WIN_MSI={win_msi}\n")
f.writelines(f"WIN_EXE={win_exe}\n") f.writelines(f"WIN_EXE={win_exe}\n")
f.writelines(f"NIGHTLY_NAME={nightly_name}\n")
f.writelines(f"NIGHTLY_TIME={nightly_creation_time}\n")
- name: Download linux modern installer jobs artifacts - name: Download linux modern installer jobs artifacts
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
with: with:
name: ${{ steps.filename.outputs.LINUX_MODERN }} name: ${{ steps.filename.outputs.LINUX_MODERN }}-AppImage
path: installers path: installers
- name: Download linux legacy installer jobs artifacts - name: Download linux legacy installer jobs artifacts
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
with: with:
name: ${{ steps.filename.outputs.LINUX_LEGACY }} name: ${{ steps.filename.outputs.LINUX_LEGACY }}-AppImage
path: installers path: installers
- name: Download mac x64 dmg installer jobs artifacts - name: Download mac x64 dmg installer jobs artifacts
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
with: with:
name: ${{ steps.filename.outputs.MAC_X64_DMG }} name: ${{ steps.filename.outputs.MAC_X64_DMG }}-dmg
path: installers path: installers
- name: Download mac x64 pkg installer jobs artifacts - name: Download mac x64 pkg installer jobs artifacts
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
with: with:
name: ${{ steps.filename.outputs.MAC_X64_PKG }} name: ${{ steps.filename.outputs.MAC_X64_PKG }}-pkg
path: installers path: installers
- name: Download mac arm dmg installer jobs artifacts - name: Download mac arm dmg installer jobs artifacts
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
with: with:
name: ${{ steps.filename.outputs.MAC_ARM_DMG }} name: ${{ steps.filename.outputs.MAC_ARM_DMG }}-dmg
path: installers path: installers
- name: Download mac arm pkg installer jobs artifacts - name: Download mac arm pkg installer jobs artifacts
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
with: with:
name: ${{ steps.filename.outputs.MAC_ARM_PKG }} name: ${{ steps.filename.outputs.MAC_ARM_PKG }}-pkg
path: installers path: installers
- name: Download win msi installer jobs artifacts - name: Download win msi installer jobs artifacts
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
with: with:
name: ${{ steps.filename.outputs.WIN_MSI }} name: ${{ steps.filename.outputs.WIN_MSI }}-msi
path: installers path: installers
- name: Download win exe installer jobs artifacts - name: Download win exe installer jobs artifacts
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
with: with:
name: ${{ steps.filename.outputs.WIN_EXE }} name: ${{ steps.filename.outputs.WIN_EXE }}-exe
path: installers path: installers
- name: Rename installers to nightlies
run: |
mv installers/${{ steps.filename.outputs.LINUX_MODERN }}.AppImage installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-linux-modern-X64.AppImage
mv installers/${{ steps.filename.outputs.LINUX_LEGACY }}.AppImage installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-linux-X64.AppImage
mv installers/${{ steps.filename.outputs.MAC_X64_DMG }}.dmg installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-macos-X64.dmg
mv installers/${{ steps.filename.outputs.MAC_X64_PKG }}.pkg installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-macos-X64.pkg
mv installers/${{ steps.filename.outputs.MAC_ARM_DMG }}.dmg installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-macos-ARM64.dmg
mv installers/${{ steps.filename.outputs.MAC_ARM_PKG }}.pkg installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-macos-ARM64.pkg
mv installers/${{ steps.filename.outputs.WIN_MSI }}.msi installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-win64-X64.msi
mv installers/${{ steps.filename.outputs.WIN_EXE }}.exe installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-win64-X64.exe
- name: Update nightly release - name: Update nightly release
uses: pyTooling/Actions/releaser@main run: |
with: gh release upload nightly installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-linux-modern-X64.AppImage --clobber
tag: nightly gh release upload nightly installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-linux-X64.AppImage --clobber
rm: true gh release upload nightly installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-macos-X64.dmg --clobber
token: ${{ secrets.GITHUB_TOKEN }} gh release upload nightly installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-macos-X64.pkg --clobber
files: installers/*.* gh release upload nightly installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-macos-ARM64.dmg --clobber
gh release upload nightly installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-macos-ARM64.pkg --clobber
gh release upload nightly installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-win64-X64.msi --clobber
gh release upload nightly installers/${{ steps.filename.outputs.NIGHTLY_NAME }}-win64-X64.exe --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update nightly release description (with date)
run: |
gh release edit nightly --title "${{ steps.filename.outputs.NIGHTLY_NAME }}-alpha" --notes "Nightly release created on: ${{ steps.filename.outputs.NIGHTLY_TIME }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -252,6 +252,21 @@ jobs:
dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.AppImage dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.AppImage
retention-days: 5 retention-days: 5
- name: Write the run info
shell: python
run: |
import os
with open("run_info.sh", "w") as f:
f.writelines(f'echo "CURA_VERSION_FULL={os.environ["CURA_VERSION_FULL"]}" >> $GITHUB_ENV\n')
- name: Upload the run info
uses: actions/upload-artifact@v3
with:
name: linux-run-info
path: |
run_info.sh
retention-days: 5
notify-export: notify-export:
if: ${{ always() }} if: ${{ always() }}
needs: [ cura-installer-create ] needs: [ cura-installer-create ]

View File

@ -259,6 +259,21 @@ jobs:
dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.pkg dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.pkg
retention-days: 5 retention-days: 5
- name: Write the run info
shell: python
run: |
import os
with open("run_info.sh", "w") as f:
f.writelines(f'echo "CURA_VERSION_FULL={os.environ["CURA_VERSION_FULL"]}" >> $GITHUB_ENV\n')
- name: Upload the run info
uses: actions/upload-artifact@v3
with:
name: macos-run-info
path: |
run_info.sh
retention-days: 5
notify-export: notify-export:
if: ${{ always() }} if: ${{ always() }}

View File

@ -251,6 +251,21 @@ jobs:
dist/${{steps.filename.outputs.INSTALLER_FILENAME }}.exe dist/${{steps.filename.outputs.INSTALLER_FILENAME }}.exe
retention-days: 5 retention-days: 5
- name: Write the run info
shell: python
run: |
import os
with open("run_info.sh", "w") as f:
f.writelines(f'echo "CURA_VERSION_FULL={os.environ["CURA_VERSION_FULL"]}" >> $GITHUB_ENV\n')
- name: Upload the run info
uses: actions/upload-artifact@v3
with:
name: windows-run-info
path: |
run_info.sh
retention-days: 5
notify-export: notify-export:
if: ${{ always() }} if: ${{ always() }}
needs: [ cura-installer-create ] needs: [ cura-installer-create ]