Merge pull request #2146 from freqtrade/dependabot/npm_and_yarn/main/… #6056
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: FreqUI CI | |
on: | |
push: | |
branches: | |
- main | |
- ci/** | |
- docker_container | |
pull_request: | |
branches: | |
- main | |
release: | |
types: [ published ] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ ubuntu-22.04 ] | |
node: [ "18", "20", "22", "23"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: 'pnpm' | |
- run: pnpm install | |
- name: Run Lint | |
run: pnpm run lint-ci | |
- name: Run type check | |
run: pnpm run typecheck | |
- name: Run Tests | |
run: pnpm run test:unit | |
# Playwright section | |
- name: Install Playwright Browsers | |
run: pnpm exec playwright install --with-deps | |
- name: Run Playwright tests | |
run: pnpm exec playwright test | |
- uses: actions/upload-artifact@v4 | |
if: ${{ !cancelled() }} | |
with: | |
name: playwright-report-${{ matrix.node }} | |
path: playwright-report/ | |
retention-days: 30 | |
# End Playwright section | |
- name: Build build | |
run: pnpm run build | |
- name: Archive artifacts | |
uses: actions/upload-artifact@v4 | |
# Ideally this would upload the zip file from below - but this action currently does not support this. | |
with: | |
name: freqUI-${{ matrix.node }} | |
path: | | |
dist | |
!dist/**/*.map | |
retention-days: 10 | |
- name: Zip files for release | |
if: github.event_name == 'release' && matrix.node == '18' | |
run: | | |
cd dist/ | |
zip -r ../freqUI.zip . | |
cd ../ | |
- name: Upload release binaries | |
uses: alexellis/upload-assets@0.4.1 | |
if: github.event_name == 'release' && matrix.node == '18' | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
with: | |
asset_paths: '["./freqUI.zip"]' | |
docker: | |
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/frequi' | |
needs: build | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
environment: | |
name: Production | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- linux/amd64 | |
- linux/arm/v6 | |
- linux/arm/v7 | |
- linux/arm64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Prepare Platform_pair | |
run: | | |
platform=${{ matrix.platform }} | |
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Download digests | |
uses: actions/download-artifact@v4 | |
with: | |
path: ./dist/ | |
# Use node-22 build. | |
name: freqUI-22 | |
- name: Build and push Docker image | |
id: build | |
uses: docker/build-push-action@v6 | |
with: | |
platforms: ${{ matrix.platform }} | |
context: . | |
file: ./docker/Dockerfile | |
tags: ${{ steps.meta.outputs.tags }} | |
outputs: type=image,name=freqtradeorg/frequi,push-by-digest=true,name-canonical=true,push=true | |
- name: Export digest | |
run: | | |
mkdir -p /tmp/digests | |
digest="${{ steps.build.outputs.digest }}" | |
touch "/tmp/digests/${digest#sha256:}" | |
- name: Upload digest | |
uses: actions/upload-artifact@v4 | |
with: | |
name: digests-${{ env.PLATFORM_PAIR }} | |
path: /tmp/digests/* | |
if-no-files-found: error | |
retention-days: 1 | |
docker-merge: | |
runs-on: ubuntu-latest | |
needs: | |
- docker | |
environment: | |
name: Production | |
permissions: | |
packages: write | |
steps: | |
- name: Download digests | |
uses: actions/download-artifact@v4 | |
with: | |
path: /tmp/digests | |
pattern: digests-* | |
merge-multiple: true | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
# list of Docker images to use as base name for tags | |
images: | | |
freqtradeorg/frequi | |
ghcr.io/freqtrade/frequi | |
# generate Docker tags based on the following events/attributes | |
tags: | | |
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} | |
type=semver,pattern={{version}} | |
type=ref,event=branch | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create manifest list and push | |
working-directory: /tmp/digests | |
run: | | |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ | |
$(printf 'freqtradeorg/frequi@sha256:%s ' *) | |
- name: Inspect image | |
run: | | |
docker buildx imagetools inspect freqtradeorg/frequi:${{ steps.meta.outputs.version }} |