Release v3.41.0 #1698
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: macOS | |
# To debug a job, add the following step: | |
# - name: Debug with tmate | |
# uses: mxschmitt/action-tmate@v3 | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- '**' | |
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: | |
name: 'Fetch latest version tag of cozy-app-dev' | |
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 }} | |
unit: | |
needs: [cancel, docker_cache_key] | |
runs-on: macos-13 | |
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/[email protected] | |
with: | |
key: ${{ needs.docker_cache_key.outputs.key }} | |
bash: ${{ steps.install-bash.outputs.bash-path }} | |
- 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 DNS resolution for .localhost | |
uses: ./.github/actions/setup-dnsmasq | |
- name: Install dependencies | |
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }} | |
run: yarn install:all | |
- 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: Setup cozy-stack | |
run: docker-compose up -d | |
- 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 30 | |
done | |
- name: Unit tests | |
env: | |
COZY_DESKTOP_FS: ${{ matrix.fs }} | |
run: yarn test:unit --forbid-only | |
integration: | |
needs: [cancel, docker_cache_key] | |
runs-on: macos-13 | |
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 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/[email protected] | |
with: | |
key: ${{ needs.docker_cache_key.outputs.key }} | |
bash: ${{ steps.install-bash.outputs.bash-path }} | |
- 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 DNS resolution for .localhost | |
uses: ./.github/actions/setup-dnsmasq | |
- name: Install dependencies | |
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }} | |
run: yarn install:all | |
- 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: Setup cozy-stack | |
run: docker-compose up -d | |
- 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 30 | |
done | |
- name: Integration tests | |
env: | |
COZY_DESKTOP_FS: ${{ matrix.fs }} | |
run: yarn test:integration --forbid-only | |
scenarios: | |
needs: [cancel, docker_cache_key] | |
runs-on: macos-13 | |
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 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/[email protected] | |
with: | |
key: ${{ needs.docker_cache_key.outputs.key }} | |
bash: ${{ steps.install-bash.outputs.bash-path }} | |
- 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 DNS resolution for .localhost | |
uses: ./.github/actions/setup-dnsmasq | |
- name: Install dependencies | |
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }} | |
run: yarn install:all | |
- 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: Setup cozy-stack | |
run: docker-compose up -d | |
- 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 30 | |
done | |
- 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-13 | |
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 |