Skip to content
Skillv1.0.0

flexport-ci-integration

Configure CI/CD pipelines for Flexport logistics integrations with GitHub Actions, automated API contract testing, and deployment workflows. Trigger: "flexport CI", "flexport GitHub Actions", "flexpor

by jeremylongshore(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from jeremylongshore/tons-of-skills-marketplace (plugins/saas-packs/flexport-pack/skills/flexport-ci-integration/SKILL.md). Install upstream with npx skills add jeremylongshore/tons-of-skills-marketplace --skill flexport-ci-integration. Copyright stays with the author (MIT).

Flexport CI Integration

Overview

Set up CI/CD for Flexport logistics integrations: run unit tests with mocked shipment and tracking responses on every PR, execute live API contract validation against the Flexport sandbox on merge to main. Flexport's API covers shipments, booking, customs documentation, and real-time tracking, so CI pipelines verify data transforms for shipment lifecycle events and ensure API contract compatibility across versions.

Prerequisites

  • Protected CI environments with sandbox secrets available only to trusted jobs.
  • Fictional shipment fixtures, approved data mappings, and a named deployment/rollback owner.

Instructions

  1. Run unit and schema tests with mocked data on pull requests and do not expose secrets to forks.
  2. Limit authenticated sandbox checks to protected merges, with minimum scopes and redacted output.
  3. Validate destination allowlists, idempotency, and failure paths before an approved canary deployment.

Output

Publish a CI receipt with commit SHA, fixture version, checks run, aggregate result, sandbox approval, and redacted failure reference. Exclude logistics payloads, documents, and credentials.

Examples

A pull request validates a fictional port-to-status mapping without credentials. A protected post-merge job processes one sandbox event and fails the release if an unexpected field or destination appears, retaining only the opaque event ID.

GitHub Actions Workflow

# .github/workflows/flexport-ci.yml
name: Flexport CI
on:
  pull_request:
    paths: ['src/flexport/**', 'tests/**']
  push:
    branches: [main]

jobs:
  unit-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: '20' }
      - run: npm ci
      - run: npm test -- --reporter=verbose

  integration-tests:
    if: github.ref == 'refs/heads/main'
    needs: unit-tests
    runs-on: ubuntu-latest
    environment: staging
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: '20' }
      - run: npm ci
      - run: npm run test:integration
        env:
          FLEXPORT_API_KEY: ${{ secrets.FLEXPORT_API_KEY }}

Mock-Based Unit Tests

// tests/flexport-service.test.ts
import { describe, it, expect, vi } from 'vitest';
import { getShipmentStatus } from '../src/flexport-service';

vi.mock('../src/flexport-client', () => ({
  FlexportClient: vi.fn().mockImplementation(() => ({
    getShipment: vi.fn().mockResolvedValue({
      id: 'shp_abc123',
      status: 'in_transit',
      origin: { port: 'CNSHA', country: 'CN' },
      destination: { port: 'USLAX', country: 'US' },
      containers: [{ id: 'MSKU1234567', type: '40ft_hc' }],
      estimated_arrival: '2026-04-15T00:00:00Z',
    }),
    listShipments: vi.fn().mockResolvedValue({ data: [], total_count: 0 }),
  })),
}));

describe('Flexport Service', () => {
  it('returns shipment tracking status', async () => {
    const status = await getShipmentStatus('shp_abc123');
    expect(status.status).toBe('in_transit');
    expect(status.origin.port).toBe('CNSHA');
  });
});

Integration Tests

// tests/integration/flexport.integration.test.ts
import { describe, it, expect } from 'vitest';

const hasKey = !!process.env.FLEXPORT_API_KEY;

describe.skipIf(!hasKey)('Flexport Live API', () => {
  it('lists shipments from sandbox', async () => {
    const res = await fetch('https://api.flexport.com/shipments?per=1', {
      headers: {
        'Authorization': `Bearer ${process.env.FLEXPORT_API_KEY}`,
        'Flexport-Version': '2',
      },
    });
    expect(res.status).toBe(200);
    const body = await res.json();
    expect(body.data).toHaveProperty('total_count');
  });
});

Error Handling

CI Issue Cause Fix
401 Unauthorized Invalid API key or wrong environment Verify key at portal.flexport.com
Flexport-Version header missing API version not set Add Flexport-Version: 2 to all requests
Shipment not found (404) Test shipment ID expired Use listShipments to get a valid ID dynamically
Rate limit (429) Too many parallel test requests Add request throttling between test cases
Customs data empty Sandbox doesn't populate customs Mock customs fields in unit tests, skip in integration

Resources

Next Steps

For deployment strategies, see flexport-deploy-integration.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/jeremylongshore-tons-of-skills-marketplace-flexport-ci-i-ef8121/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

jeremylongshore-tons-of-skills-marketplace-flexport-ci-i-ef8121.ocm.jsonjson
{
  "ocm": "1",
  "id": "jeremylongshore-tons-of-skills-marketplace-flexport-ci-i-ef8121",
  "kind": "skill",
  "name": "flexport-ci-integration",
  "description": "Configure CI/CD pipelines for Flexport logistics integrations with GitHub Actions, automated API contract testing, and deployment workflows. Trigger: \"flexport CI\", \"flexport GitHub Actions\", \"flexport CI/CD pipeline\".",
  "publisher": "jeremylongshore",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding",
      "legal"
    ],
    "tags": [
      "skill-md",
      "saas",
      "logistics",
      "flexport",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Configure CI/CD pipelines for Flexport logistics integrations with GitHub Actions, automated API contract testing, and deployment workflows. Trigger: \"flexport CI\", \"flexport GitHub Actions\", \"flexport CI/CD pipeline\"."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/jeremylongshore/tons-of-skills-marketplace",
      "path": "plugins/saas-packs/flexport-pack/skills/flexport-ci-integration/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/jeremylongshore/tons-of-skills-marketplace/blob/HEAD/plugins/saas-packs/flexport-pack/skills/flexport-ci-integration/SKILL.md",
      "key": "jeremylongshore/tons-of-skills-marketplace/plugins/saas-packs/flexport-pack/skills/flexport-ci-integration/SKILL.md"
    },
    "compatibility": "Designed for Claude Code",
    "allowed_tools": [
      "Read,",
      "Write,",
      "Edit,",
      "Bash(npm:*),",
      "Grep"
    ],
    "license": "MIT"
  },
  "instructions": "# Flexport CI Integration\n\n## Overview\n\nSet up CI/CD for Flexport logistics integrations: run unit tests with mocked shipment and tracking responses on every PR, execute live API contract validation against the Flexport sandbox on merge to main. Flexport's API covers shipments, booking, customs documentation, and real-time tracking, so CI pipelines verify data transforms for shipment lifecycle events and ensure API contract compatibility across versions.\n\n## Prerequisites\n\n- Protected CI environments with sandbox secrets available only to trusted jobs.\n- Fictional shipment fixtures, approved d",
  "cost": {
    "context_tokens": 1164
  }
}

Fetch it by URL: GET /api/v1/registry/jeremylongshore-tons-of-skills-marketplace-flexport-ci-i-ef8121/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.