Skip to content

Commit

Permalink
Merge pull request #1707 from atsign-foundation/cpswan-aa-packaging
Browse files Browse the repository at this point in the history
ci: Fix packaging for native builds
  • Loading branch information
cpswan authored Jan 29, 2025
2 parents 188e7e3 + e95d5b8 commit 1b81896
Showing 1 changed file with 40 additions and 127 deletions.
167 changes: 40 additions & 127 deletions .github/workflows/c_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,44 +55,34 @@ jobs:
matrix:
include:
- os: macos-13
output-name: sshnp-macos-x64
output-name: sshnpd-macos-x64
ext: ""
bundle: "shell"
compiler: "clang"
flags: "-Wno-error -pthread"
- os: macos-14
output-name: sshnp-macos-arm64
output-name: sshnpd-macos-arm64
ext: ""
bundle: "shell"
compiler: "clang"
flags: "-Wno-error -pthread"
# - os: windows-latest
# output-name: sshnp-windows-x64
# ext: '.exe'
# bundle: 'windows'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: c_release-${{github.run_number}}
# compile binaries
- run: |
- name: Compile binaries
run: |
cmake -B build -S . -DBUILD_SHARED_LIBS=off -DCMAKE_C_COMPILER=${{ matrix.compiler }} -DCMAKE_C_FLAGS="${{matrix.flags}}"
cmake --build build
mkdir tarball
mv build/sshnpd .
mv build/at_activate .
# zip the build
- if: ${{ matrix.os == 'macOS-13' || matrix.os == 'macos-14'}}
name: Zip the build
run:
ditto -c -k --keepParent sshnpd tarball/${{ matrix.output-name }}.zip
- if: ${{ matrix.os == 'ubuntu-latest' }}
run: tar -cvzf tarball/${{ matrix.output-name }}.tgz sshnpd
- if: ${{ matrix.os == 'windows-latest' }}
run:
Compress-Archive -Path sshnpd -Destination tarball/${{
matrix.output-name }}.zip
# upload the build
- uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
zip tarball/${{ matrix.output-name }}.zip sshnpd at_activate
- name: Upload archives
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name:
${{ matrix.output-name }}_${{ matrix.compiler
Expand All @@ -101,135 +91,57 @@ jobs:
path: ./packages/c/sshnpd/tarball
if-no-files-found: error

docker_build_amd64:
docker_builds:
needs: [verify_tags]
runs-on: ubuntu-latest
if: ${{ ! inputs.native_build_only }}
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ./packages/c
strategy:
matrix:
include:
- platform: linux/amd64
- os: ubuntu-latest
platform: linux/amd64
output-name: sshnpd-linux-x64
## 20240806: Clang and CMake that we use aren't packaged for
## armv7 or riscv64 (also no Debian 10 for RISC-V)
# - platform: linux/arm/v7
# output-name: sshnpd-linux-arm
# - platform: linux/riscv64
# output-name: sshnpd-linux-riscv64
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: c_release-${{github.run_number}}
- uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0
- uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
- run: |
docker buildx build -t atsigncompany/sshnpdc -f sshnpd/tools/Dockerfile.package \
--platform ${{ matrix.platform }} -o type=tar,dest=bins.tar .
mkdir tarballs
tar -xvf bins.tar -C tarballs
- uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name:
${{
matrix.output-name }}-${{ github.ref_name }}-${{ github.run_number
}}-${{ github.run_attempt }}
path: ./packages/c/tarballs/${{ matrix.output-name }}.tgz

docker_build_arm64:
needs: [verify_tags]
runs-on: ubuntu-24.04-arm
if: ${{ ! inputs.native_build_only }}
defaults:
run:
working-directory: ./packages/c
strategy:
matrix:
include:
- platform: linux/arm64
output-name: sshnpd-linux-arm64
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: c_release-${{github.run_number}}
- uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0
- uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
- run: |
docker buildx build -t atsigncompany/sshnpdc -f sshnpd/tools/Dockerfile.package \
--platform ${{ matrix.platform }} -o type=tar,dest=bins.tar .
mkdir tarballs
tar -xvf bins.tar -C tarballs
- uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name:
${{
matrix.output-name }}-${{ github.ref_name }}-${{ github.run_number
}}-${{ github.run_attempt }}
path: ./packages/c/tarballs/${{ matrix.output-name }}.tgz

musl_build_amd64:
needs: [verify_tags]
runs-on: ubuntu-latest
if: ${{ ! inputs.native_build_only }}
defaults:
run:
working-directory: ./packages/c
strategy:
fail-fast: false
matrix:
include:
- platform: linux/amd64
dockerfile: Dockerfile.package
- os: ubuntu-latest
platform: linux/amd64
output-name: sshnpd-linux-x64-musl
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: c_release-${{github.run_number}}
- uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0
- uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
- run: |
docker buildx build -t atsigncompany/sshnpdcmusl -f sshnpd/tools/Dockerfile.musl \
--platform ${{ matrix.platform }} -o type=tar,dest=bins.tar .
mkdir tarballs
tar -xvf bins.tar -C tarballs
- uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name:
${{
matrix.output-name }}-${{ github.ref_name }}-${{ github.run_number
}}-${{ github.run_attempt }}
path: ./packages/c/tarballs/${{ matrix.output-name }}.tgz

musl_build_arm64:
needs: [verify_tags]
runs-on: ubuntu-24.04-arm
if: ${{ ! inputs.native_build_only }}
defaults:
run:
working-directory: ./packages/c
strategy:
fail-fast: false
matrix:
include:
- platform: linux/arm/v7
output-name: sshnpd-linux-arm-musl
- platform: linux/arm64
dockerfile: Dockerfile.musl
- os: ubuntu-24.04-arm
platform: linux/arm64
output-name: sshnpd-linux-arm64
dockerfile: Dockerfile.package
- os: ubuntu-24.04-arm
platform: linux/arm64
output-name: sshnpd-linux-arm64-musl
- platform: linux/riscv64
dockerfile: Dockerfile.musl
- os: ubuntu-24.04-arm
platform: linux/arm/v7
output-name: sshnpd-linux-arm-musl
dockerfile: Dockerfile.musl
- os: ubuntu-24.04-arm
platform: linux/riscv64
output-name: sshnpd-linux-riscv64-musl
dockerfile: Dockerfile.musl
## 20240806: Clang and CMake that we use aren't packaged for
## armv7 or riscv64 (also no Debian 10 for RISC-V)
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: c_release-${{github.run_number}}
- uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0
- uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
- run: |
docker buildx build -t atsigncompany/sshnpdcmusl -f sshnpd/tools/Dockerfile.musl \
- name: Build tarballs in Docker
run: |
docker buildx build -t atsigncompany/sshnpdc \
-f sshnpd/tools/${{ matrix.dockerfile }} \
--platform ${{ matrix.platform }} -o type=tar,dest=bins.tar .
mkdir tarballs
tar -xvf bins.tar -C tarballs
- uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
- name: Upload tarballs
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name:
${{
Expand Down Expand Up @@ -257,9 +169,10 @@ jobs:
path: ./tarball/csshnpd-${{ github.ref_name }}.tar.gz

github-release:
if: startsWith(github.ref, 'refs/tags/c')
name: >-
Upload artifacts and generate checksums for provenance
needs: [native_build, docker_build_amd64, docker_build_arm64, musl_build_amd64, musl_build_arm64, source_tarball]
needs: [native_build, docker_builds, source_tarball]
runs-on: ubuntu-latest
outputs:
hashes: ${{ steps.hash.outputs.hashes }}
Expand Down

0 comments on commit 1b81896

Please sign in to comment.