fixup! bun.lockb: Update #13
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
schedule: | |
# Run every 6 days to help us stay on our toes | |
- cron: '0 0 */6 * *' | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: | | |
sudo apt install -y xvfb | |
- uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Run bun | |
run: | | |
bun install --frozen-lockfile | |
bun run lint | |
bun run typecheck | |
bun run build | |
xvfb-run --auto-servernum bun test:ci | |
deploy-page: | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Run bun | |
run: | | |
bun install --frozen-lockfile | |
bun run build | |
- name: Deploy 🚀 | |
uses: JamesIves/[email protected] | |
if: success() && github.event_name != 'pull_request' | |
with: | |
branch: gh-pages | |
folder: dist | |
deploy-electron: | |
needs: test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: macos-latest | |
suffix: macos | |
extension: dmg | |
- os: ubuntu-latest | |
suffix: linux | |
extension: AppImage | |
- os: windows-latest | |
suffix: windows | |
extension: exe | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Build electron | |
run: | | |
bun install --frozen-lockfile | |
bun run build | |
bun deploy:electron | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cockpit-${{ matrix.suffix }} | |
path: dist/cockpit*.${{ matrix.extension }} | |
if-no-files-found: error | |
- name: Upload Release | |
uses: svenstaro/upload-release-action@v2 | |
if: startsWith(github.ref, 'refs/tags/') && success() | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/cockpit*.${{ matrix.extension }} | |
tag: ${{ github.ref }} | |
overwrite: true | |
prerelease: true | |
file_glob: true | |
deploy-flatpak: | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Install flatpak | |
run: | | |
sudo apt update | |
sudo apt install -y --fix-missing flatpak flatpak-builder | |
sudo flatpak remote-add --system flathub https://flathub.org/repo/flathub.flatpakrepo | |
flatpak remote-add --user flathub https://flathub.org/repo/flathub.flatpakrepo || true | |
- name: Build electron | |
run: | | |
bun install --frozen-lockfile | |
bun run build | |
env DEBUG="@malept/flatpak-bundler" bun deploy:flatpak | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cockpit-flatpak | |
path: dist/cockpit*.flatpak | |
if-no-files-found: error | |
- name: Upload Release | |
uses: svenstaro/upload-release-action@v2 | |
if: startsWith(github.ref, 'refs/tags/') && success() | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: dist/cockpit*.flatpak | |
tag: ${{ github.ref }} | |
overwrite: true | |
prerelease: true | |
file_glob: true | |
deploy-blueos-extension: | |
needs: test | |
runs-on: ubuntu-latest | |
env: | |
PLATFORMS: "linux/arm/v7,linux/arm64/v8,linux/amd64" | |
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
steps: | |
- name: Login to Docker Hub | |
if: success() && github.event_name != 'pull_request' | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Prepare | |
id: prepare | |
run: | | |
# Deploy image with the name of the branch, if the build is a git tag, replace tag with the tag name. | |
# If git tag matches semver, append latest tag to the push. | |
DOCKER_IMAGE=${DOCKER_USERNAME:-bluerobotics}/cockpit | |
VERSION=${GITHUB_REF##*/} | |
if [[ $GITHUB_REF == refs/tags/* ]]; then | |
VERSION=${GITHUB_REF#refs/tags/} | |
fi | |
TAGS="--tag ${DOCKER_IMAGE}:${VERSION}" | |
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then | |
TAGS="$TAGS --tag ${DOCKER_IMAGE}:latest" | |
fi | |
echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT | |
echo "version=${VERSION}" >> $GITHUB_OUTPUT | |
echo "buildx_args=${TAGS} --file Dockerfile ." >> $GITHUB_OUTPUT | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
with: | |
platforms: all | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
version: latest | |
- name: Docker Buildx (build) | |
run: | | |
docker buildx build \ | |
--output "type=image,push=false" \ | |
--platform $PLATFORMS \ | |
${{ steps.prepare.outputs.buildx_args }} | |
- name: Docker Buildx (push) | |
if: success() && github.event_name != 'pull_request' | |
run: | | |
docker buildx build \ | |
--output "type=image,push=true" \ | |
--platform $PLATFORMS \ | |
${{ steps.prepare.outputs.buildx_args }} | |
- name: Inspect image | |
if: always() && github.event_name != 'pull_request' | |
run: | | |
docker buildx imagetools \ | |
inspect ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }} |