Skip to content

ci: Fix dependencies installation with Python 3.12 #1573

ci: Fix dependencies installation with Python 3.12

ci: Fix dependencies installation with Python 3.12 #1573

Workflow file for this run

name: macOS
# To debug a job, add the following step:
# - name: Debug with tmate
# uses: mxschmitt/action-tmate@v3
on:
push:
branches:
- master
pull_request:
paths-ignore:
- '.github/workflows/linux.yaml'
env:
COZY_DESKTOP_DIR: "${{ github.workspace }}/cozy-desktop"
COZY_STACK_STORAGE: "${{ github.workspace }}/storage"
COZY_URL: "http://cozy.localhost:8080"
COZY_PASSPHRASE: "cozy"
GO111MODULE: "on"
NO_BREAKPOINTS: "1"
NODE_ENV: "test"
COZY_DESKTOP_HEARTBEAT: "1000"
DISPLAY: ":99.0"
NODE_VERSION: "20.15.1"
GO_VERSION: "1.19"
COUCHDB_VERSION: "3.2.2"
COUCHDB_USER: "admin"
COUCHDB_PASSWORD: "password"
OS_USERNAME: "${{ secrets.SWIFT_OS_USERNAME }}"
OS_PASSWORD: "${{ secrets.SWIFT_OS_PASSWORD }}"
OS_PROJECT_NAME: "${{ secrets.SWIFT_OS_PROJECT_NAME }}"
OS_REGION_NAME: "GRA"
OS_USER_DOMAIN_NAME: "Default"
OS_PROJECT_DOMAIN_NAME: "Default"
OS_AUTH_URL: "https://auth.cloud.ovh.net/v3"
OS_IDENTITY_API_VERSION: "3"
jobs:
cancel:
name: 'Cancel Previous Runs'
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: styfle/cancel-workflow-action@5df4e62aed82ea1f787d2a02ab3dbfcaa49ffdd1
docker_cache_key:
runs-on: ubuntu-latest
steps:
- id: cozy-app-dev
run: |
version=$(curl -Ls --fail -q "https://hub.docker.com/v2/repositories/cozy/cozy-app-dev/tags/?page_size=1000" | \
jq '.results | .[] | .name' -r | \
head -n 2 | tail -1)
echo "key=docker-${{ runner.os }}-${{ hashFiles('docker-compose.yml') }}-$(echo $version)" >> $GITHUB_OUTPUT
outputs:
key: ${{ steps.cozy-app-dev.outputs.key }}
#cleanup:
# needs: cancel
# name: 'Cleanup Swift'
# runs-on: ubuntu-latest
# timeout-minutes: 3
# steps:
# - run: |
# pip install python-swiftclient python-keystoneclient
# swift delete -a
unit:
needs: [docker_cache_key] #, cleanup]
runs-on: macos-12
name: Unit tests
strategy:
matrix:
fs: ['APFS']
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: |
${{ github.workspace }}/node_modules
~/.cache/electron
~/.cache/electron-builder
key: ${{ runner.os }}-v${{ env.NODE_VERSION }}-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }}
- name: Setup Docker
uses: douglascamata/setup-docker-macos-action@v1-alpha
- name: Install Bash for docker-cache
id: install-bash
run: |
brew install bash
echo "bash-path=$(brew --prefix)/bin/bash" >> $GITHUB_OUTPUT
- name: Cache Docker images.
uses: cozy-labs/docker-cache@0.7.0
with:
key: ${{ needs.docker_cache_key.outputs.key }}
bash: ${{ steps.install-bash.outputs.bash-path }}
- name: Setup cozy-stack
run: docker-compose up --detach
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Setup golang
uses: actions/setup-go@v3
with:
go-version: ${{ env.GO_VERSION }}
- name: Setup python
run: pip install setuptools
#- name: Setup CouchDB
# id: setup-couchdb
# uses: ./.github/actions/setup-couchdb
# with:
# couchdb-version: ${{ env.COUCHDB_VERSION }}
# couchdb-user: ${{ env.COUCHDB_USER }}
# couchdb-password: ${{ env.COUCHDB_PASSWORD }}
#- name: Setup cozy-stack
# uses: ./.github/actions/setup-cozy-stack
# with:
# couchdb-url: ${{ steps.setup-couchdb.outputs.couchdb-url }}
- name: Setup DNS resolution for .localhost
uses: ./.github/actions/setup-dnsmasq
- name: Setup local env
env:
COZY_DESKTOP_FS: ${{ matrix.fs }}
run: |
hdiutil create -megabytes 50 -fs "$COZY_DESKTOP_FS" -volname cozy-desktop "$COZY_DESKTOP_DIR"
hdiutil attach "${COZY_DESKTOP_DIR}.dmg" -mountpoint "$COZY_DESKTOP_DIR"
echo "NODE_ENV=test" > "${{ github.workspace }}/.env.test"
- name: Install dependencies
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: yarn install:all
#- name: Start Xvfb
# FIXME: does not work because xvfb is not available.
# If it turns out necessary, install XQuartz: brew install XQuartz
#run: sudo Xvfb :99 -ac -screen 0 1024x768x8 &
- name: Setup test config
run: |
until docker exec cozy-desktop-stack /cozy-desktop/test/setup.sh
do
echo "Waiting for cozy-stack to be running..."
sleep 1
done
- name: Unit tests
env:
COZY_DESKTOP_FS: ${{ matrix.fs }}
run: yarn test:unit --forbid-only
#integration:
# needs: cleanup
# runs-on: macos-12
# name: Integration tests
# strategy:
# matrix:
# fs: ['APFS']
# fail-fast: false
# steps:
# - uses: actions/checkout@v3
# - name: Cache node modules
# id: cache-node-modules
# uses: actions/cache@v3
# env:
# cache-name: cache-node-modules
# with:
# path: |
# ${{ github.workspace }}/node_modules
# ~/.cache/electron
# ~/.cache/electron-builder
# key: ${{ runner.os }}-v${{ env.NODE_VERSION }}-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }}
# - name: Setup node
# uses: actions/setup-node@v3
# with:
# node-version: ${{ env.NODE_VERSION }}
# - name: Setup golang
# uses: actions/setup-go@v3
# with:
# go-version: ${{ env.GO_VERSION }}
# - name: Setup python
# run: pip install setuptools
# - name: Setup CouchDB
# id: setup-couchdb
# uses: ./.github/actions/setup-couchdb
# with:
# couchdb-version: ${{ env.COUCHDB_VERSION }}
# couchdb-user: ${{ env.COUCHDB_USER }}
# couchdb-password: ${{ env.COUCHDB_PASSWORD }}
# - name: Setup cozy-stack
# uses: ./.github/actions/setup-cozy-stack
# with:
# couchdb-url: ${{ steps.setup-couchdb.outputs.couchdb-url }}
# - name: Setup DNS resolution for .localhost
# uses: ./.github/actions/setup-dnsmasq
# - name: Setup local env
# env:
# COZY_DESKTOP_FS: ${{ matrix.fs }}
# run: |
# hdiutil create -megabytes 50 -fs "$COZY_DESKTOP_FS" -volname cozy-desktop "$COZY_DESKTOP_DIR"
# hdiutil attach "${COZY_DESKTOP_DIR}.dmg" -mountpoint "$COZY_DESKTOP_DIR"
# echo "NODE_ENV=test" > "${{ github.workspace }}/.env.test"
# - name: Install dependencies
# if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
# run: yarn install:all
# - name: Start Xvfb
# run: sudo Xvfb :99 -ac -screen 0 1024x768x8 &
# - name: Integration tests
# env:
# COZY_DESKTOP_FS: ${{ matrix.fs }}
# run: yarn test:integration --forbid-only
#scenarios:
# needs: cleanup
# runs-on: macos-12
# name: Scenarios
# strategy:
# matrix:
# stopped_client: ['', 'STOPPED']
# fs: ['APFS', 'HFS+']
# fail-fast: false
# steps:
# - uses: actions/checkout@v3
# - name: Cache node modules
# id: cache-node-modules
# uses: actions/cache@v3
# env:
# cache-name: cache-node-modules
# with:
# path: |
# ${{ github.workspace }}/node_modules
# ~/.cache/electron
# ~/.cache/electron-builder
# key: ${{ runner.os }}-v${{ env.NODE_VERSION }}-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }}
# - name: Setup node
# uses: actions/setup-node@v3
# with:
# node-version: ${{ env.NODE_VERSION }}
# - name: Setup golang
# uses: actions/setup-go@v3
# with:
# go-version: ${{ env.GO_VERSION }}
# - name: Setup python
# run: pip install setuptools
# - name: Setup CouchDB
# id: setup-couchdb
# uses: ./.github/actions/setup-couchdb
# with:
# couchdb-version: ${{ env.COUCHDB_VERSION }}
# couchdb-user: ${{ env.COUCHDB_USER }}
# couchdb-password: ${{ env.COUCHDB_PASSWORD }}
# - name: Setup cozy-stack
# uses: ./.github/actions/setup-cozy-stack
# with:
# couchdb-url: ${{ steps.setup-couchdb.outputs.couchdb-url }}
# - name: Setup DNS resolution for .localhost
# uses: ./.github/actions/setup-dnsmasq
# - name: Setup local env
# env:
# COZY_DESKTOP_FS: ${{ matrix.fs }}
# run: |
# until hdiutil create -megabytes 100 -fs "$COZY_DESKTOP_FS" -volname cozy-desktop "$COZY_DESKTOP_DIR"
# do
# sleep 1
# done
# until hdiutil attach "${COZY_DESKTOP_DIR}.dmg" -mountpoint "$COZY_DESKTOP_DIR"
# do
# sleep 1
# done
# echo "NODE_ENV=test" > "${{ github.workspace }}/.env.test"
# - name: Install dependencies
# if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
# run: yarn install:all
# - name: Start Xvfb
# run: sudo Xvfb :99 -ac -screen 0 1024x768x8 &
# - name: Scenarios
# env:
# STOPPED_CLIENT: ${{ matrix.stopped_client == 'STOPPED' }}
# COZY_DESKTOP_FS: ${{ matrix.fs }}
# run: yarn test:scenarios --forbid-only
#build:
# needs: cancel
# runs-on: macos-12
# name: Build packages
# steps:
# - uses: actions/checkout@v3
# - name: Cache node modules
# id: cache-node-modules
# uses: actions/cache@v3
# env:
# cache-name: cache-node-modules
# with:
# path: |
# ${{ github.workspace }}/node_modules
# ~/.cache/electron
# ~/.cache/electron-builder
# key: ${{ runner.os }}-v${{ env.NODE_VERSION }}-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }}
# - name: Setup node
# uses: actions/setup-node@v3
# with:
# node-version: ${{ env.NODE_VERSION }}
# - name: Setup python
# run: pip install setuptools
# - name: Install dependencies
# if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
# run: yarn install:all
# - name: Build assets
# run: yarn build
# - name: Build package
# uses: ./.github/actions/build-and-publish
# with:
# gh-token: "${{ secrets.github_token }}"
# mac-cert: "${{ secrets.mac_cert }}"
# mac-cert-password: "${{ secrets.mac_cert_password }}"
# apple-id: "${{ secrets.apple_id }}"
# apple-id-password: "${{ secrets.apple_id_password }}"
# apple-team-id: "${{ secrets.apple_team_id }}"
# - name: Save artifacts
# if: ${{ github.event_name == 'pull_request' }}
# uses: actions/upload-artifact@v3
# with:
# name: Binaries
# path: |
# ${{ github.workspace }}/dist/latest-mac.yml
# ${{ github.workspace }}/dist/Cozy[- ]Drive[- ]*.dmg
# ${{ github.workspace }}/dist/Cozy[- ]Drive[- ]*-mac.zip
# retention-days: 5