parameters: name: '' pool: '' platform: '' arch: '' wixVersion: '' jobs: - job: ${{ parameters.name }} pool: ${{ parameters.pool }} steps: - bash: | echo '##vso[task.setvariable variable=isTag;]true' condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/')) - bash: | echo '##vso[task.setvariable variable=isSnapshot;]true' condition: and(succeeded(), endsWith(variables['Build.SourceBranch'], '-SNAPSHOT')) - script: | curl --output ${{ parameters.jdkFile }} -O -J -L ${{ parameters.jdkDownloadUrl }} - task: JavaToolInstaller@0 inputs: versionSpec: ${{ parameters.javaVersion }} jdkArchitectureOption: ${{ parameters.arch }} jdkSourceOption: LocalDirectory jdkFile: ${{ parameters.jdkFile }} jdkDestinationDirectory: $(Agent.ToolsDirectory)/binaries/openjdk cleanDestinationDirectory: true - script: | mkdir "%TOOL_DIR%/WixToolSet.Heat/" nuget install WixToolSet.Heat -Version %WIX_VERSION% -OutputDirectory "%TOOL_DIR%" dotnet tool install --global wix --version %WIX_VERSION% condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) env: TOOL_DIR: $(Agent.ToolsDirectory) WIX_VERSION: ${{ parameters.wixVersion }} - task: DownloadSecureFile@1 name: gpgKeyring displayName: 'Download GPG Keyring' inputs: secureFile: 'keyring.gpg' - task: DownloadSecureFile@1 name: gpgSignKeys displayName: 'Download GPG Signing keys' inputs: secureFile: 'binjr.package.signing.keys.asc' - task: Gradle@2 condition: succeeded() env: GPG_KEY_NAME: $(gpg.keyname) GPG_PASSPHRASE: $(gpg.passphrase) GPG_KEYRING_PATH: $(gpgKeyring.secureFilePath) BINJR_BUILD_NUMBER: $(Build.BuildNumber) IS_TAG: $(isTag) REPO_TAG_NAME: $(Build.SourceBranchName) WIX_HEAT_HOME: $(Agent.ToolsDirectory)/wixtoolset.heat.${{ parameters.wixVersion }}/tools/net472/${{ parameters.arch }} inputs: options: '--stacktrace --info' gradleWrapperFile: 'gradlew' javaHomeOption: 'JDKVersion' jdkVersionOption: 1.${{ parameters.javaVersion }} jdkArchitectureOption: ${{ parameters.arch }} publishJUnitResults: false tasks: 'signPackageDistribution' - task: GithubRelease@0 condition: and(succeeded(), eq(variables['isTag'], 'true')) inputs: gitHubConnection: binjr-bot repositoryName: binjr/binjr action: edit tag: $(Build.SourceBranchName) assets: | $(System.DefaultWorkingDirectory)/build/artifacts/deb/*.deb $(System.DefaultWorkingDirectory)/build/artifacts/deb/*.deb.asc $(System.DefaultWorkingDirectory)/build/artifacts/rpm/*.rpm $(System.DefaultWorkingDirectory)/build/artifacts/rpm/*.rpm.asc $(System.DefaultWorkingDirectory)/build/artifacts/dmg/*.dmg $(System.DefaultWorkingDirectory)/build/artifacts/dmg/*.dmg.asc $(System.DefaultWorkingDirectory)/build/artifacts/pkg/*.pkg $(System.DefaultWorkingDirectory)/build/artifacts/pkg/*.pkg.asc $(System.DefaultWorkingDirectory)/build/artifacts/msi/*.msi $(System.DefaultWorkingDirectory)/build/artifacts/msi/*.msi.asc $(System.DefaultWorkingDirectory)/build/artifacts/zip/*.zip $(System.DefaultWorkingDirectory)/build/artifacts/zip/*.zip.asc $(System.DefaultWorkingDirectory)/build/artifacts/tgz/*.tar.gz $(System.DefaultWorkingDirectory)/build/artifacts/tgz/*.tar.gz.asc assetUploadMode: 'replace' releaseNotesSource: 'file' releaseNotesFile: $(System.DefaultWorkingDirectory)/UNRELEASED.md addChangeLog: false isPreRelease: $(isSnapshot) - bash: | echo "**************************************" echo "* Install dependencies" echo "**************************************" wget -qO - https://www.aptly.info/pubkey.txt | sudo apt-key add - echo -e '\ndeb http://repo.aptly.info/ squeeze main ' | sudo tee -a /etc/apt/sources.list sudo apt update sudo apt -y install aptly createrepo-c echo "**************************************" echo "* GPG setup" echo "**************************************" export GPG_TTY=$(tty) gpg -v --batch --no-tty --pinentry-mode loopback --passphrase "$(gpg.package.passphrase)" --import $(gpgSignKeys.secureFilePath) echo "Init GPG" | gpg -v --pinentry-mode loopback --passphrase "$(gpg.package.passphrase)" --batch --no-tty -u $(gpg.package.keyname) --sign --armor echo "**************************************" echo "* Generate apt repo" echo "**************************************" aptly --distribution="stable" --comment="binjr apt repository" repo create binjr aptly repo add binjr $(System.DefaultWorkingDirectory)/build/artifacts/deb/binjr-*_linux-amd64.deb aptly -gpg-key="$(gpg.package.keyname)" publish repo binjr echo "**************************************" echo "* Signing rpm" echo "**************************************" echo "%_gpg_name $(gpg.package.keyname)" >> ~/.rpmmacros rpm --addsign -v build/artifacts/rpm/binjr-*_linux-amd64.rpm echo "**************************************" echo "* Cloning repos.binjr.eu" echo "**************************************" git clone https://github.com/binjr/repos.binjr.eu.git build/tmp/repos.binjr.eu cd build/tmp/repos.binjr.eu echo "https://binjr-bot:$(gh.access.token)@github.com" >> ~/.git-credentials git config credential.helper store git config user.email "binjr.bot@free.fr" git config user.name "binjr-bot" rm -rf apt/dists rm -rf apt/pool cp -r ~/.aptly/public/dists apt/dists cp -r ~/.aptly/public/pool apt/pool rm -rf rpm/stable mkdir rpm/stable cp $(System.DefaultWorkingDirectory)/build/artifacts/rpm/binjr-*_linux-amd64.rpm rpm/stable echo "**************************************" echo "* Generate rpm repo" echo "**************************************" createrepo_c -v rpm/stable gpg -v --batch --no-tty --pinentry-mode loopback --passphrase "$(gpg.package.passphrase)" -u $(gpg.package.keyname) --detach-sign --armor rpm/stable/repodata/repomd.xml cp $(System.DefaultWorkingDirectory)/distribution/bundlers/linux_rpm/binjr.repo rpm/binjr.repo echo "**************************************" echo "* Upload to repos.binjr.eu" echo "**************************************" git add . git commit --amend -am "Release $BUILD_SOURCEBRANCHNAME" git push -f git config credential.helper cache shred -fuz ~/.git-credentials condition: and(succeeded(), eq(variables['isTag'], 'true'), ne(variables['isSnapshot'], 'true'), not(contains(variables['Build.SourceBranch'], '-b')), eq(variables['Agent.OS'], 'Linux'))