Merge pull request #693 from bpatrik/sharing-history #920
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] | |
services: | |
mariadb: | |
image: mariadb:lts | |
ports: | |
- 3306 | |
env: | |
MYSQL_USER: user | |
MYSQL_PASSWORD: password | |
MYSQL_DATABASE: pigallery_test | |
MYSQL_ROOT_PASSWORD: password | |
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
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 | |
env: | |
MYSQL_HOST: localhost | |
MYSQL_USERNAME: root | |
MYSQL_PASSWORD: password | |
MYSQL_PORT: ${{ job.services.mariadb.ports[3306] }} | |
PORT: 35000 | |
CI: true | |
create-release: | |
runs-on: [ubuntu-latest] | |
needs: [test] | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
- | |
name: Setup Node.js for use with actions | |
uses: actions/setup-node@v3 | |
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@v3 | |
with: | |
name: pigallery2-release | |
path: release | |
build-dockerx: | |
runs-on: [ ubuntu-latest ] | |
needs: [ create-release ] | |
strategy: | |
matrix: | |
container: [alpine, debian-buster, debian-bullseye ] | |
include: | |
- container: alpine | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
- container: debian-buster | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
- container: debian-bullseye | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: pigallery2-release | |
path: pigallery2-release | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to DockerHub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.REGISTRY_USERNAME }} | |
password: ${{ secrets.REGISTRY_PASSWORD }} | |
- name: Build docker | |
uses: docker/build-push-action@v3 | |
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@v3 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
push: true | |
tags: bpatrik/pigallery2:experimental-${{ matrix.container }} | |
- name: Push nightly 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@v3 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
push: true | |
tags: bpatrik/pigallery2:nightly-${{ matrix.container }} | |
- name: Push release on new Tag | |
if: ${{ startsWith(github.ref_type , 'tag') && !github.event.issue.pull_request && matrix.container != 'debian-bullseye'}} | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
push: true | |
tags: | | |
bpatrik/pigallery2:nightly-${{ 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-bullseye'}} | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
file: docker/${{ matrix.container }}/Dockerfile.build | |
platforms: ${{ matrix.platforms }} | |
push: true | |
tags: | | |
bpatrik/pigallery2:nightly-${{ matrix.container }} | |
bpatrik/pigallery2:${{ github.ref_name }}-${{ matrix.container }} | |
bpatrik/pigallery2:latest-${{ matrix.container }} | |
bpatrik/pigallery2:${{ github.ref_name }} | |
bpatrik/pigallery2:latest |