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

Packaging, CI etc from template #8

Merged
merged 2 commits into from
Jul 19, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
dist
44 changes: 44 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

{
"root": true,
"parser": "@typescript-eslint/parser",
"extends": [
"airbnb",
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"parserOptions": {
"ecmaVersion": 2020
},
"plugins": [
"@typescript-eslint",
"react",
"jsx-a11y",
"import"
],
"env": {
"es6": true,
"node": true,
"browser": true
},
"rules": {
"react/jsx-filename-extension": [1, { "extensions": [".tsx", ".jsx"] }],
"no-shadow": "off",
"@typescript-eslint/no-shadow": "warn",
"import/prefer-default-export": "off",
"no-underscore-dangle": 0,
"import/extensions": [2, "never"],
"import/no-absolute-path": 0,
"import/no-unresolved": 0,
"import/no-extraneous-dependencies": 1,
"react/prop-types": 1,
"jsx-a11y/no-access-key": 0,
"react/jsx-props-no-spreading": "off",
"max-classes-per-file": "off",
"class-methods-use-this": "off"
},
"globals": {
"browser": "writable"
}
}
52 changes: 52 additions & 0 deletions .github/ISSUE_TEMPLATE/bigbluebutton-plugin-issue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
name: BBB-Plugin-SDK
about: Template for creating BBB-Plugin-SDK Issue (SDK to create plugins for BigBlueButton).
title: ''
labels: 'module: client'
assignees: ''

---

<!--PLEASE DO NOT FILE ISSUES FOR GENERAL SUPPORT QUESTIONS.
This issue tracker is only for bbb development related issues.-->

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Actual behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**BBB version, plugin in which The bug happened and SDK version:**
BigBlueButton continually evolves. Providing the version/build helps us to pinpoint when an issue was introduced.
Example:
$ sudo bbb-conf --check | grep BigBlueButton
BigBlueButton Server 2.2.2 (1816)

The SDK version is mentioned in the package.json file of the plugin, so search for "bigbluebutton-html-plugin-sdk" inside that file.

**Desktop (please complete the following information):**
- OS: [e.g. Windows, Mac]
- Browser [e.g. Chrome, Safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, Safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
13 changes: 13 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
blank_issues_enabled: false
contact_links:
- name: BigBlueButton GitHub Repository
url: https://github.com/bigbluebutton/bigbluebutton
- name: BigBlueButton Plugin SDK GitHub Repository
url: https://github.com/bigbluebutton/bigbluebutton-html-plugin-sdk
about: Everything BigBlueButton (in case you are looking for something different than plugin sdk)
- name: Looking for commercial support in building/maintaining plugins
url: https://bigbluebutton.org/commercial-support
about: List of companies offering commercial BigBlueButton support
- name: BigBlueButton Developers Mailing List:
url: https://groups.google.com/forum/#!forum/bigbluebutton-dev
about: Ask questions and share experiences with other BigBlueButton developers (including about plugins).
36 changes: 36 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<!--
PLEASE READ THIS MESSAGE.

HOW TO WRITE A GOOD PULL REQUEST?

- Make it small.
- Do only one thing.
- Avoid re-formatting.
- Make sure the code builds and works.
- Write useful descriptions and titles.
- Address review comments in terms of additional commits.
- Do not amend/squash existing ones unless the PR is trivial.
- Read the contributing guide: https://docs.bigbluebutton.org/support/faq.html#bigbluebutton-development-process
- Sign and send the Contributor License Agreement: https://docs.bigbluebutton.org/support/faq.html#why-do-i-need-to-sign-a-contributor-license-agreement-to-contribute-source-code

-->

### What does this PR do?

<!-- A brief description of each change being made with this pull request. -->

### Closes Issue(s)
<!-- List here all the issues closed by this pull request. Use keyword `closes` before each issue number
Closes #123456
-->
Closes #


### Motivation

<!-- What inspired you to submit this pull request? -->

### More

<!-- Anything else we should know when reviewing? -->
- [ ] Added/updated documentation
20 changes: 20 additions & 0 deletions .github/actions/merge-branches/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Merge branches
on:
workflow_call:

runs:
using: "composite"
steps:
- name: Checkout ${{ github.event.pull_request.base.ref || 'master' }}
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.ref || '' }}
fetch-depth: 0 # Fetch all history
- name: Merge pr-${{ github.event.number }} into ${{ github.event.pull_request.base.ref }}
if: github.event_name == 'pull_request'
shell: bash
run: |
git config user.name "BBB Automated Tests"
git config user.email "[email protected]"
git config pull.rebase false
git pull origin pull/${{ github.event.number }}/head:${{ github.head_ref }}
1 change: 0 additions & 1 deletion .github/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,3 @@ newPRWelcomeComment: >
Thank you for this contribution!
Could you please confirm if you already sent in the signed Contributor License Agreement? See https://docs.bigbluebutton.org/support/faq.html#why-do-i-need-to-sign-a-contributor-license-agreement-to-contribute-source-code
Thanks in advance!

