Files
onix/.github/workflows/build-and-deploy-plugins.yml
2025-05-20 15:38:56 +05:30

90 lines
2.8 KiB
YAML

name: Build and Upload Plugins
on:
push:
workflow_dispatch:
jobs:
build-and-upload:
runs-on: ubuntu-latest
env:
PLUGIN_OUTPUT_DIR: ./generated
ZIP_FILE: plugins_bundle.zip
steps:
- name: Checkout this repo
uses: actions/checkout@v4
- name: Set up Git
run: |
git config --global url."https://${{ secrets.PAT_GITHUB }}:@github.com/".insteadOf "https://github.com/"
git config --global url."https://${{ secrets.GERRIT_USERNAME }}:${{ secrets.GERRIT_PAT }}@open-networks.googlesource.com/".insteadOf "https://open-networks.googlesource.com/"
- name: Clone GitHub and Gerrit plugin repos
run: |
# Example GitHub clone
git clone -b beckn-onix-v1.0-develop https://github.com/beckn/beckn-onix.git github-repo
# Example Gerrit clone
git clone https://open-networks.googlesource.com/onix-dev gerrit-repo
- name: List directory structure
run: |
echo "📂 Contents of root:"
ls -alh
echo "📂 Contents of GitHub repo:"
ls -alh github-repo
echo "📂 Deep list of GitHub repo:"
find github-repo
echo "📂 Contents of Gerrit repo:"
ls -alh gerrit-repo
echo "📂 Deep list of Gerrit repo:"
find gerrit-repo
- name: Build Go plugins in Docker
run: |
set -e
mkdir -p $PLUGIN_OUTPUT_DIR
BUILD_CMDS=""
# GitHub plugins
for dir in pkg/plugin/implementation/*; do
plugin=$(basename "$dir")
BUILD_CMDS+="go build -buildmode=plugin -buildvcs=false -o ${PLUGIN_OUTPUT_DIR}/${plugin}.so ./${dir}/cmd && "
done
# Gerrit plugins
for dir in plugins/*; do
plugin=$(basename "$dir")
BUILD_CMDS+="go build -buildmode=plugin -buildvcs=false -o ${PLUGIN_OUTPUT_DIR}/${plugin}.so ./${dir}/cmd && "
done
BUILD_CMDS=${BUILD_CMDS%" && "}
docker run --rm -v "$(pwd)":/app -w /app golang:1.24-bullseye sh -c "$BUILD_CMDS"
- name: Zip the plugin binaries
run: |
cd $PLUGIN_OUTPUT_DIR
zip -r ../$ZIP_FILE *.so
cd ..
- name: Authenticate to GCP
run: |
echo "${{ secrets.GOOGLE_APPLICATION_CREDENTIALS_JSON }}" > gcloud-key.json
gcloud auth activate-service-account --key-file=gcloud-key.json
gcloud config set project trusty-relic-370809
env:
GOOGLE_APPLICATION_CREDENTIALS: gcloud-key.json
- name: Upload to GCS
run: |
gsutil -m cp -r *.zip gs://${GCS_BUCKET}/
- name: Cleanup
run: |
rm -rf $PLUGIN_OUTPUT_DIR $ZIP_FILE gcloud-key.json