Skip to content

fix: ci

fix: ci #199

Workflow file for this run

name: CI
on:
pull_request:
types:
- closed
push:
branches:
- main
workflow_dispatch:
jobs:
prepare:
runs-on: ubuntu-latest
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true)
outputs:
submodule-matrix: ${{ steps.discover-submodules.outputs.submodule-matrix }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
persist-credentials: true
fetch-depth: 0
- name: Install Database SDK
id: install-db-sdk
run: |
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates gnupg curl
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt-get update && sudo apt-get install google-cloud-cli
# Create a directory to cache the SDK installation
mkdir -p ~/.google-cloud-sdk
cp -r /usr/lib/google-cloud-sdk/* ~/.google-cloud-sdk/
echo "sdk-path=$(realpath ~/.google-cloud-sdk)" >> $GITHUB_OUTPUT
- name: Cache Database SDK
uses: actions/cache@v3
with:
path: ~/.google-cloud-sdk
key: ${{ runner.os }}-google-cloud-sdk-${{ hashFiles('**/google-cloud-sdk/**') }}
restore-keys: |
${{ runner.os }}-google-cloud-sdk-
- name: Upload Build Scripts
uses: actions/upload-artifact@v4
with:
name: build-scripts
path: scripts/build/
retention-days: 1
- name: Discover submodules
id: discover-submodules
run: |
sudo bash ./scripts/_gen_metadata.sh
sudo bash ./scripts/_submodules.sh > submodules.json
cat submodules.json
echo "submodule-matrix=$(cat submodules.json)" >> $GITHUB_OUTPUT
- name: Commit Metadata
if: github.event_name != 'pull_request' && github.event.repository.fork == false
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
# Stage the changes
git add metadata.json
# Commit only if there are changes
if git commit -m "chore: Add plugin metadata"; then
# Push only if the commit succeeded
git push
else
echo "::debug::No changes to commit."
fi
make:
needs: prepare
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.prepare.outputs.submodule-matrix) }}
name: Build (${{ matrix.submodules.repository }})
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
repository: ${{ matrix.submodules.repository }}
ref: ${{ matrix.submodules.sha }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '20'
- name: Restore Database SDK from Cache
uses: actions/cache@v3
with:
path: ~/.google-cloud-sdk
key: ${{ runner.os }}-google-cloud-sdk-${{ hashFiles('**/google-cloud-sdk/**') }}
restore-keys: |
${{ runner.os }}-google-cloud-sdk-
- name: Setup Database SDK Path
run: |
echo "PATH=$PATH:~/.google-cloud-sdk/bin" >> $GITHUB_ENV
gcloud --version
- name: Authenticate to Database
env:
GCP_SERVICE_ACCOUNT_KEY: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}
run: |
echo "${GCP_SERVICE_ACCOUNT_KEY}" > gcloud-key.json
gcloud auth activate-service-account --key-file=gcloud-key.json
gcloud config set project steam-brew
- name: Download Build Scripts
uses: actions/download-artifact@v4
with:
name: build-scripts
path: scripts/build/
- name: Install pnpm
run: npm install -g pnpm
- name: Install Dependencies
run: |
pnpm install
env:
NODE_ENV: production
- name: Build Plugin
run: |
pnpm run build
env:
NODE_ENV: production
- name: Prepare Distribution Files
id: prepare-distribution
run: |
bash ./scripts/build/prepare-dist.sh --silent
bash ./scripts/build/upload-dist.sh ${{ env.PLUGIN_NAME }}
- name: Upload Plugin Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.PLUGIN_NAME }}
path: dist/