build and publish linux package ziti-cli

This commit is contained in:
Kenneth Bingham
2023-08-10 18:03:02 -04:00
parent 18b5ae2f52
commit 244dae4f86
4 changed files with 168 additions and 4 deletions
+6 -4
View File
@@ -382,16 +382,18 @@ jobs:
with:
ziti-version: ${{ needs.publish.outputs.ZITI_VERSION }}
call-publish-linux-install-packages:
# call on release-next and main branches to publish linux packages to
# "testing" and "release" package repos in Artifactory
call-publish-linux-packages:
# always() re-enables evaluating conditionals in forks even if Windows or
# macOS builds were skipped
if: |
always()
&& needs.publish.result == 'success'
&& github.ref == 'refs/heads/main'
name: Publish Release Linux Install Packages
&& (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/release-next')
name: Publish Release Linux Packages
needs: publish
uses: ./.github/workflows/publish-linux-install-packages.yml
uses: ./.github/workflows/publish-linux-packages.yml
secrets: inherit
with:
ziti-version: ${{ needs.publish.outputs.ZITI_VERSION }}
@@ -0,0 +1,126 @@
name: Publish Linux Packages
on:
workflow_call:
inputs:
ziti-version:
description: generated by 'ziti-ci get-current-version'
type: string
required: true
# cancel older, redundant runs of same workflow on same branch
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
publish-linux-packages:
runs-on: ubuntu-latest
strategy:
matrix:
package_name:
- ziti-cli
arch:
- goreleaser: amd64
gox: amd64
deb: amd64
rpm: x86_64
- goreleaser: arm64
gox: arm64
deb: arm64
rpm: aarch64
- goreleaser: armv7
gox: arm
deb: armv7
rpm: armv7
nfpm_packager:
- rpm
- deb
# - archlinux # (pacman)
# - apk
env:
ZITI_VERSION: ${{ inputs.ziti-version || github.event.inputs.ziti-version }}
ZITI_MAINTAINER: "OpenZiti Maintainers <developers@openziti.org>"
ZITI_HOMEPAGE: "https://openziti.io"
ZITI_VENDOR: "NetFoundry"
GOARCH: ${{ matrix.arch.goreleaser }}
steps:
- name: Checkout Workspace
uses: actions/checkout@v3
- name: Download Linux Release Artifacts
uses: actions/download-artifact@v3
with:
name: linux-release-${{ github.run_id }}
path: release/
- name: Move Release Artifact for Architecture to Predictable Location for nfpm
run: |
mv -v ./release/${{ matrix.arch.gox }}/linux/ziti \
./release/ziti
- name: Build Package
id: nfpm
uses: burningalchemist/action-gh-nfpm@v1
# uses: netfoundry/action-gh-nfpm@main
with:
nfpm_version: "2.32.0"
packager: ${{ matrix.nfpm_packager }}
config: build/dist-packages/linux/nfpm-${{ matrix.package_name }}.yaml
target: release/
- name: get the package name from the output
run: echo ${{ steps.nfpm.outputs.package }}
shell: bash
- run: ls -lh release/
- name: upload package artifact to build summary page
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.package_name }}-${{ matrix.arch.goreleaser }}-${{ matrix.nfpm_packager }}
path: ./release/${{ matrix.package_name }}*.${{ matrix.nfpm_packager }}
if-no-files-found: error
- name: Configure jFrog CLI
uses: jfrog/setup-jfrog-cli@v3
env:
JF_ENV_1: ${{ secrets.ZITI_ARTIFACTORY_CLI_CONFIG_PACKAGE_UPLOAD }}
- name: Upload RPM to Artifactory testing repo
if: ${{ !github.event.release.published && matrix.nfpm_packager == 'rpm' }}
run: >
jf rt upload
./release/${{ matrix.package_name }}*.${{ matrix.nfpm_packager }}
/zitipax-openziti-rpm-stable/testing/${{ matrix.arch.rpm }}/
--recursive=false
--flat=true
- name: Upload RPM to Artifactory release repo
if: ${{ github.event.release.published && matrix.nfpm_packager == 'rpm' }}
run: >
jf rt upload
./release/${{ matrix.package_name }}*.${{ matrix.nfpm_packager }}
/zitipax-openziti-rpm-stable/release/${{ matrix.arch.rpm }}/
--recursive=false
--flat=true
- name: Upload DEB to Artifactory testing repo
if: ${{ !github.event.release.published && matrix.nfpm_packager == 'deb' }}
run: >
jf rt upload
./release/${{ matrix.package_name }}*.${{ matrix.nfpm_packager }}
/zitipax-openziti-deb-stable/pool/${{ matrix.package_name }}/testing/${{ matrix.arch.deb }}/
--deb=testing/main/${{ matrix.arch.deb }}
--recursive=false
--flat=true
- name: Upload DEB to Artifactory release repo
if: ${{ github.event.release.published && matrix.nfpm_packager == 'deb' }}
run: >
jf rt upload
./release/${{ matrix.package_name }}*.${{ matrix.nfpm_packager }}
/zitipax-openziti-deb-stable/pool/${{ matrix.package_name }}/release/${{ matrix.arch.deb }}/
--deb=release/main/${{ matrix.arch.deb }}
--recursive=false
--flat=true
+6
View File
@@ -0,0 +1,6 @@
# nfpm-configs
These are `nfpm` configuration files. `nfpm` generates Linux packages, e.g.,
RPM. These files references environment variables set in GitHub Actions workflow
`.github/workflows/publish-linux-install-packages.yml`.
@@ -0,0 +1,30 @@
# nfpm configuration file
#
# check https://nfpm.goreleaser.com/configuration for detailed usage
#
name: ziti-cli
arch: ${GOARCH}
platform: linux
version: ${ZITI_VERSION}
maintainer: ${ZITI_MAINTAINER}
description: >
The ziti-cli package provides the ziti executable binary as a command line
interface for Ziti.
vendor: ${ZITI_VENDOR}
homepage: ${ZITI_HOMEPAGE}
license: Apache-2.0
contents:
- src: ./release/ziti
dst: /opt/openziti/bin/ziti
file_info:
mode: 0755
- src: /opt/openziti/bin/ziti
dst: /usr/bin/ziti
type: symlink
# packager-neutral scripts may be overriden by packager-specific scripts
# scripts:
# preinstall: ./scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh