Skip to content

refactor: use fastify (#661) #690

refactor: use fastify (#661)

refactor: use fastify (#661) #690

name: Publish rolling build
on:
push:
branches:
- master
jobs:
npm:
runs-on: ubuntu-20.04
strategy:
matrix:
node: [20]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
registry-url: 'https://registry.npmjs.org'
cache: npm
- run: npm ci
- name: Tag rolling release
id: tag_release
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
build_version=0.0.0-master.`git rev-parse --short HEAD`
npm version --no-git-tag-version $build_version
echo ::set-output name=BUILD_VERSION::$build_version
- name: Use @jesec scope
run: |
jq '.name = "@jesec/flood"' package.json > package.new.json
mv package.new.json package.json
- run: npm pack
- run: npm publish --access public ./*.tgz
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Upload tarball
uses: actions/upload-artifact@v2
with:
name: flood
path: ./*.tgz
if-no-files-found: error
- name: Wait until the package is available
uses: nick-invision/retry@v2
with:
command: curl -f -s https://registry.npmjs.org/@jesec/flood/${{ steps.tag_release.outputs.BUILD_VERSION }} &>/dev/null
timeout_minutes: 30
max_attempts: 15
retry_wait_seconds: 15
- run: sleep 20
docker:
needs: npm
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Parse version
id: parse_version
run: |
echo ::set-output name=BUILD_VERSION::0.0.0-master.`git rev-parse --short HEAD`
- name: Publish flood:master to Docker Hub
uses: docker/build-push-action@v4
with:
context: .
file: ./distribution/containers/Dockerfile.release
platforms: linux/amd64,linux/arm64
push: true
tags: jesec/flood:master
build-args: |
PACKAGE=@jesec/flood
VERSION=${{ steps.parse_version.outputs.BUILD_VERSION }}
- run: sleep 10
- name: Publish rtorrent-flood to Docker Hub
uses: docker/build-push-action@v4
with:
context: .
file: ./distribution/containers/Dockerfile.rtorrent
platforms: linux/amd64,linux/arm64
push: true
tags: |
jesec/rtorrent-flood:master
jesec/rtorrent-flood:latest
build-args: |
FLOOD_VERSION=master
RTORRENT_VERSION=master
docker-dbg:
runs-on: ubuntu-20.04
strategy:
matrix:
node: [20]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
registry-url: 'https://registry.npmjs.org'
cache: npm
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Tag rolling release
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
npm version --no-git-tag-version 0.0.0-master.`git rev-parse --short HEAD`
- name: Publish flood:master-dbg to Docker Hub
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
target: flood
platforms: linux/amd64,linux/arm64
push: true
tags: jesec/flood:master-dbg
- name: Publish rtorrent-flood:master-dbg to Docker Hub
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
target: rtorrent-flood
platforms: linux/amd64,linux/arm64
push: true
tags: jesec/rtorrent-flood:master-dbg
pkg:
needs: npm
runs-on: ubuntu-20.04
strategy:
matrix:
node: [20]
steps:
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
registry-url: 'https://registry.npmjs.org'
- name: Set up QEMU
run: |
sudo apt update
sudo apt install --reinstall -y qemu-user-static
- name: Install ldid
run: |
sudo wget https://github.com/jesec/ldid-static/releases/download/v2.1.4/ldid-amd64 -O /usr/local/bin/ldid
sudo chmod +x /usr/local/bin/ldid
- run: sudo npm install -g pkg
- uses: actions/download-artifact@v2
with:
name: flood
- name: Extract tarball
run: |
tar xvf *.tgz --strip-components=1
- name: Build executables
run: |
pkg . --out-path dist-pkg
- name: Rename linuxstatic to linux
run: |
mv dist-pkg/flood-linuxstatic-x64 dist-pkg/flood-linux-x64
mv dist-pkg/flood-linuxstatic-arm64 dist-pkg/flood-linux-arm64
- name: 'Upload executable: Linux x64'
uses: actions/upload-artifact@v2
with:
name: flood-linux-x64
path: dist-pkg/flood-linux-x64
if-no-files-found: error
- name: 'Upload executable: Linux arm64'
uses: actions/upload-artifact@v2
with:
name: flood-linux-arm64
path: dist-pkg/flood-linux-arm64
if-no-files-found: error
- name: 'Upload executable: MacOS x64'
uses: actions/upload-artifact@v2
with:
name: flood-macos-x64
path: dist-pkg/flood-macos-x64
if-no-files-found: error
- name: 'Upload executable: MacOS arm64'
uses: actions/upload-artifact@v2
with:
name: flood-macos-arm64
path: dist-pkg/flood-macos-arm64
if-no-files-found: error
- name: 'Upload executable: Windows x64'
uses: actions/upload-artifact@v2
with:
name: flood-win-x64.exe
path: dist-pkg/flood-win-x64.exe
if-no-files-found: error
- name: 'Upload executable: Windows arm64'
uses: actions/upload-artifact@v2
with:
name: flood-win-arm64.exe
path: dist-pkg/flood-win-arm64.exe
if-no-files-found: error
docker-distroless:
needs: pkg
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: actions/download-artifact@v2
with:
name: flood-linux-arm64
path: artifacts
- uses: actions/download-artifact@v2
with:
name: flood-linux-x64
path: artifacts
- run: find .
- name: Publish flood:master-distroless to Docker Hub
uses: docker/build-push-action@v4
with:
context: .
file: ./distribution/containers/Dockerfile.distroless
target: flood
platforms: linux/amd64,linux/arm64
push: true
tags: jesec/flood:master-distroless
- name: Publish rtorrent-flood:master-distroless to Docker Hub
uses: docker/build-push-action@v4
with:
context: .
file: ./distribution/containers/Dockerfile.distroless
target: rtorrent-flood
platforms: linux/amd64,linux/arm64
push: true
tags: jesec/rtorrent-flood:master-distroless