trigger: branches: include: - master - '*-dev' - '*-ci_test' tags: include: - v* name: $(Date:yyyyMMdd)$(Rev:.r) variables: system.debug: false isTag: 'false' isSnapshot: 'false' javaVersion: '21' stages: - stage: build jobs: # Linux app bundle job - template: build-job.yml parameters: name: app_bundle_linux platform: linux arch: x64 jdkDownloadUrl: https://api.adoptium.net/v3/binary/latest/$(javaVersion)/ga/linux/x64/jdk/hotspot/normal/eclipse jdkFile: $(Agent.TempDirectory)/jdk-latest-linux_x64.tar.gz javaVersion: $(javaVersion) pool: vmImage: 'ubuntu-22.04' # MacOS app bundle job - template: build-job.yml parameters: name: app_bundle_mac platform: mac arch: x64 jdkDownloadUrl: https://api.adoptium.net/v3/installer/latest/$(javaVersion)/ga/mac/x64/jdk/hotspot/normal/eclipse jdkFile: $(Agent.TempDirectory)/jdk-latest-macosx_x64.pkg javaVersion: $(javaVersion) pool: vmImage: 'macOS-12' # Windows app bundle job - template: build-job.yml parameters: name: app_bundle_windows platform: win arch: x64 wixVersion: '5.0.0' jdkDownloadUrl: https://api.adoptium.net/v3/binary/latest/$(javaVersion)/ga/windows/x64/jdk/hotspot/normal/eclipse jdkFile: $(Agent.TempDirectory)/jdk-latest-win_x64.zip javaVersion: $(javaVersion) pool: vmImage: 'windows-2022' # Finalize release - stage: deploy_site dependsOn: build condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'), not(endsWith(variables['Build.SourceBranch'], '-SNAPSHOT')), not(contains(variables['Build.SourceBranch'], '-b'))) jobs: - job: deploy_site pool: vmImage: 'ubuntu-22.04' steps: - script: | curl --output $(Agent.TempDirectory)/jdk-latest-linux_x64.tar.gz -O -J -L https://api.adoptium.net/v3/binary/latest/$(javaVersion)/ga/linux/x64/jdk/hotspot/normal/eclipse - task: JavaToolInstaller@0 inputs: versionSpec: $(javaVersion) jdkArchitectureOption: x64 jdkSourceOption: LocalDirectory jdkFile: $(Agent.TempDirectory)/jdk-latest-linux_x64.tar.gz jdkDestinationDirectory: $(Agent.ToolsDirectory)/binaries/openjdk cleanDestinationDirectory: true - task: DownloadSecureFile@1 name: gpgKeyring displayName: 'Download GPG Keyring' inputs: secureFile: 'keyring.gpg' - task: Gradle@2 env: IS_TAG: 'true' REPO_TAG_NAME: $(Build.SourceBranchName) GPG_KEY_NAME: $(gpg.keyname) GPG_PASSPHRASE: $(gpg.passphrase) GPG_KEYRING_PATH: $(gpgKeyring.secureFilePath) OSSRH_TOKEN_PASSWORD: $(ossrh.token.password) OSSRH_TOKEN_USERNAME: $(ossrh.token.username) inputs: gradleWrapperFile: 'gradlew' javaHomeOption: 'JDKVersion' jdkVersionOption: 1.$(javaVersion) jdkArchitectureOption: 'x64' publishJUnitResults: false tasks: 'expandMdTemplates' - bash: | python3 --version python3 -m pip --version python3 -m pip install --upgrade pip setuptools python3 -m pip install mkdocs python3 -m pip install mkdocs-material==9.* git clone -b sources https://github.com/binjr/binjr.github.io build/tmp/binjr-site cd build/tmp/binjr-site cp ../expanded/CHANGELOG.md docs/download/CHANGELOG.md cp ../expanded/latest_release.md docs/download/latest_release.md echo "https://binjr-bot:$GH_ACCESS_TOKEN@github.com" >> "$HOME/.git-credentials" git config credential.helper store git config user.email "binjr.bot@free.fr" git config user.name "binjr-bot" wget https://api.github.com/repos/binjr/binjr/releases/latest -O docs/repos/binjr/binjr/releases/latest git commit -am "Release $BUILD_SOURCEBRANCHNAME" git push python3 -m mkdocs gh-deploy --no-history --remote-branch master git config credential.helper cache shred -fuz "$HOME/.git-credentials" env: GH_ACCESS_TOKEN: $(gh.access.token) - stage: aur_update dependsOn: build condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'), not(endsWith(variables['Build.SourceBranch'], '-SNAPSHOT')), not(contains(variables['Build.SourceBranch'], '-b'))) jobs: # Submit update to winget packages repository - job: aur_update pool: vmImage: 'ubuntu-22.04' steps: - checkout: none - task: DownloadSecureFile@1 name: aur_ssh_key_file displayName: 'Download AUR ssh key' inputs: secureFile: 'aur_ssh_key_file' # Install an SSH key prior to a build or deployment. - task: InstallSSHKey@0 inputs: knownHostsEntry: 'aur.archlinux.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEuBKrPzbawxA/k2g6NcyV5jmqwJ2s+zpgZGZ7tpLIcN' sshPublicKey: '$(aur.ssh.public)' sshPassphrase: '$(aur.ssh.password)' sshKeySecureFile: 'aur_ssh_key_file' # Advanced addEntryToConfig: true configHostAlias: 'aur.archlinux.org' configHostname: 'aur.archlinux.org' configUser: 'aur' - bash: | git clone ssh://aur@aur.archlinux.org/binjr-bin.git cd binjr-bin export OLD_VER=$(grep -Po 'pkgver=\K[^"]*' PKGBUILD) export NEW_VER=${REPO_TAG_NAME//v} # Change version and release number sed -i "s/$OLD_VER/$NEW_VER/g" PKGBUILD sed -i "s/^pkgrel=.*$/pkgrel=1/" PKGBUILD sed -i "s/$OLD_VER/$NEW_VER/g" .SRCINFO sed -i "s/pkgrel =.*/pkgrel = 1/" .SRCINFO # Commit and push update git config user.email "binjr.bot@free.fr" git config user.name "binjr-bot" git commit -am "Release ${REPO_TAG_NAME}-1" git show git push env: REPO_TAG_NAME: $(Build.SourceBranchName) - stage: winget_update dependsOn: build condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'), not(endsWith(variables['Build.SourceBranch'], '-SNAPSHOT')), not(contains(variables['Build.SourceBranch'], '-b'))) jobs: # Submit update to winget packages repository - job: winget_update pool: vmImage: 'windows-2022' steps: - checkout: none - task: PowerShell@2 displayName: install wingetCreate inputs: targetType: inline script: | # Download and install C++ Runtime framework package. iwr https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx -OutFile vcLibsBundleFile.appx Add-AppxPackage vcLibsBundleFile.appx # Download, install, and execute update. iwr https://aka.ms/wingetcreate/latest/msixbundle -OutFile wingetcreate.appx Add-AppxPackage wingetcreate.appx - bash: | wingetcreate.exe update binjr.core-x64 --urls https://github.com/binjr/binjr/releases/download/${REPO_TAG_NAME}/binjr-${REPO_TAG_NAME//v}_windows-amd64.msi --version ${REPO_TAG_NAME//v} --token $GH_ACCESS_TOKEN --submit env: GH_ACCESS_TOKEN: $(gh.access.token) REPO_TAG_NAME: $(Build.SourceBranchName) - stage: maven_publish dependsOn: build jobs: # Publish to Maven repo - job: maven_publish pool: vmImage: 'ubuntu-22.04' steps: - script: | echo '##vso[task.setvariable variable=isTag;]true' condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/')) - script: | curl --output $(Agent.TempDirectory)/jdk-latest-linux_x64.tar.gz -O -J -L https://api.adoptium.net/v3/binary/latest/$(javaVersion)/ga/linux/x64/jdk/hotspot/normal/eclipse - task: JavaToolInstaller@0 inputs: versionSpec: $(javaVersion) jdkArchitectureOption: x64 jdkSourceOption: LocalDirectory jdkFile: $(Agent.TempDirectory)/jdk-latest-linux_x64.tar.gz jdkDestinationDirectory: $(Agent.ToolsDirectory)/binaries/openjdk cleanDestinationDirectory: true - task: DownloadSecureFile@1 name: gpgKeyring displayName: 'Download GPG Keyring' inputs: secureFile: 'keyring.gpg' - task: Gradle@2 env: IS_TAG: $(isTag) REPO_TAG_NAME: $(Build.SourceBranchName) BINJR_BUILD_NUMBER: $(Build.BuildNumber) GPG_KEY_NAME: $(gpg.package.keyname) GPG_PASSPHRASE: $(gpg.package.passphrase) GPG_KEYRING_PATH: $(gpgKeyring.secureFilePath) OSSRH_TOKEN_PASSWORD: $(ossrh.token.password) OSSRH_TOKEN_USERNAME: $(ossrh.token.username) inputs: gradleWrapperFile: 'gradlew' javaHomeOption: 'JDKVersion' jdkVersionOption: 1.$(javaVersion) jdkArchitectureOption: 'x64' publishJUnitResults: false tasks: 'publishArtifacts'