[GHA] Add package Build and Distribute workflow. #26
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Distribute | ||
on: | ||
pull_request: | ||
push: | ||
branches: | ||
- release | ||
- master | ||
paths: | ||
- "**" | ||
- "!debian/changelog" | ||
workflow_dispatch: | ||
concurrency: | ||
group: ${{ github.head_ref || github.ref }} | ||
jobs: | ||
build_rpm: | ||
name: 'Build RPM' | ||
uses: s3rj1k/actions-template/.github/workflows/ci-rpm-packages.yml@prebuild_script | ||
with: | ||
PROJECT_NAME: signalwire-c | ||
RUNNER: ubuntu-latest | ||
PACKAGER: 'packager Andrey Volk <[email protected]>' | ||
PLATFORM: amd64 | ||
USE_CMAKE: true | ||
CMAKE_BUILD_TYPE: 'Debug' | ||
secrets: inherit | ||
build_deb: | ||
name: 'Build DEB' | ||
uses: s3rj1k/actions-template/.github/workflows/ci-deb-packages-v2.yml@prebuild_script | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
codename: | ||
- bookworm | ||
- bullseye | ||
- buster | ||
- stretch | ||
platform: | ||
- amd64 | ||
- armhf | ||
if: !(matrix.codename == 'bookworm' && matrix.platform == armhf) | ||
with: | ||
PROJECT_NAME: signalwire-c | ||
RUNNER: ubuntu-latest | ||
BASE_IMAGE: signalwire/build-deb-action | ||
DISTRO_CODENAME: ${{ matrix.codename }} | ||
PLATFORM: ${{ matrix.platform }} | ||
USE_CMAKE: true | ||
CMAKE_BUILD_TYPE: 'Debug' | ||
PREBUILD_SCRIPT: | | ||
if [ -z "\${GENERIC_TOKEN}" ]; then | ||
echo "Error: GENERIC_TOKEN is empty or not set." | ||
exit 1 | ||
fi | ||
login="signalwire" | ||
domain="freeswitch.signalwire.com" | ||
gpg_key="/usr/share/keyrings/signalwire-freeswitch-repo.gpg" | ||
source_list="/etc/apt/sources.list.d/freeswitch.list" | ||
repo_url_amd64="https://\\\${domain}/repo/deb/debian-release" | ||
repo_url_armhf="https://\\\${domain}/repo/deb/rpi/debian-release" | ||
echo "machine \\\${domain} login \\\${login} password \${GENERIC_TOKEN}" > /root/.netrc | ||
cp -f /root/.netrc /etc/apt/auth.conf | ||
if [ "${{ matrix.platform }}" == "amd64" ]; then | ||
echo "deb [signed-by=\\\${gpg_key}] \\\${repo_url_amd64}/ ${{ matrix.codename }} main" > \\\${source_list} | ||
echo "deb-src [signed-by=\\\${gpg_key}] \\\${repo_url_amd64}/ ${{ matrix.codename }} main" >> \\\${source_list} | ||
elif [ "${{ matrix.platform }}" == "armhf" ]; then | ||
echo "deb [signed-by=\\\${gpg_key}] \\\${repo_url_armhf}/ ${{ matrix.codename }} main" > \\\${source_list} | ||
echo "deb-src [signed-by=\\\${gpg_key}] \\\${repo_url_armhf}/ ${{ matrix.codename }} main" >> \\\${source_list} | ||
else | ||
echo "Architecture is not supported: ${{ matrix.platform }}" | ||
exit 1 | ||
fi | ||
echo "cat \\\${source_list}" && cat \\\${source_list} | ||
curl --netrc -o \\\${gpg_key} \\\${repo_url_amd64}/signalwire-freeswitch-repo.gpg && \ | ||
apt-get -q update && apt-get -y install libks2 | ||
secrets: | ||
GENERIC_TOKEN: ${{ secrets.REPOTOKEN }} | ||
generate_meta_rpm: | ||
if: (github.ref_type == 'branch' && github.base_ref == '') | ||
name: 'Meta RPM' | ||
needs: [ build_rpm ] | ||
strategy: | ||
matrix: | ||
os: | ||
- rpm | ||
platform: | ||
- amd64 | ||
uses: s3rj1k/actions-template/.github/workflows/ci-libs-metadata-v2.yml@prebuild_script | ||
with: | ||
ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.platform }}-artifact | ||
OS_PLATFORM: ${{ matrix.os }}-${{ matrix.platform }} | ||
RUNNER: ubuntu-latest | ||
FILE_PATH_PREFIX: /var/www/signalwire-c-${{ github.ref_name }}-${{ matrix.os }}-${{ matrix.platform }}/${{ github.run_id }}-${{ github.run_number }} | ||
generate_meta_deb: | ||
name: 'Meta DEB' | ||
needs: [ build_deb ] | ||
strategy: | ||
matrix: | ||
os: | ||
- deb | ||
codename: | ||
- bookworm | ||
- bullseye | ||
- buster | ||
- stretch | ||
platform: | ||
- amd64 | ||
- armhf | ||
if: > | ||
(github.ref_type == 'branch' && github.base_ref == '') || | ||
!(matrix.codename == 'bookworm' && matrix.platform == armhf) | ||
uses: s3rj1k/actions-template/.github/workflows/ci-libs-metadata-v2.yml@prebuild_script | ||
with: | ||
ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.codename }}-${{ matrix.platform }}-artifact | ||
OS_PLATFORM: ${{ matrix.os }}-${{ matrix.codename }}-${{ matrix.platform }} | ||
RUNNER: ubuntu-latest | ||
FILE_PATH_PREFIX: /var/www/signalwire-c-${{ github.ref_name }}-${{ matrix.os }}-${{ matrix.platform }}/${{ github.run_id }}-${{ github.run_number }} | ||
distribute_matrix_rpm: | ||
if: (github.ref_type == 'branch' && github.base_ref == '') | ||
permissions: write-all | ||
name: 'Copy to remote RPM' | ||
needs: [ build_rpm ] | ||
strategy: | ||
matrix: | ||
os: | ||
- rpm | ||
platform: | ||
- amd64 | ||
uses: s3rj1k/actions-template/.github/workflows/cd-scp.yml@prebuild_script | ||
with: | ||
ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.platform }}-artifact | ||
TARGET_FOLDER: /var/www/signalwire-c-${{ github.ref_name }}-${{ matrix.os }}-${{ matrix.platform }}/${{ github.run_id }}-${{ github.run_number }} | ||
RUNNER: ubuntu-latest | ||
FILES: '*.tar.gz' | ||
CREATE_DESTINATION_FOLDERS: true | ||
secrets: | ||
# Explicit define secrets for better understanding but it could be just inherit | ||
PROXY_URL: ${{ secrets.PROXY_URL }} | ||
USERNAME: ${{ secrets.USERNAME }} | ||
HOSTNAME: ${{ secrets.HOSTNAME }} | ||
TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }} | ||
distribute_matrix_deb: | ||
permissions: write-all | ||
name: 'Copy to remote DEB' | ||
needs: [ build_deb ] | ||
strategy: | ||
matrix: | ||
os: | ||
- deb | ||
codename: | ||
- bookworm | ||
- bullseye | ||
- buster | ||
- stretch | ||
platform: | ||
- amd64 | ||
- armhf | ||
if: > | ||
(github.ref_type == 'branch' && github.base_ref == '') || | ||
!(matrix.codename == 'bookworm' && matrix.platform == armhf) | ||
uses: s3rj1k/actions-template/.github/workflows/cd-scp.yml@prebuild_script | ||
with: | ||
ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.codename }}-${{ matrix.platform }}-artifact | ||
TARGET_FOLDER: /var/www/signalwire-c-${{ github.ref_name }}-${{ matrix.os }}-${{ matrix.platform }}/${{ github.run_id }}-${{ github.run_number }} | ||
RUNNER: ubuntu-latest | ||
FILES: '*.tar.gz' | ||
CREATE_DESTINATION_FOLDERS: true | ||
secrets: | ||
# Explicit define secrets for better understanding but it could be just inherit | ||
PROXY_URL: ${{ secrets.PROXY_URL }} | ||
USERNAME: ${{ secrets.USERNAME }} | ||
HOSTNAME: ${{ secrets.HOSTNAME }} | ||
TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }} | ||
distribute_meta_rpm: | ||
if: (github.ref_type == 'branch' && github.base_ref == '') | ||
permissions: write-all | ||
name: 'Copy meta to remote RPM' | ||
needs: [ generate_meta_rpm ] | ||
strategy: | ||
max-parallel: 1 | ||
matrix: | ||
os: | ||
- rpm | ||
platform: | ||
- amd64 | ||
uses: s3rj1k/actions-template/.github/workflows/cd-libs-metadata.yml@prebuild_script | ||
with: | ||
ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.platform }}-meta | ||
LIB_NAME: signalwire-c | ||
SOURCE_BRANCH: ${{ github.ref_name }} | ||
TARGET_OS: ${{ matrix.os }} | ||
TARGET_PLATFORM: ${{ matrix.platform }} | ||
RUNNER: ubuntu-latest | ||
TARGET_REPO: signalwire/bamboo_gha_trigger | ||
secrets: | ||
GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }} | ||
concurrency: | ||
group: signalwire-c-${{ matrix.os }}-${{ matrix.platform }} | ||
cancel-in-progress: false | ||
distribute_meta_deb: | ||
permissions: write-all | ||
name: 'Copy meta to remote DEB' | ||
needs: [ generate_meta_deb ] | ||
strategy: | ||
max-parallel: 1 | ||
matrix: | ||
os: | ||
- deb | ||
codename: | ||
- bookworm | ||
- bullseye | ||
- buster | ||
- stretch | ||
platform: | ||
- amd64 | ||
- armhf | ||
if: > | ||
(github.ref_type == 'branch' && github.base_ref == '') || | ||
!(matrix.codename == 'bookworm' && matrix.platform == armhf) | ||
uses: s3rj1k/actions-template/.github/workflows/cd-libs-metadata.yml@prebuild_script | ||
with: | ||
ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.codename }}-${{ matrix.platform }}-meta | ||
LIB_NAME: signalwire-c | ||
SOURCE_BRANCH: ${{ github.ref_name }} | ||
TARGET_OS: ${{ matrix.os }} | ||
TARGET_PLATFORM: ${{ matrix.platform }} | ||
RUNNER: ubuntu-latest | ||
TARGET_REPO: signalwire/bamboo_gha_trigger | ||
secrets: | ||
GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }} | ||
concurrency: | ||
group: signalwire-c-${{ matrix.os }}-${{ matrix.platform }} | ||
cancel-in-progress: true | ||
distribute_hash_rpm: | ||
if: (github.ref_type == 'branch' && github.base_ref == '') | ||
permissions: write-all | ||
name: 'Copy hash to remote RPM' | ||
needs: [ distribute_meta_rpm ] | ||
uses: s3rj1k/actions-template/.github/workflows/cd-scp.yml@prebuild_script | ||
strategy: | ||
matrix: | ||
os: | ||
- rpm | ||
platform: | ||
- amd64 | ||
with: | ||
RUNNER: ubuntu-latest | ||
CREATE_DESTINATION_FOLDERS: false | ||
EXEC_COMMANDS: 'echo "${{ github.sha }}" > /var/www/signalwire-c-${{ github.ref_name }}-${{ matrix.os }}-${{ matrix.platform }}/${{ github.run_id }}-${{ github.run_number }}/hash.txt' | ||
secrets: | ||
PROXY_URL: ${{ secrets.PROXY_URL }} | ||
USERNAME: ${{ secrets.USERNAME }} | ||
HOSTNAME: ${{ secrets.HOSTNAME }} | ||
TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }} | ||
distribute_hash_deb: | ||
if: (github.ref_type == 'branch' && github.base_ref == '') | ||
permissions: write-all | ||
name: 'Copy hash to remote DEB' | ||
needs: [ distribute_meta_deb ] | ||
uses: s3rj1k/actions-template/.github/workflows/cd-scp.yml@prebuild_script | ||
strategy: | ||
matrix: | ||
os: | ||
- deb | ||
platform: | ||
- amd64 | ||
- armhf | ||
with: | ||
RUNNER: ubuntu-latest | ||
CREATE_DESTINATION_FOLDERS: false | ||
EXEC_COMMANDS: 'echo "${{ github.sha }}" > /var/www/signalwire-c-${{ github.ref_name }}-${{ matrix.os }}-${{ matrix.platform }}/${{ github.run_id }}-${{ github.run_number }}/hash.txt' | ||
secrets: | ||
PROXY_URL: ${{ secrets.PROXY_URL }} | ||
USERNAME: ${{ secrets.USERNAME }} | ||
HOSTNAME: ${{ secrets.HOSTNAME }} | ||
TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }} |