Merge pull request #949 from grasdk/feature/localtest #1355
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: docker-buildx | |
on: | |
pull_request: | |
branches: | |
- master | |
- experimental | |
push: | |
branches: | |
- '**' | |
tags: | |
- '*.*' | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18.x] | |
steps: | |
- uses: getong/[email protected] | |
with: | |
mysql database: 'pigallery_test' | |
mysql root password: 'password' | |
mysql user: 'user' | |
mysql password: 'password' | |
- uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Verify MariaDB connection | |
env: | |
PORT: ${{ job.services.mariadb.ports[3306] }} | |
run: | | |
while ! mysqladmin ping -h"127.0.0.1" -P"$PORT" --silent; do | |
sleep 1 | |
done | |
- name: npm install and build | |
run: | | |
npm ci | |
npm run build | |
- name: lint | |
run: | | |
npm run lint | |
- name: test | |
run: | | |
npm test | |
npm run coverage | |
env: | |
MYSQL_HOST: localhost | |
MYSQL_USERNAME: root | |
MYSQL_PASSWORD: password | |
MYSQL_PORT: ${{ job.services.mariadb.ports[3306] }} | |
PORT: 35000 | |
CI: true | |
- name: Coveralls | |
uses: coverallsapp/github-action@v2 | |
- name: E2E test - Cypress run | |
uses: cypress-io/github-action@v6 | |
env: | |
DEBUG: '@cypress/github-action' | |
with: | |
start: npm run start-e2e-server | |
# after the test run completes store screenshots | |
- uses: actions/upload-artifact@v3 | |
if: failure() # Store screenshots only on failures | |
with: | |
name: cypress-screenshots | |
path: test/cypress/screenshots | |
if-no-files-found: ignore # 'warn' or 'error' are also available, defaults to `warn` | |
create-release: | |
runs-on: [ubuntu-latest] | |
needs: [test] | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v4 | |
- | |
name: Setup Node.js for use with actions | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- | |
name: Install Deps | |
run: npm install --unsafe-perm | |
- | |
name: Create Release | |
run: npm run create-release -- --skip-opt-packages=ffmpeg-static,ffprobe-static --force-opt-packages | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: pigallery2-release | |
path: release | |
build-dockerx: | |
runs-on: [ ubuntu-latest ] | |
needs: [ create-release ] | |
strategy: | |
matrix: | |
container: [alpine, debian-bullseye, debian-bookworm ] | |
include: | |
- container: alpine | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
- container: debian-bullseye | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
- container: debian-bookworm | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: pigallery2-release | |
path: pigallery2-release | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.REGISTRY_USERNAME }} | |
password: ${{ secrets.REGISTRY_PASSWORD }} | |
- name: Build docker | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
- name: Push experimental | |
if: ${{ github.ref == 'refs/heads/experimental' }} | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
push: true | |
tags: bpatrik/pigallery2:experimental-${{ matrix.container }} | |
- name: Push edge on new master commit | |
# github.ref: branches the format is refs/heads/<branch_name> PRs and Tags are different | |
if: ${{github.ref == 'refs/heads/master' }} | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
push: true | |
tags: bpatrik/pigallery2:edge-${{ matrix.container }} | |
- name: Push release on new Tag | |
if: ${{ startsWith(github.ref_type , 'tag') && !github.event.issue.pull_request && matrix.container != 'debian-bookworm'}} | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
push: true | |
tags: | | |
bpatrik/pigallery2:edge-${{ matrix.container }} | |
bpatrik/pigallery2:${{ github.ref_name }}-${{ matrix.container }} | |
bpatrik/pigallery2:latest-${{ matrix.container }} | |
- name: Push latest on new Tag | |
if: ${{ startsWith(github.ref_type, 'tag') && !github.event.issue.pull_request && matrix.container == 'debian-bookworm'}} | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
push: true | |
tags: | | |
bpatrik/pigallery2:edge-${{ matrix.container }} | |
bpatrik/pigallery2:${{ github.ref_name }}-${{ matrix.container }} | |
bpatrik/pigallery2:latest-${{ matrix.container }} | |
bpatrik/pigallery2:${{ github.ref_name }} | |
bpatrik/pigallery2:latest |