From d1a4aadc28fd40a8b65b8357c049eff821972818 Mon Sep 17 00:00:00 2001 From: Ben <105687719+ben-octo-data-dev@users.noreply.github.com> Date: Mon, 4 May 2026 14:47:06 +0800 Subject: [PATCH 1/2] Add step --- step-templates/logos/supabase.png | Bin 0 -> 15418 bytes step-templates/supabase-run-migrations.json | 67 ++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 step-templates/logos/supabase.png create mode 100644 step-templates/supabase-run-migrations.json diff --git a/step-templates/logos/supabase.png b/step-templates/logos/supabase.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c6f376612c16f2d0b1c7c73de2bc7056c7b91e GIT binary patch literal 15418 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 literal 0 HcmV?d00001 diff --git a/step-templates/supabase-run-migrations.json b/step-templates/supabase-run-migrations.json new file mode 100644 index 000000000..9fa6442f4 --- /dev/null +++ b/step-templates/supabase-run-migrations.json @@ -0,0 +1,67 @@ +{ + "Id": "937be757-a954-42e3-b315-670578a346e0", + "Name": "Supabase - Run Migrations", + "Description": "Runs database migrations against a Supabase project using the Supabase CLI.\n\nThis step will:\n1. Install the Supabase CLI if not already present\n2. Authenticate with Supabase using the access token\n3. Push pending migrations to the remote database\n\n**Prerequisites:**\n- An existing Supabase project\n- Database migrations defined in your project's `supabase/migrations/` directory\n\n**Package Reference Required:**\nThis step expects a referenced package named **`supabase-migrations`** attached to the deployment step with **Extract package** enabled. The package must contain a `supabase/migrations/` directory at its root. The step uses `Octopus.Action.Package[supabase-migrations].ExtractedPath` to locate the migrations at runtime. If no package is found it will fall back to the current working directory.\n\n**Finding your Project Ref:**\n- From the Supabase Dashboard URL: `https://app.supabase.com/project//...`\n- Or go to **Project Settings → General**\n\n[Supabase CLI Documentation](https://supabase.com/docs/reference/cli/introduction)\n[Database Migrations Guide](https://supabase.com/docs/guides/migrations)", + "ActionType": "Octopus.Script", + "Version": 1, + "CommunityActionTemplateId": null, + "Properties": { + "Octopus.Action.Script.Syntax": "Bash", + "Octopus.Action.Script.ScriptSource": "Inline", + "Octopus.Action.RunOnServer": "true", + "Octopus.Action.Script.ScriptBody": "# Supabase - Run Migrations\n# This script runs database migrations against a Supabase project\n\nset -e\n\n# Export Octopus variables as environment variables\nexport SUPABASE_PROJECT_REF=\"#{SupabaseProjectRef}\"\nexport SUPABASE_DB_PASSWORD=\"#{SupabaseDbPassword}\"\nexport SUPABASE_ACCESS_TOKEN=\"#{SupabaseAccessToken}\"\nexport SUPABASE_CLI_VERSION=\"#{SupabaseCliVersion}\"\n\n# Parameter validation\nif [ -z \"$SUPABASE_PROJECT_REF\" ]; then\n echo \"ERROR: Supabase Project Ref is required. Please provide a value for 'Project Ref'.\"\n exit 1\nfi\n\nif [ -z \"$SUPABASE_DB_PASSWORD\" ]; then\n echo \"ERROR: Database Password is required. Please provide a value for 'Database Password'.\"\n exit 1\nfi\n\nif [ -z \"$SUPABASE_ACCESS_TOKEN\" ]; then\n echo \"ERROR: Access Token is required. Please provide a value for 'Access Token'.\"\n exit 1\nfi\n\necho \"==========================================\"\necho \"Supabase - Run Migrations\"\necho \"==========================================\"\necho \"Project Ref: $SUPABASE_PROJECT_REF\"\necho \"CLI Version: $SUPABASE_CLI_VERSION\"\necho \"==========================================\"\n\n# Check if Supabase CLI is installed\ninstall_supabase_cli() {\n local version=\"$1\"\n \n echo \"Installing Supabase CLI...\"\n \n # Detect OS\n if [ \"$(uname)\" = \"Darwin\" ]; then\n # macOS\n if [ \"$version\" = \"latest\" ]; then\n brew install supabase/tap/supabase\n else\n brew install supabase/tap/supabase@\"$version\"\n fi\n elif [ \"$(uname)\" = \"Linux\" ]; then\n # Linux - download binary directly from GitHub releases\n local arch\n arch=$(uname -m)\n case \"$arch\" in\n x86_64) arch=\"amd64\" ;;\n aarch64) arch=\"arm64\" ;;\n *) echo \"ERROR: Unsupported architecture: $arch\"; exit 1 ;;\n esac\n local download_url\n if [ \"$version\" = \"latest\" ]; then\n download_url=\"https://github.com/supabase/cli/releases/latest/download/supabase_linux_${arch}.tar.gz\"\n else\n download_url=\"https://github.com/supabase/cli/releases/download/v${version}/supabase_linux_${arch}.tar.gz\"\n fi\n echo \"Downloading Supabase CLI from GitHub releases...\"\n mkdir -p \"$HOME/.local/bin\"\n curl -fsSL \"$download_url\" -o /tmp/supabase.tar.gz\n tar -xzf /tmp/supabase.tar.gz -C \"$HOME/.local/bin\"\n chmod +x \"$HOME/.local/bin/supabase\"\n export PATH=\"$HOME/.local/bin:$PATH\"\n rm -f /tmp/supabase.tar.gz\n else\n echo \"ERROR: Unsupported operating system: $(uname)\"\n exit 1\n fi\n}\n\n# Check for CLI\nif ! command -v supabase &> /dev/null; then\n echo \"Supabase CLI not found. Installing...\"\n install_supabase_cli \"$SUPABASE_CLI_VERSION\"\nelse\n echo \"Supabase CLI found: $(which supabase)\"\n CURRENT_VERSION=$(supabase --version 2>/dev/null | awk '{print $2}')\n echo \"Current version: $CURRENT_VERSION\"\n \n # Optionally update if not latest\n if [ \"$SUPABASE_CLI_VERSION\" != \"latest\" ] && [ \"$SUPABASE_CLI_VERSION\" != \"$CURRENT_VERSION\" ]; then\n echo \"Updating CLI to version $SUPABASE_CLI_VERSION...\"\n install_supabase_cli \"$SUPABASE_CLI_VERSION\"\n fi\nfi\n\n# Verify CLI installation\nif ! command -v supabase &> /dev/null; then\n echo \"ERROR: Failed to install Supabase CLI\"\n exit 1\nfi\n\necho \"\"\necho \"==========================================\"\necho \"Authenticating with Supabase...\"\necho \"==========================================\"\n\n# Resolve the working directory - use extracted package path if available, else current dir\nWORKDIR=\"#{Octopus.Action.Package[supabase-migrations].ExtractedPath}\"\nif [ -z \"$WORKDIR\" ] || [ ! -d \"$WORKDIR\" ]; then\n WORKDIR=\"$(pwd)\"\nfi\necho \"Supabase workdir: $WORKDIR\"\necho \"Migrations folder exists: $([ -d \"$WORKDIR/supabase/migrations\" ] && echo YES || echo NO)\"\n\n# Link the project\necho \"Linking Supabase project...\"\nsupabase link --project-ref \"$SUPABASE_PROJECT_REF\" --workdir \"$WORKDIR\"\n\n# Run migrations\necho \"\"\necho \"==========================================\"\necho \"Running database migrations...\"\necho \"==========================================\"\n\nsupabase db push \\\n --password \"$SUPABASE_DB_PASSWORD\" \\\n --workdir \"$WORKDIR\" \\\n --linked\n\necho \"\"\necho \"==========================================\"\necho \"Migration completed successfully!\"\necho \"==========================================\"\n" + }, + "Parameters": [ + { + "Id": "dfabd994-ed32-4a2f-961d-937dfe396c4f", + "Name": "SupabaseProjectRef", + "Label": "Project Ref", + "HelpText": "The unique identifier of your Supabase project.\n\n**Where to find it:**\n- From your project URL: `https://app.supabase.com/project//settings/general`\n- In Dashboard: **Project Settings → General → Project ID**\n\nExample: `abcdefghijklmn`", + "DefaultValue": "", + "DisplaySettings": { + "Octopus.ControlType": "SingleLineText" + }, + "Links": {} + }, + { + "Id": "bf64dee7-b2b4-4f48-963e-0440eee9948c", + "Name": "SupabaseDbPassword", + "Label": "Database Password", + "HelpText": "The password for the PostgreSQL database user (postgres).\n\n**Where to find it:**\n- In Supabase Dashboard: **Project Settings → Database → Database password**\n- Note: This is the initial password set when creating the project\n\nThis value is stored securely and will not be displayed in logs.", + "DefaultValue": null, + "DisplaySettings": { + "Octopus.ControlType": "Sensitive" + }, + "Links": {} + }, + { + "Id": "acd91644-e562-427c-9995-7d10ad69491d", + "Name": "SupabaseAccessToken", + "Label": "Access Token", + "HelpText": "Your Supabase access token for CLI authentication.\n\n**Where to get it:**\n1. Go to [Supabase Dashboard → Account](https://app.supabase.com/account)\n2. Click **Access Tokens**\n3. Create a new token or use an existing one\n\nThis value is stored securely and will not be displayed in logs.", + "DefaultValue": null, + "DisplaySettings": { + "Octopus.ControlType": "Sensitive" + }, + "Links": {} + }, + { + "Id": "9a0ff598-e8a9-4947-ad1b-91c820c0e450", + "Name": "SupabaseCliVersion", + "Label": "CLI Version", + "HelpText": "The version of the Supabase CLI to install.\n\n- Use `latest` to always use the newest version\n- Specify a version like `1.123.4` for a specific version\n\nDefault: `latest`", + "DefaultValue": "latest", + "DisplaySettings": { + "Octopus.ControlType": "SingleLineText" + }, + "Links": {} + } + ], + "LastModifiedBy": "itsmebenwalker", + "$Meta": { + "ExportedAt": "2026-05-01T00:00:00.000Z", + "OctopusVersion": "2026.1.0", + "Type": "ActionTemplate" + }, + "Category": "supabase" +} From 2f0f09fbf6770bc8262e6e9ade5f7843aed2d56e Mon Sep 17 00:00:00 2001 From: Ben <105687719+ben-octo-data-dev@users.noreply.github.com> Date: Mon, 4 May 2026 14:56:02 +0800 Subject: [PATCH 2/2] Upd gulpfile --- gulpfile.babel.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index eeec6dbcd..f9b4a7fb6 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -296,6 +296,8 @@ function humanize(categoryId) { return "SharePoint"; case "snowflake": return "Snowflake"; + case "supabase": + return "Supabase"; case "solarwinds": return "SolarWinds"; case "sql":