19 changes: 19 additions & 0 deletions .github/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 270
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 90
# Issues with these labels will never be considered stale
exemptLabels:
- "status: accepted"
- "status: verify"
- "target: security"
- "type: discussion"
# Label to use when marking an issue as stale
staleLabel: "status: stale"
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
88 changes: 88 additions & 0 deletions .github/workflows/automated-tests-publish-results.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Automated tests - publish results
on:
workflow_run:
workflows:
- Automated tests
types:
- completed

jobs:
get-pr-data:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.event == 'pull_request' }}
outputs:
pr-number: ${{ steps.set-env.outputs.pr-number }}
workflow-id: ${{ steps.set-env.outputs.workflow-id }}
steps:
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#using-data-from-the-triggering-workflow
- name: Download artifact
uses: actions/github-script@v6
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});

let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "pr-comment-data"
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr-comment-data.zip`, Buffer.from(download.data));
- name: Unzip artifact
run: unzip pr-comment-data.zip
- name: Set env variables
id: set-env
run: |
echo "pr-number=$(cat ./pr_number)" >> $GITHUB_OUTPUT
echo "workflow-id=$(cat ./workflow_id)" >> $GITHUB_OUTPUT
comment-pr:
runs-on: ubuntu-latest
permissions:
pull-requests: write
needs: get-pr-data
steps:
- name: Find Comment
uses: peter-evans/find-comment@v2
id: fc
with:
issue-number: ${{ needs.get-pr-data.outputs.pr-number }}
comment-author: "github-actions[bot]"
body-includes: Automated tests Summary
- name: Remove previous comment
if: steps.fc.outputs.comment-id != ''
uses: actions/github-script@v6
with:
script: |
github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: ${{ steps.fc.outputs.comment-id }}
})
- name: Passing tests comment
if: ${{ github.event.workflow_run.conclusion == 'success' }}
uses: peter-evans/create-or-update-comment@v2
with:
issue-number: ${{ needs.get-pr-data.outputs.pr-number }}
body: |
<h1>Automated tests Summary</h1>
<h3><strong>:white_check_mark:</strong> All the CI tests have passed!</h3>
- name: Failing tests comment
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
uses: peter-evans/create-or-update-comment@v2
with:
issue-number: ${{ needs.get-pr-data.outputs.pr-number }}
body: |
<h1> Automated tests Summary</h1>
<h3><strong>:rotating_light:</strong> Test workflow has failed</h3>

___

[Click here](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ needs.get-pr-data.outputs.workflow-id }}) to check the action test reports
99 changes: 99 additions & 0 deletions .github/workflows/build-plugin-deb-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
---
name: "📦 Build .deb package for plugin"
on:
push:
branches: [ "main"]
paths-ignore:
- debian/changelog
pull_request:
branches: [ "main" ]
paths-ignore:
- debian/changelog

jobs:
build-deb-package:
runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [ubuntu-22.04]

env:
OS_VERSION: ${{ matrix.os }}
defaults:
run:
working-directory: .
steps:
- name: Checkout source code
uses: actions/checkout@v4

- name: Extract and print repository name
run: |
echo "REPO_NAME=$(echo ${{ github.repository }} | cut -d'/' -f2)" >> $GITHUB_ENV

- name: Set up Node.js
run: |
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

- name: Verify Node.js installation
run: |
node -v
npm -v

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y devscripts debhelper

- name: Build Debian package
run: |
sudo dpkg-buildpackage -us -uc

- name: Create artifacts directory and move .deb files
run: |
mkdir -p artifacts
mv ../*.deb artifacts/ || mv ./*.deb artifacts/
ls -la artifacts

- name: Upload Debian Package
uses: actions/upload-artifact@v4
with:
name: "${{ env.REPO_NAME }}-${{ env.OS_VERSION }}"
path: artifacts/*.deb

release:
name: "Upload assets to release"
needs: build-deb-package
runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [ubuntu-22.04]

env:
OS_VERSION: ${{ matrix.os }}
if: ${{ github.ref_type == 'tag' }}
permissions:
contents: write
actions: read
steps:
- uses: actions/checkout@v4

- name: Extract and print repository name
run: |
echo "REPO_NAME=$(echo ${{ github.repository }} | cut -d'/' -f2)" >> $GITHUB_ENV

- uses: actions/download-artifact@v4
with:
name: "${{ env.REPO_NAME }}-${{ env.OS_VERSION }}"
path: "${{ env.REPO_NAME }}-${{ env.OS_VERSION }}"

- name: Create release asset archives
run: zip --junk-paths --recurse-paths --compression-method store "${{ env.REPO_NAME }}-${{ env.OS_VERSION }}.zip" "${{ env.REPO_NAME }}-${{ env.OS_VERSION }}"

- name: Upload release assets
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ github.ref_name }} "${{ env.REPO_NAME }}-${{ env.OS_VERSION }}.zip"

Loading
Loading