Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Migrate to github actions and release-please. #104

Merged
merged 2 commits into from
Jun 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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/publish-pages@publish-pages-v1.0.2
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 }}

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
env:
JEST_JUNIT_OUTPUT_FILE: "reports/junit/js-test-results.xml"
- 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/release-secrets@release-secrets-v1.2.0
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/
25 changes: 0 additions & 25 deletions .ldrelease/config.yml

This file was deleted.

3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
".": "5.2.0"
}
11 changes: 0 additions & 11 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 @@ -17,7 +17,8 @@
"format:test:md": "prettier --parser markdown --ignore-path .prettierignore --list-different '*.md'",
"format:test:js": "prettier --ignore-path .prettierignore --list-different 'src/**/*.js'",
"test": "cross-env NODE_ENV=test jest",
"check-typescript": "node_modules/typescript/bin/tsc"
"check-typescript": "tsc",
"doc": "typedoc"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
Expand All @@ -43,7 +44,8 @@
"launchdarkly-js-test-helpers": "1.1.0",
"prettier": "1.19.1",
"readline-sync": "^1.4.9",
"typescript": "~4.4.4"
"typescript": "~5.4.5",
"typedoc": "^0.25.13"
},
"dependencies": {
"base64-js": "^1.3.0",
Expand Down
8 changes: 8 additions & 0 deletions release-please-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"bootstrap-sha": "d49ca41718a593c071874950d301f2f00c71a371",
"packages": {
".": {
"release-type": "node"
}
}
}
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
8 changes: 8 additions & 0 deletions typedoc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"$schema": "https://typedoc.org/schema.json",
"name": "launchdarkly-js-sdk-common",
"includeVersion": true,
"entryPoints": [
"typings.d.ts",
]
}