Files
2026-07-03 15:56:07 +08:00

160 lines
7.3 KiB
YAML

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'))