name: "CI: Framework CLI" permissions: id-token: write contents: read on: workflow_dispatch: pull_request: branches: [ main ] paths-ignore: - 'docs/**' defaults: run: working-directory: ./packages/sf-core jobs: test-engine: name: "Test: Engine" if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest defaults: run: working-directory: ./packages/engine steps: - name: "Checkout Code" uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: "Setup: Node.js" uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x cache: npm - name: "Install: Dependencies" run: | cd ../../ npm install - name: "Test: Engine Unit" run: npm test test-framework: name: "Test: Framework" if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest steps: - name: "Checkout Code" uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: "Setup: Node.js" uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24.x cache: npm registry-url: 'https://npm.pkg.github.com' scope: '@serverlessinc' - name: "Setup: AWS Credentials" uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708 # v5.1.1 with: role-to-assume: arn:aws:iam::762003938904:role/GithubActionsDeploymentRole aws-region: us-east-1 - name: "Install: Dependencies" run: | cd ../../ npm install - name: "Test: Unit (sf-core)" run: npm run test:unit - name: "Test: Unit (serverless)" working-directory: ./packages/serverless run: npm run test:unit - name: "Build: Minify Shim" run: | cd ../serverless/lib/plugins/aws/dev ../../../../../../node_modules/.bin/esbuild ./shim.js --bundle --platform=node --minify --outfile=./shim.min.js - name: "Build: Framework" run: npm run build - name: "Install: Serverless v3" run: npm install -g serverless@3 - name: "Test: Integration" run: npm run test env: SERVERLESS_LICENSE_KEY_DEV: ${{ secrets.SERVERLESS_LICENSE_KEY_DEV }} SERVERLESS_ACCESS_KEY_DEV: ${{ secrets.SERVERLESS_ACCESS_KEY_DEV }} TEST_STAGE: pr-${{ github.event.pull_request.user.login }} SLS_AWS_SDK: 3 - name: "Test: Resolvers" run: npm run test:resolvers env: SERVERLESS_LICENSE_KEY_DEV: ${{ secrets.SERVERLESS_LICENSE_KEY_DEV }} SERVERLESS_ACCESS_KEY_DEV: ${{ secrets.SERVERLESS_ACCESS_KEY_DEV }} TEST_STAGE: pr-${{ github.event.pull_request.user.login }}