102 lines
3.1 KiB
YAML
102 lines
3.1 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: Clone GitHub and Gerrit plugin repos
|
|
run: |
|
|
# Example GitHub clone
|
|
git clone -b beckn-onix-v1.0-develop https://${{ secrets.PAT_GITHUB }}:@github.com/beckn/beckn-onix.git github-repo
|
|
|
|
# Example Gerrit clone
|
|
git clone https://${{ secrets.GERRIT_USERNAME }}:${{ secrets.GERRIT_PAT }}@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 github-repo/pkg/plugin/implementation/*; do
|
|
if [ -d "$dir/cmd" ]; then
|
|
plugin=$(basename "$dir")
|
|
BUILD_CMDS+="cd github-repo && go build -buildmode=plugin -buildvcs=false -o ../${PLUGIN_OUTPUT_DIR}/${plugin}.so ./pkg/plugin/implementation/${plugin}/cmd && cd - && "
|
|
fi
|
|
done
|
|
|
|
# Gerrit plugins — build in their own repo/module context
|
|
for dir in gerrit-repo/plugins/*; do
|
|
if [ -d "$dir/cmd" ]; then
|
|
plugin=$(basename "$dir")
|
|
BUILD_CMDS+="cd gerrit-repo && go build -buildmode=plugin -buildvcs=false -o ../${PLUGIN_OUTPUT_DIR}/${plugin}.so ./plugins/${plugin}/cmd && cd - && "
|
|
fi
|
|
done
|
|
|
|
BUILD_CMDS=${BUILD_CMDS%" && "}
|
|
echo "🛠️ Running build commands inside Docker:"
|
|
echo "$BUILD_CMDS"
|
|
|
|
docker run --rm -v "$(pwd)":/app -w /app golang:1.24-bullseye sh -c "$BUILD_CMDS"
|
|
|
|
- name: List built plugin files
|
|
run: |
|
|
echo "Looking in $PLUGIN_OUTPUT_DIR"
|
|
ls -lh $PLUGIN_OUTPUT_DIR || echo "⚠️ Directory does not exist"
|
|
find $PLUGIN_OUTPUT_DIR -name '*.so' || echo "⚠️ No .so files found"
|
|
|
|
|
|
|
|
|
|
#- name: List zip output
|
|
# run: |
|
|
# ls -lh plugins_bundle.zip
|
|
|
|
|
|
- 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_FILE gs://${GCS_BUCKET}/
|
|
|
|
- name: Cleanup
|
|
run: |
|
|
rm -rf $PLUGIN_OUTPUT_DIR $ZIP_FILE gcloud-key.json
|