Skip to content

Commit

Permalink
update actions
Browse files Browse the repository at this point in the history
  • Loading branch information
ksentak committed Aug 22, 2024
1 parent 74dc534 commit 3517d72
Showing 1 changed file with 55 additions and 146 deletions.
201 changes: 55 additions & 146 deletions .github/workflows/release-github.yml
Original file line number Diff line number Diff line change
@@ -1,39 +1,29 @@
name: Release to GitHub and NPM
name: Build & Compile CPP SDK
on:
workflow_dispatch:
push:
branches:
- 'main'
- 'next'
- 'next-major'
- 'proposed'
pull_request:
types: [opened, synchronize]
branches:
- 'next'
- 'proposed'

env:
HUSKY: 0

jobs:
release:
name: Release
build-and-compile:
name: Build & Compile CPP SDK
runs-on: ubuntu-22.04

steps:
# Checkout/install project
- name: Checkout
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
repo-token: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }}
persist-credentials: false

# Install Node.js
- name: Setup Node.js
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
node-version: '20'

- name: Install node modules
run: npm ci

# Install C++ dependencies
- name: Install C++ dependencies
run: |
sudo apt-get update
Expand Down Expand Up @@ -65,158 +55,77 @@ jobs:
sudo \
ninja-build \
dpkg
- name: Add toolchain for GCC 9
run: add-apt-repository ppa:ubuntu-toolchain-r/test && apt-get update

# Install jsonref
- name: Install jsonref
run: pip3 install jsonref

- name: Set up NPM token
env:
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }} # <-- allow npm publish for each workspace
run: 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc'

- name: Install dependencies
run: npm ci

# Set NPM_DIST_TAGS and DOCS_TAG if applicable based on branch
- name: Set main tags
if: github.ref_name == 'main' && github.event_name != 'pull_request'
run: |
echo "NPM_DIST_TAG=latest" >> $GITHUB_ENV
echo "DOCS_TAG=latest" >> $GITHUB_ENV
- name: Set next tags
if: github.ref_name == 'next' && github.event_name != 'pull_request'
run: |
echo "NPM_DIST_TAG=next" >> $GITHUB_ENV
echo "DOCS_TAG=next" >> $GITHUB_ENV
- name: Set next-major tags
if: github.ref_name == 'next-major' && github.event_name != 'pull_request'
run: |
echo "NPM_DIST_TAG=next-major" >> $GITHUB_ENV
echo "DOCS_TAG=next-major" >> $GITHUB_ENV
- name: Set feature branch tags
if: github.ref_name != 'main' && github.ref_name != 'next' && github.ref_name != 'next-major' && github.event_name != 'pull_request'
- name: Install cross compilation tools
run: |
echo "NPM_DIST_TAG=test" >> $GITHUB_ENV
echo "FEATURE_BRANCH=${{ github.ref_name }}" >> $GITHUB_ENV
- name: Set PR tags
if: github.ref_name != 'main' && github.ref_name != 'next' && github.ref_name != 'next-major' && github.event_name == 'pull_request'
run: |
echo "NPM_DIST_TAG=test" >> $GITHUB_ENV
echo "DOCS_TAG=pr-$(node ./src/js/version.mjs branch-to-prerelease ${{ github.head_ref }})" >> $GITHUB_ENV
echo "FEATURE_BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV
sudo apt-get install -y \
gcc-9 \
g++-9 \
gcc-9-arm-linux-gnueabihf \
g++-9-arm-linux-gnueabihf \
libc6-armhf-cross \
libc6-dev-armhf-cross
- name: Set up env variables for cross-compilation
run: |
echo "CC=arm-linux-gnueabihf-gcc-9" >> $GITHUB_ENV
echo "CXX=arm-linux-gnueabihf-g++-9" >> $GITHUB_ENV
echo "CFLAGS='-O2 -march=armv7-a'" >> $GITHUB_ENV
echo "CXXFLAGS='-O2 -march=armv7-a'" >> $GITHUB_ENV
echo "LDFLAGS='-L/usr/arm-linux-gnueabihf/lib'" >> $GITHUB_ENV
echo "SYSROOT=/usr/arm-linux-gnueabihf" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=$SYSROOT/lib/pkgconfig" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=$SYSROOT/lib" >> $GITHUB_
- name: Install zlib from source
run: |
wget https://zlib.net/zlib-1.3.1.tar.gz
tar -xzf zlib-1.3.1.tar.gz
cd zlib-1.3.1
CFLAGS="-O2 -pipe" CC=${CC} ./configure --prefix=${SYSROOT}
make
sudo make install
- name: Set file permissions
run: |
chmod -R 755 ./
chown -R $(id -u):$(id -g) ./
# Perform real (When not a PR) or dry-run (When PR) semantic-release
- name: Release mono-artifact to GitHub
if: (github.ref_name != 'main' && github.event_name != 'pull_request') || github.event_name == 'workflow_dispatch'
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }} # <-- Allows semantic-release-bot to push changes to protected branches
DEBUG: semantic-release:*
run: |
git config --global --add safe.directory /__w/firebolt-apis/firebolt-apis
npx semantic-release
- name: Dry-run mono-artifact
if: (github.ref_name == 'main' && github.event_name != 'workflow_dispatch') || github.event_name == 'pull_request'
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }} # <-- Allows semantic-release-bot to push changes to protected branches
run: npx semantic-release --dry-run
- name: Install jsonref
run: pip3 install jsonref

