Skip to content

Commit

Permalink
Add workflow for apt-get release
Browse files Browse the repository at this point in the history
This adds support for releasing to Ubuntu repositories hosted
at http://packages.microsoft.com/ (hosting location for Microsoft's
official apt/yum repos). This allows users to install via apt-get on
Hirsute/Bionic. Details to configure appropriate repos can be found
here:

https://docs.microsoft.com/en-us/windows-server/administration/Linux-Package-Repository-for-Microsoft-Software).
  • Loading branch information
dscho authored and vdye committed Jul 19, 2023
1 parent d20121c commit af01bfd
Showing 1 changed file with 92 additions and 0 deletions.
92 changes: 92 additions & 0 deletions .github/workflows/release-apt-get.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: "release-apt-get"
on:
release:
types: [released]

workflow_dispatch:
inputs:
release:
description: 'Release Id'
required: true
default: 'latest'

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}

- name: "Download Repo Client"
env:
AZ_SUB: ${{ secrets.AZURE_SUBSCRIPTION }}
run: |
az storage blob download --subscription "$AZ_SUB" --account-name esrpsigningstorage -c signing-resources -n azure-repoapi-client_2.0.1_amd64.deb -f repoclient.deb --auth-mode login
- name: "Install Repo Client"
run: |
sudo apt-get install python3-adal --yes
sudo dpkg -i repoclient.deb
rm repoclient.deb
- name: "Configure Repo Client"
uses: actions/github-script@v6
env:
AZURE_AAD_ID: ${{ secrets.AZURE_AAD_ID }}
AAD_CLIENT_SECRET: ${{ secrets.AAD_CLIENT_SECRET }}
with:
script: |
for (const key of ['AZURE_AAD_ID', 'AAD_CLIENT_SECRET']) {
if (!process.env[key]) throw new Error(`Required env var ${key} is missing!`)
}
const config = {
AADResource: 'https://microsoft.onmicrosoft.com/945999e9-da09-4b5b-878f-b66c414602c0',
AADTenant: '72f988bf-86f1-41af-91ab-2d7cd011db47',
AADAuthorityUrl: 'https://login.microsoftonline.com',
server: 'azure-apt-cat.cloudapp.net',
port: '443',
AADClientId: process.env.AZURE_AAD_ID,
AADClientSecret: process.env.AAD_CLIENT_SECRET,
repositoryId: ''
}
const fs = require('fs')
fs.writeFileSync('config.json', JSON.stringify(config, null, 2))
- name: "Get Release Asset"
id: get-asset
env:
RELEASE: ${{ github.event.inputs.release }}
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const { data } = await github.rest.repos.getRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: process.env.RELEASE || 'latest'
})
const assets = data.assets.filter(asset => asset.name.endsWith('.deb'))
if (assets.length !== 1) {
throw new Error(`Unexpected number of .deb assets: ${assets.length}`)
}
const fs = require('fs')
const buffer = await github.rest.repos.getReleaseAsset({
headers: {
accept: 'application/octet-stream'
},
owner: context.repo.owner,
repo: context.repo.repo,
asset_id: assets[0].id
})
console.log(buffer)
fs.writeFileSync(assets[0].name, Buffer.from(buffer.data))
core.setOutput('name', assets[0].name)
- name: "Publish to apt feed"
env:
RELEASE: ${{ github.event.inputs.release }}
run: |
repoclient -v v3 -c config.json package add --check --wait 300 ${{steps.get-asset.outputs.name}} -r ${{ secrets.HIRSUTE_REPO_ID }}

0 comments on commit af01bfd

Please sign in to comment.