mirror of
https://github.com/openziti/ziti.git
synced 2026-10-11 15:10:59 +00:00
Merge pull request #1244 from openziti/build-linux-packages
Build and publish linux package ziti-cli
This commit is contained in:
@@ -381,3 +381,19 @@ jobs:
|
||||
secrets: inherit
|
||||
with:
|
||||
ziti-version: ${{ needs.publish.outputs.ZITI_VERSION }}
|
||||
|
||||
# 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' || github.ref == 'refs/heads/release-next')
|
||||
name: Publish Linux Packages
|
||||
needs: publish
|
||||
uses: ./.github/workflows/publish-linux-packages.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
ziti-version: ${{ needs.publish.outputs.ZITI_VERSION }}
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
name: Publish Linux Packages
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
ziti-version:
|
||||
description: generated by 'ziti-ci get-current-version'
|
||||
type: string
|
||||
required: 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
|
||||
@@ -5,4 +5,4 @@ Please refer to [the local development README](./doc/002-local-dev.md) for build
|
||||
|
||||
## Crossbuilds
|
||||
|
||||
When you push to your repo fork then GitHub Actions will automatically crossbuild for several OSs and CPU architectures. You'll then be able to download the built artifacts from the GitHub UI. The easiest way to crossbuild the Linux exectuables locally is to build and run the crossbuild container. Please refer to [the crossbuild container README](../Dockerfile.linux-build.README) for those steps. For hints on crossbuilding for MacOS and Windows see [the main GitHub Actions workflow](../.github/workflows/main.yml) which defines the steps that are run when you push to GitHub.
|
||||
When you push to your repo fork then GitHub Actions will automatically crossbuild for several OSs and CPU architectures. You'll then be able to download the built artifacts from the GitHub UI. The easiest way to crossbuild the Linux exectuables locally is to build and run the crossbuild container. Please refer to [the crossbuild container README](./docker-images/cross-build/README.md) for those steps. For hints on crossbuilding for MacOS and Windows see [the main GitHub Actions workflow](../.github/workflows/main.yml) which defines the steps that are run when you push to GitHub.
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
# nfpm-configs
|
||||
|
||||
These are `nfpm` configuration files. `nfpm` generates Linux packages, e.g.,
|
||||
RPM. These files reference 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
|
||||
@@ -12,9 +12,9 @@ This article supports local development by providing a local containerized metho
|
||||
You only need to build the container image once unless you change the Dockerfile or `./linux-build.sh` (the container's entrypoint).
|
||||
|
||||
```bash
|
||||
# build a container image named "zitibuilder" with the same version of Go that's declared in go.mod
|
||||
# build a container image named "ziti-go-builder" with the same version of Go that's declared in go.mod
|
||||
docker buildx build \
|
||||
--tag=zitibuilder \
|
||||
--tag=ziti-go-builder \
|
||||
--build-arg uid=$UID \
|
||||
--build-arg gid=$GID \
|
||||
--build-arg golang_version=$(grep -Po '^go\s+\K\d+\.\d+(\.\d+)?$' go.mod) \
|
||||
@@ -34,16 +34,16 @@ Executing the following `docker run` command will:
|
||||
# build for all three architectures: amd64 arm arm64
|
||||
docker run \
|
||||
--rm \
|
||||
--name=zitibuilder \
|
||||
--name=ziti-go-builder \
|
||||
--volume=$PWD:/mnt \
|
||||
zitibuilder
|
||||
ziti-go-builder
|
||||
|
||||
# build only amd64
|
||||
docker run \
|
||||
--rm \
|
||||
--name=zitibuilder \
|
||||
--name=ziti-go-builder \
|
||||
--volume=$PWD:/mnt \
|
||||
zitibuilder \
|
||||
ziti-go-builder \
|
||||
amd64
|
||||
```
|
||||
|
||||
@@ -53,7 +53,7 @@ You will find the built artifacts in `./release`.
|
||||
|
||||
```bash
|
||||
❯ docker buildx build \
|
||||
--tag=zitibuilder \
|
||||
--tag=ziti-go-builder \
|
||||
--build-arg uid=$UID \
|
||||
--build-arg gid=$GID \
|
||||
--build-arg golang_version="$(/bin/grep -Po '^go\s+\K\d+\.\d+(\.\d+)?$' go.mod)" \
|
||||
@@ -89,9 +89,9 @@ You will find the built artifacts in `./release`.
|
||||
|
||||
❯ docker run \
|
||||
--rm \
|
||||
--name=zitibuilder \
|
||||
--name=ziti-go-builder \
|
||||
--volume=$PWD:/mnt \
|
||||
zitibuilder
|
||||
ziti-go-builder
|
||||
Number of parallel builds: 4
|
||||
|
||||
--> linux/arm: github.com/openziti/ziti/ziti
|
||||
|
||||
Reference in New Issue
Block a user