name: docker-buildx on: pull_request: branches: master push: branches: master tags: - '*.*' jobs: test: runs-on: ubuntu-latest strategy: matrix: node-version: [12.x, 13.x, 14.x] services: mariadb: image: mariadb:latest 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@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 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, build, and test run: | npm ci npm run build --if-present 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@v2 - name: Setup Node.js for use with actions uses: actions/setup-node@v2 with: node-version: 12 - name: Install Deps run: npm install --unsafe-perm - name: Create Release run: npm run create-release -- --skip-opt-packages=ffmpeg,ffprobe --force-opt-packages - uses: actions/upload-artifact@v2 with: name: pigallery2-release path: release build-alpine: runs-on: [ubuntu-latest] needs: [create-release] steps: - name: Set tag id: vars run: echo ::set-output name=tag::$(echo ${GITHUB_REF:10}) && echo ::set-output name=type::$(echo ${GITHUB_REF:5}) - name: Checkout uses: actions/checkout@v2 - uses: actions/download-artifact@v2 with: name: pigallery2-release path: pigallery2-release - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push alpine nightly if: startsWith(steps.vars.outputs.type , 'head') uses: docker/build-push-action@v2 with: context: . file: docker/alpine/Dockerfile.build platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: bpatrik/pigallery2:nightly-alpine - name: Build and push alpine release if: startsWith(steps.vars.outputs.type , 'tag') env: RELEASE_VERSION: ${{ steps.vars.outputs.tag }} uses: docker/build-push-action@v2 with: context: . file: docker/alpine/Dockerfile.build platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: | bpatrik/pigallery2:nightly-alpine bpatrik/pigallery2:$RELEASE_VERSION-alpine bpatrik/pigallery2:latest-alpine build-stretch: runs-on: [ubuntu-latest] needs: [create-release] steps: - name: Set tag id: vars run: echo ::set-output name=tag::$(echo ${GITHUB_REF:10}) && echo ::set-output name=type::$(echo ${GITHUB_REF:5}) - name: Checkout uses: actions/checkout@v2 - uses: actions/download-artifact@v2 with: name: pigallery2-release path: pigallery2-release - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push debian stretch nightly if: startsWith(steps.vars.outputs.type , 'head') uses: docker/build-push-action@v2 with: context: . file: docker/debian-stretch/Dockerfile.build platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: bpatrik/pigallery2:nightly-stretch - name: Build and push debian stretch release if: startsWith(steps.vars.outputs.type , 'tag') env: RELEASE_VERSION: ${{ steps.vars.outputs.tag }} uses: docker/build-push-action@v2 with: context: . file: docker/debian-stretch/Dockerfile.build platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: | bpatrik/pigallery2:nightly-stretch bpatrik/pigallery2:$RELEASE_VERSION-stretch bpatrik/pigallery2:latest-stretch build-buster: runs-on: [ubuntu-latest] needs: [create-release] steps: - name: Set tag id: vars run: echo ::set-output name=tag::$(echo ${GITHUB_REF:10}) && echo ::set-output name=type::$(echo ${GITHUB_REF:5}) - name: Checkout uses: actions/checkout@v2 - uses: actions/download-artifact@v2 with: name: pigallery2-release path: pigallery2-release - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push debian buster nightly if: startsWith(steps.vars.outputs.type , 'head') uses: docker/build-push-action@v2 with: context: . file: docker/debian-stretch/Dockerfile.build platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: bpatrik/pigallery2:nightly-buster - name: Build and push debian buster release if: startsWith(steps.vars.outputs.type , 'tag') env: RELEASE_VERSION: ${{ steps.vars.outputs.tag }} uses: docker/build-push-action@v2 with: context: . file: docker/debian-buster/Dockerfile.build platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: | bpatrik/pigallery2:nightly-buster bpatrik/pigallery2:$RELEASE_VERSION bpatrik/pigallery2:latest