Skip to content

Publish Release packages #43

Publish Release packages

Publish Release packages #43

name: Publish Release packages
on:
workflow_dispatch:
inputs:
pkgRepo:
description: "Source repository to pull packages from"
type: string
default: "packages.nginx.org"
pkgVersion:
description: 'Agent version'
type: string
default: ""
uploadAzure:
description: 'Publish packages Azure storage'
type: boolean
default: false
uploadGithub:
description: 'Publish packages to GitHub release'
type: boolean
default: false
defaults:
run:
shell: bash
permissions:
contents: write
jobs:
vars:
name: Set workflow variables
runs-on: ubuntu-22.04
outputs:
github_release: ${{steps.vars.outputs.github_release }}
upload_azure: ${{steps.vars.outputs.upload_azure }}
steps:
- name: Checkout Repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ inputs.releaseBranch }}
- name: Set variables
id: vars
run: |
echo "github_release=${{ inputs.uploadGithub }}" >> $GITHUB_OUTPUT
echo "upload_azure=${{ inputs.uploadAzure }}" >> $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
upload-release-assets:
name: Upload assets
runs-on: ubuntu-22.04
needs: [vars]
steps:
- name: Checkout Repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ inputs.releaseBranch }}
- name: Download Packages
run:
|
echo "Checking Packages in ${{inputs.pkgRepo}}/nginx-agent"
echo "${{secrets.PUBTEST_CERT}}" > pubtest.crt
echo "${{secrets.PUBTEST_KEY}}" > pubtest.key
DL=1 PKG_REPO=${{inputs.pkgRepo}} \
CERT=pubtest.crt KEY=pubtest.key \
scripts/packages/package-check.sh ${{inputs.pkgVersion}}
- name: GitHub Upload
if: ${{ needs.vars.outputs.github_release == 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# clobber overwrites existing assets of the same name
run: |
gh release list
gh release upload --clobber v${{ inputs.pkgVersion }} \
$(find ${{inputs.pkgRepo}}/nginx-agent | grep -e "nginx-agent[_-]${{inputs.pkgVersion}}")
- name: Azure Login
if: ${{ inputs.uploadAzure == true }}
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Azure Upload
if: ${{ inputs.uploadAzure == true }}
uses: azure/CLI@9f7ce6f37c31b777ec6c6b6d1dfe7db79f497956 # v2.2.0
with:
inlineScript: |
echo "Uploading tarball to Azure... nginx-agent/release-${{ inputs.pkgVersion }}/nginx-agent.tar.gz"
az storage blob upload --auth-mode=login -f "${{ inputs.pkgRepo }}/nginx-agent/nginx-agent.tar.gz" \
-c ${{ secrets.AZURE_CONTAINER_NAME }} \
--account-name ${{ secrets.AZURE_ACCOUNT_NAME }} --overwrite -n nginx-agent/release-${{ inputs.pkgVersion }}/nginx-agent.tar.gz
for i in $(find ${{ inputs.pkgRepo }}/nginx-agent | grep -e "nginx-agent[_-]${{ inputs.pkgVersion }}"); do
dest="nginx-agent/release-${{ inputs.pkgVersion }}/${i##*/}"
echo "Uploading ${i} to ${dest}"
az storage blob upload --auth-mode=login -f "$i" -c ${{ secrets.AZURE_CONTAINER_NAME }} \
--account-name ${{ secrets.AZURE_ACCOUNT_NAME }} --overwrite -n ${dest}
done
- name: Azure Logout
if: ${{ inputs.uploadAzure == true }}
run: |
az logout || exit 0