Merge pull request #786 from thomasnordquist/tnordquist/test-ci
chore: add ci / cd piplelines as github actions
This commit is contained in:
3
.github/CODEOWNERS
vendored
Normal file
3
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
package.ts @thomasnordquist
|
||||||
|
.github @thomasnordquist
|
||||||
|
scripts @thomasnordquist
|
||||||
29
.github/workflows/build-dockerfile.yml
vendored
Normal file
29
.github/workflows/build-dockerfile.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- release
|
||||||
|
- beta
|
||||||
|
paths:
|
||||||
|
- Dockerfile
|
||||||
|
- .github
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: ghcr.io/thomasnordquist/mqtt-explorer-ui-tests:latest
|
||||||
42
.github/workflows/cd.yml
vendored
Normal file
42
.github/workflows/cd.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- release
|
||||||
|
- beta
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
platform_matrix:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
build:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
task: linux
|
||||||
|
- os: windows-latest
|
||||||
|
task: win
|
||||||
|
# - os: macos-latest
|
||||||
|
# task: mac
|
||||||
|
runs-on: ${{ matrix.build.os }}
|
||||||
|
steps:
|
||||||
|
- if: matrix.build.os == 'ubuntu-latest'
|
||||||
|
run: sudo snap install snapcraft --classic
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
- run: npm install -g yarn
|
||||||
|
- run: yarn
|
||||||
|
- run: npx semantic-release
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- run: yarn build
|
||||||
|
- run: yarn prepare-release
|
||||||
|
# - run: yarn package ${{ matrix.build.task }}
|
||||||
|
# env:
|
||||||
|
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
|
||||||
38
.github/workflows/ci.yml
vendored
Normal file
38
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
on:
|
||||||
|
pull_request_target: # Use pull_request_target
|
||||||
|
branches: [master, beta, release]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/thomasnordquist/mqtt-explorer-ui-tests:latest
|
||||||
|
volumes:
|
||||||
|
- ./:/app
|
||||||
|
options: --user root
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install Packages
|
||||||
|
run: yarn install --frozen-lockfile
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
- name: Test
|
||||||
|
run: yarn test
|
||||||
|
- name: UI-Test
|
||||||
|
run: yarn ui-test
|
||||||
|
- name: Post-processing
|
||||||
|
run: ./scripts/prepareVideo.sh
|
||||||
|
- uses: hkusu/s3-upload-action@v2
|
||||||
|
id: upload # specify some ID for use in subsequent steps
|
||||||
|
with:
|
||||||
|
aws-access-key-id: ${{ vars.AWS_KEY_ID }}
|
||||||
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws-region: 'eu-central-1'
|
||||||
|
aws-bucket: ${{ vars.AWS_BUCKET }}
|
||||||
|
file-path: './ui-test.gif'
|
||||||
|
content-type: image/gif
|
||||||
|
output-file-url: 'true'
|
||||||
|
- name: Show URL
|
||||||
|
run: echo '${{ steps.upload.outputs.file-url }}'
|
||||||
|
id: artifact-upload-step
|
||||||
|
- run: echo '' >> $GITHUB_STEP_SUMMARY
|
||||||
29
.releaserc
Normal file
29
.releaserc
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"branches": [
|
||||||
|
"release",
|
||||||
|
{
|
||||||
|
"name": "beta",
|
||||||
|
"prerelease": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
"@semantic-release/commit-analyzer",
|
||||||
|
"semantic-release-export-data",
|
||||||
|
"@semantic-release/changelog",
|
||||||
|
[
|
||||||
|
"@semantic-release/npm",
|
||||||
|
{
|
||||||
|
"npmPublish": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"@semantic-release/git",
|
||||||
|
{
|
||||||
|
"assets": [
|
||||||
|
"package.json",
|
||||||
|
"yarn.lock"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
46
.travis.yml
46
.travis.yml
@@ -1,46 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
|
|
||||||
services:
|
|
||||||
- xvfb
|
|
||||||
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- node_modules
|
|
||||||
- $HOME/.cache/electron
|
|
||||||
- $HOME/.cache/electron-builder
|
|
||||||
- $HOME/.npm/_prebuilds
|
|
||||||
|
|
||||||
node_js:
|
|
||||||
- "10"
|
|
||||||
|
|
||||||
os:
|
|
||||||
- linux
|
|
||||||
- osx
|
|
||||||
|
|
||||||
osx_image: xcode10.2
|
|
||||||
|
|
||||||
dist: bionic
|
|
||||||
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
install:
|
|
||||||
- yarn install --frozen-lockfile
|
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get update && sudo apt-get -y install snap squashfs-tools && sudo snap install snapcraft --classic; fi;
|
|
||||||
|
|
||||||
script:
|
|
||||||
- yarn run build
|
|
||||||
- yarn lint
|
|
||||||
- yarn test
|
|
||||||
- export TRAVIS_BUILD_NUMBER="" # Override travis build number since it is uses for tagging the binary version https://github.com/electron-userland/electron-builder/issues/3730
|
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker run -e GH_TOKEN=$GH_TOKEN -e GIT_TAG=$TRAVIS_TAG --rm -v `pwd`:/app thomasnordquist/ui-test-recording-env sh -c "cd app && docker/testMounted.sh"; fi
|
|
||||||
- if [[ "$TRAVIS_TAG" != "" ]]; then yarn run prepare-release; fi
|
|
||||||
- |
|
|
||||||
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$TRAVIS_TAG" != "" ]]; then
|
|
||||||
openssl aes-256-cbc -d -in res/snapstore-credentials.enc -out credentials -k $SNAPSTORE_CREDENTIALS_DECRYPTION_KEY;
|
|
||||||
snapcraft login --with credentials;
|
|
||||||
rm credentials;
|
|
||||||
yarn run package linux;
|
|
||||||
fi
|
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]] && [[ "$TRAVIS_TAG" != "" ]]; then yarn run package -- mac; fi
|
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]] && [[ "$TRAVIS_TAG" != "" ]]; then unset CSC_LINK; yarn run package -- win; fi
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
FROM node:19.8.1-bullseye-slim
|
FROM node:20
|
||||||
|
|
||||||
RUN DEBIAN_FRONTEND="noninteractive" apt-get update \
|
RUN DEBIAN_FRONTEND="noninteractive" apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends nano ffmpeg xvfb git-core tmux locales mosquitto x11vnc
|
&& apt-get install -y --no-install-recommends ca-certificates nano ffmpeg xvfb git-core tmux locales mosquitto x11vnc
|
||||||
RUN apt-get install -yq --no-install-recommends libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3
|
RUN apt-get install -yq --no-install-recommends libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3
|
||||||
|
|
||||||
# Generate locales for TMUX
|
# Generate locales for TMUX
|
||||||
@@ -12,6 +12,5 @@ ENV LC_ALL en_US.UTF-8
|
|||||||
|
|
||||||
CMD /bin/bash
|
CMD /bin/bash
|
||||||
|
|
||||||
COPY cloneBuildAndTest.sh ./
|
|
||||||
VOLUME /app
|
VOLUME /app
|
||||||
EXPOSE 5900
|
EXPOSE 5900
|
||||||
15
Readme.md
15
Readme.md
@@ -7,10 +7,11 @@
|
|||||||
[](https://app.codacy.com/app/thomasnordquist/MQTT-Explorer?utm_source=github.com&utm_medium=referral&utm_content=thomasnordquist/MQTT-Explorer&utm_campaign=Badge_Grade_Dashboard)
|
[](https://app.codacy.com/app/thomasnordquist/MQTT-Explorer?utm_source=github.com&utm_medium=referral&utm_content=thomasnordquist/MQTT-Explorer&utm_campaign=Badge_Grade_Dashboard)
|
||||||
|
|
||||||
| | | |
|
| | | |
|
||||||
|:---:|:---:|:---:|
|
| :---------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: |
|
||||||
|[](https://mqtt-explorer.com/img/screen-composite.png)|[](https://mqtt-explorer.com/img/screen2.png)|[](https://mqtt-explorer.com/img/screen3.png)|
|
| [](https://mqtt-explorer.com/img/screen-composite.png) | [](https://mqtt-explorer.com/img/screen2.png) | [](https://mqtt-explorer.com/img/screen3.png) |
|
||||||
|
|
||||||
# The App has moved to [mqtt-explorer.com](https://mqtt-explorer.com)
|
# The App has moved to [mqtt-explorer.com](https://mqtt-explorer.com)
|
||||||
|
|
||||||
MQTT Explorer is a comprehensive and easy-to-use MQTT Client.
|
MQTT Explorer is a comprehensive and easy-to-use MQTT Client.
|
||||||
Downloads can be found at the link above.
|
Downloads can be found at the link above.
|
||||||
|
|
||||||
@@ -29,6 +30,7 @@ yarn start
|
|||||||
## Develop
|
## Develop
|
||||||
|
|
||||||
Launch Application
|
Launch Application
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm install -g yarn
|
npm install -g yarn
|
||||||
yarn
|
yarn
|
||||||
@@ -63,6 +65,15 @@ npm run build
|
|||||||
node dist/src/spec/webdriverio.js
|
node dist/src/spec/webdriverio.js
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Create a release
|
||||||
|
|
||||||
|
Create a PR to `release` branch.
|
||||||
|
There needs to be a "feat: some new feature" or "fix: some bugfix" commit for a new release to be created
|
||||||
|
|
||||||
|
## Create a beta release
|
||||||
|
|
||||||
|
Create a PR to `beta` branch. A "feat" or "fix" commit is necessary to create a new version.
|
||||||
|
|
||||||
## Write docs
|
## Write docs
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
git clone https://github.com/thomasnordquist/MQTT-Explorer.git /app
|
|
||||||
cd /app
|
|
||||||
git checkout travis-ui-tests
|
|
||||||
|
|
||||||
yarn install --frozen-lockfile
|
yarn install --frozen-lockfile
|
||||||
yarn build
|
yarn build
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "MQTT-Explorer",
|
"name": "MQTT-Explorer",
|
||||||
"version": "0.4.0-beta4",
|
"version": "0.4.0-beta.2",
|
||||||
"description": "Explore your message queues",
|
"description": "Explore your message queues",
|
||||||
"main": "dist/src/electron.js",
|
"main": "dist/src/electron.js",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
},
|
},
|
||||||
|
"private": "true",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "electron .",
|
"start": "electron .",
|
||||||
"test": "yarn test:app && yarn test:backend",
|
"test": "yarn test:app && yarn test:backend",
|
||||||
@@ -78,6 +79,9 @@
|
|||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@cspell/dict-typescript": "^3.1.2",
|
"@cspell/dict-typescript": "^3.1.2",
|
||||||
"@electron/notarize": "^2.3.0",
|
"@electron/notarize": "^2.3.0",
|
||||||
|
"@semantic-release/changelog": "^6.0.3",
|
||||||
|
"@semantic-release/commit-analyzer": "^12.0.0",
|
||||||
|
"@semantic-release/git": "^10.0.1",
|
||||||
"@types/chai": "^4.1.7",
|
"@types/chai": "^4.1.7",
|
||||||
"@types/fs-extra": "8",
|
"@types/fs-extra": "8",
|
||||||
"@types/lowdb": "^1.0.6",
|
"@types/lowdb": "^1.0.6",
|
||||||
@@ -100,6 +104,8 @@
|
|||||||
"playwright": "^1.43.0",
|
"playwright": "^1.43.0",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
"redux-thunk": "^2.3.0",
|
"redux-thunk": "^2.3.0",
|
||||||
|
"semantic-release": "^23.0.8",
|
||||||
|
"semantic-release-export-data": "^1.0.1",
|
||||||
"source-map-support": "^0.5.9",
|
"source-map-support": "^0.5.9",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"tslint": "^6.1.3",
|
"tslint": "^6.1.3",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import * as dotProp from 'dot-prop'
|
|||||||
|
|
||||||
const linuxAppImage: builder.CliOptions = {
|
const linuxAppImage: builder.CliOptions = {
|
||||||
x64: true,
|
x64: true,
|
||||||
ia32: true,
|
ia32: false,
|
||||||
armv7l: true,
|
armv7l: true,
|
||||||
arm64: false,
|
arm64: false,
|
||||||
projectDir: './build/clean',
|
projectDir: './build/clean',
|
||||||
@@ -50,9 +50,9 @@ const winAppx: builder.CliOptions = {
|
|||||||
|
|
||||||
const mac: builder.CliOptions = {
|
const mac: builder.CliOptions = {
|
||||||
x64: true,
|
x64: true,
|
||||||
ia32: true,
|
ia32: false,
|
||||||
armv7l: false,
|
armv7l: false,
|
||||||
arm64: false,
|
arm64: true,
|
||||||
projectDir: './build/clean',
|
projectDir: './build/clean',
|
||||||
publish: 'always',
|
publish: 'always',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,4 @@ tmux send-keys -t record q
|
|||||||
# Ensure video is written
|
# Ensure video is written
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
# Process the video
|
|
||||||
./scripts/prepareVideo.sh
|
|
||||||
|
|
||||||
exit $TEST_EXIT_CODE
|
exit $TEST_EXIT_CODE
|
||||||
|
|||||||
Reference in New Issue
Block a user