- name: Build artifacts for feature branches
if: github.ref_name != 'main' && github.ref_name != 'next' && github.ref_name != 'next-major'
run: |
PRERELEASE=$(node ./src/js/version.mjs branch-to-prerelease $FEATURE_BRANCH)
node ./src/js/version.mjs latest-prerelease $PRERELEASE
npm version prerelease --preid $PRERELEASE --git-tag-version false
npm version prerelease --preid $PRERELEASE --workspaces --git-tag-version false
npm run dist
- name: Check if semantic-release created a build
id: check_build
uses: andstor/file-existence-action@v2
with:
files: './src/sdks/core/dist/lib/firebolt.mjs'
- name: Generate js sdk
run: npm run dist

- name: Get version from package.json
run: |
RELEASE_VERSION=$(node -p "require('./package.json').version")
echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV
echo "build_cpp_source=true" >> $GITHUB_ENV
- name: Set cpp build source Condition
if: steps.check_build.outputs.files_exists == 'false' || (github.ref_name == 'main' && github.event_name != 'pull_request' && github.event_name != 'workflow_dispatch')
run: echo "build_cpp_source=false" >> $GITHUB_ENV

- name: Generate native sdk source
if: env.build_cpp_source == 'true'
run: |
.github/workflows/utils.sh generateSource
- name: Clone and Install Thunder
if: env.build_cpp_source == 'true'
id: install_thunder
run: |
.github/workflows/utils.sh cloneAndInstallThunder
- name: Build Core SDK CPP
if: env.build_cpp_source == 'true'
id: build_core_cpp
run: |
.github/workflows/utils.sh buildCoreCPPSDK $RELEASE_VERSION
- name: Build Manage SDK CPP
if: env.build_cpp_source == 'true'
id: build_manage_cpp
run: |
.github/workflows/utils.sh buildManageCPPSDK $RELEASE_VERSION
- name: Build Discovery SDK CPP
if: env.build_cpp_source == 'true'
id: build_discovery_cpp
run: |
.github/workflows/utils.sh buildDiscoveryCPPSDK $RELEASE_VERSION
- name: Release Firebolt SDKs to NPM
if: steps.check_build.outputs.files_exists == 'true' && github.event_name != 'pull_request' && (github.ref_name != 'main' || github.event_name == 'workflow_dispatch')
env:
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }} # <-- Allows semantic-release to publish to npm without 2 factor auth.
run: |
npm --version
echo "NPM DIST TAG ::: " $NPM_DIST_TAG
npm publish --tag $NPM_DIST_TAG --workspaces
- name: Dry-run Firebolt SDKs to NPM
if: steps.check_build.outputs.files_exists == 'true' && (github.ref_name == 'main' && github.event_name != 'workflow_dispatch')
env:
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }} # <-- Allows semantic-release to publish to npm without 2 factor auth.
run: npm publish --tag $NPM_DIST_TAG --workspaces --dry-run

- name: Checkout firebolt GitHub.io repository
if: steps.check_build.outputs.files_exists == 'true'
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }} # <-- Allows semantic-release-bot to push changes to protected branches
run: |
cd /tmp
git clone https://rdkcentral:[email protected]/rdkcentral/firebolt.git ./firebolt-docs
- name: Release docs to GitHub.io
if: steps.check_build.outputs.files_exists == 'true' && (github.ref_name == 'main' || github.ref_name == 'next' || github.ref_name == 'next-major' || github.event_name == 'pull_request')
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_PAT }} # <-- Allows semantic-release-bot to push changes to protected branches
run: |
npm run publish:docs /tmp/firebolt-docs $DOCS_TAG
cd /tmp/firebolt-docs
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
git add --all
git diff-index --quiet HEAD || git commit -m "chore: Publish $DOCS_TAG"
git push
- name: Upload SDK artifact
if: success()
uses: actions/upload-artifact@v3
with:
name: core-sdk
path: firebolt-apis/src/sdks/core/build/cpp/src/*.tgz

0 comments on commit 3517d72

Please sign in to comment.