Skip to content

Commit

Permalink
chore: Migrate to github actions. (#305)
Browse files Browse the repository at this point in the history
  • Loading branch information
kinyoklion authored Oct 18, 2024
1 parent 4d323c5 commit f10cfb2
Show file tree
Hide file tree
Showing 16 changed files with 204 additions and 77 deletions.
16 changes: 16 additions & 0 deletions .github/actions/publish-docs/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Publish Documentation
description: 'Publish documentation to github pages.'

inputs:
github_token:
description: 'The github token to use for committing'
required: true

runs:
using: composite
steps:
- uses: launchdarkly/gh-actions/actions/[email protected]
name: 'Publish to Github pages'
with:
docs_path: docs
github_token: ${{ inputs.github_token }}
20 changes: 20 additions & 0 deletions .github/actions/publish-npm/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Publish to NPM
description: Publish an npm package.
inputs:
prerelease:
description: 'Is this a prerelease. If so, then the latest tag will not be updated in npm.'
required: false
dry-run:
description: 'Is this a dry run. If so no package will be published.'
required: false

runs:
using: composite
steps:
- name: Publish
shell: bash
run: |
./scripts/publish-npm.sh
env:
LD_RELEASE_IS_PRERELEASE: ${{ inputs.prerelease }}
LD_RELEASE_IS_DRYRUN: ${{ inputs.dry-run }}
41 changes: 41 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Build and Test

on:
push:
branches: [main]
paths-ignore:
- '**.md' #Do not need to run CI for markdown changes.
pull_request:
branches: [main]
paths-ignore:
- '**.md'

jobs:
build-test:
strategy:
matrix:
variations: [
{os: ubuntu-latest, node: latest},
{os: ubuntu-latest, node: 18}
]

runs-on: ${{ matrix.variations.os }}
env:
TEST_SERVICE_PORT: 8000

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.variations.node }}
registry-url: 'https://registry.npmjs.org'
- name: Install
run: npm install
- name: Test
run: npm test
- name: Lint
run: npm run lint:all
- name: Check typescript
run: npm run check-typescript
- name: Build Docs
run: npm run doc
12 changes: 12 additions & 0 deletions .github/workflows/lint-pr-title.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: Lint PR title

on:
pull_request_target:
types:
- opened
- edited
- synchronize

jobs:
lint-pr-title:
uses: launchdarkly/gh-actions/.github/workflows/lint-pr-title.yml@main
57 changes: 57 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Release Please

on:
push:
branches:
- main

jobs:
release-please:
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
token: ${{secrets.GITHUB_TOKEN}}

publish-package:
runs-on: ubuntu-latest
needs: ['release-please']
permissions:
id-token: write
contents: write
if: ${{ needs.release-please.outputs.release_created == 'true' }}
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20.x
registry-url: 'https://registry.npmjs.org'

- uses: launchdarkly/gh-actions/actions/[email protected]
name: 'Get NPM token'
with:
aws_assume_role: ${{ vars.AWS_ROLE_ARN }}
ssm_parameter_pairs: '/production/common/releasing/npm/token = NODE_AUTH_TOKEN'

- name: Install Dependencies
run: npm install

- id: publish-npm
name: Publish NPM Package
uses: ./.github/actions/publish-npm
with:
dry-run: 'false'
prerelease: 'false'

- name: Build Documentation
run: npm run doc

- id: publish-docs
name: Publish Documentation
uses: ./.github/actions/publish-docs
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ lib
test-types.js
docs/build/
package-lock.json
docs/
3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
".": "3.4.0"
}
34 changes: 0 additions & 34 deletions docs/Makefile

This file was deleted.

7 changes: 0 additions & 7 deletions docs/doc.md

This file was deleted.

12 changes: 0 additions & 12 deletions docs/tsconfig.json

This file was deleted.

18 changes: 0 additions & 18 deletions docs/typedoc.js

This file was deleted.

6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@
"test:junit": "cross-env NODE_ENV=test jest --testResultsProcessor jest-junit",
"check-typescript": "node_modules/typescript/bin/tsc",
"clean": "rimraf dist/**",
"prepublishOnly": "npm run build:min"
"prepublishOnly": "npm run build:min",
"doc": "typedoc"
},
"devDependencies": {
"@babel/cli": "^7.19.3",
Expand Down Expand Up @@ -72,7 +73,8 @@
"rollup-plugin-node-globals": "^1.4.0",
"rollup-plugin-terser": "^7.0.2",
"sinon": "^14.0.0",
"typescript": "^4.8.4",
"typescript": "~5.4.5",
"typedoc": "^0.25.13",
"@types/estree": "^1.0.0"
},
"dependencies": {
Expand Down
10 changes: 10 additions & 0 deletions release-please-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"bootstrap-sha": "4d323c5e7cd7d509cfeb1be3a7446b10d94697a6",
"packages": {
".": {
"release-type": "node",
"include-v-in-tag": false,
"include-component-in-tag": false
}
}
}
11 changes: 11 additions & 0 deletions scripts/publish-npm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
if $LD_RELEASE_IS_DRYRUN ; then
echo "Doing a dry run of publishing."
else
if $LD_RELEASE_IS_PRERELEASE ; then
echo "Publishing with prerelease tag."
npm publish --tag prerelease --provenance --access public || { echo "npm publish failed" >&2; exit 1; }
else
npm publish --provenance --access public || { echo "npm publish failed" >&2; exit 1; }
fi
fi
17 changes: 17 additions & 0 deletions typedoc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"$schema": "https://typedoc.org/schema.json",
"name": "launchdarkly-js-client-sdk",
"includeVersion": true,
"entryPoints": [
"typings.d.ts",
],
"readme": "none",
"visibilityFilters": {
"protected": false,
"private": false,
"inherited": true,
"external": true,
"@alpha": false,
"@beta": false
}
}
16 changes: 12 additions & 4 deletions typings.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
// Put top level documentation into docs/doc.md.
/**
* This is the API reference for the LaunchDarkly SDK for browser JavaScript.
*
* In typical usage, you will call {@link initialize} once at startup time to obtain an instance of
* {@link LDClient}, which provides access to all of the SDK's functionality.
*
* For more information, see the [SDK reference guide](https://docs.launchdarkly.com/sdk/client-side/javascript).
*
* @packageDocumentation
*/

declare module 'launchdarkly-js-client-sdk' {

//// DOCBUILD-START-REPLACE (see docs/Makefile)
export * from 'launchdarkly-js-sdk-common';
import {
BasicLoggerOptions,
Expand All @@ -10,7 +19,6 @@ declare module 'launchdarkly-js-client-sdk' {
LDLogger,
LDOptionsBase,
} from 'launchdarkly-js-sdk-common';
//// DOCBUILD-END-REPLACE

/**
* Creates an instance of the LaunchDarkly client.
Expand Down Expand Up @@ -133,7 +141,7 @@ declare module 'launchdarkly-js-client-sdk' {
*
* @param options Configuration for the logger. If no options are specified, the
* logger uses `{ level: 'info' }`.
*
*
* @example
* This example shows how to use `basicLogger` in your SDK options to enable console
* logging only at `warn` and `error` levels.
Expand Down

0 comments on commit f10cfb2

Please sign in to comment.