Skip to content

Commit

Permalink
Merge pull request #681 from hyperskill/release/1.36
Browse files Browse the repository at this point in the history
Release 1.36
  • Loading branch information
XanderZhu authored Oct 9, 2023
2 parents 97efac8 + 1308e6f commit 6b04b87
Show file tree
Hide file tree
Showing 242 changed files with 3,603 additions and 2,354 deletions.
4 changes: 2 additions & 2 deletions .github/actions/setup-ios/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ runs:
using: "composite"
steps:
- name: Setup Xcode version
uses: maxim-lobanov/setup-xcode@v1.5.1
uses: maxim-lobanov/setup-xcode@v1.6.0
with:
xcode-version: '14.3.1'
xcode-version: '15.0.0'

- name: Homebrew install git-crypt
run: brew install git-crypt
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/auto_author_assign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Auto Author Assign

on:
pull_request_target:
types: [opened, reopened]

permissions:
pull-requests: write

jobs:
assign-author:
runs-on: ubuntu-22.04
if: ${{ !github.event.pull_request.assignee }}
steps:
- uses: toshimaru/auto-author-assign@v2.0.1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
82 changes: 0 additions & 82 deletions .github/workflows/build.yml

This file was deleted.

185 changes: 185 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
name: CI

on:
push:
branches:
- '**'
- '!main'
- '!develop'
- '!hotfix/**'
- '!release/**'
workflow_dispatch:
inputs:
force_android:
description: 'Force Android'
required: false
default: false
type: boolean
force_shared:
description: 'Force shared'
required: false
default: false
type: boolean
force_ios:
description: 'Force iOS'
required: false
default: false
type: boolean

concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
gradle-wrapper-validation:
name: Gradle Wrapper Validation
runs-on: ubuntu-22.04
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4.1.0

- name: Gradle Wrapper Validation
uses: gradle/wrapper-validation-action@v1.1.0

files-changed:
name: Detect changes
needs: gradle-wrapper-validation
uses: ./.github/workflows/detect_changed_files_reusable_workflow.yml
with:
force_android: ${{ inputs.force_android || false }}
force_shared: ${{ inputs.force_shared || false }}
force_ios: ${{ inputs.force_ios || false }}

ktlint:
needs: files-changed
if: ${{ needs.files-changed.outputs.android == 'true' || needs.files-changed.outputs.shared == 'true' }}
name: Run ktlint
runs-on: ubuntu-22.04
timeout-minutes: 10

steps:
- name: Checkout
uses: actions/checkout@v4.1.0

- name: Setup CI
uses: ./.github/actions/setup-android

- name: Run ktlint
run: ./gradlew ktlintCheck --stacktrace
env:
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}

swiftlint:
needs: files-changed
if: ${{ needs.files-changed.outputs.ios == 'true' || needs.files-changed.outputs.shared == 'true' }}
name: Run SwiftLint
runs-on: macos-13
timeout-minutes: 10

steps:
- name: Checkout
uses: actions/checkout@v4.1.0

- name: Setup Ruby
uses: ruby/setup-ruby@v1.150.0
with:
ruby-version: '3.1.0'
bundler-cache: true
working-directory: './iosHyperskillApp'

- name: Cache Pods
uses: actions/cache@v3.3.2
id: cache-pods
with:
path: './iosHyperskillApp/Pods'
key: ${{ runner.os }}-pods-${{ hashFiles('iosHyperskillApp/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-
- name: Install Pods
if: steps.cache-pods.outputs.cache-hit != 'true'
working-directory: './iosHyperskillApp'
run: bundle exec pod install

- name: Run SwiftLint
working-directory: './iosHyperskillApp'
run: ./lint.sh

shared-unit-testing:
needs: [files-changed, ktlint]
if: ${{ needs.files-changed.outputs.shared == 'true' }}
name: Run shared unit tests
runs-on: ubuntu-22.04
timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4.1.0

- name: Setup CI
id: setup
uses: ./.github/actions/setup-android
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}

- name: Run unit tests
run: ./gradlew shared:testDebugUnitTest
env:
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup.outputs.is-git-crypt-unlocked }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}

android-unit-testing:
needs: [files-changed, ktlint]
if: ${{ needs.files-changed.outputs.android == 'true' }}
name: Run Android unit tests
runs-on: ubuntu-22.04
timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4.1.0

- name: Setup CI
id: setup
uses: ./.github/actions/setup-android
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}

- name: Run unit tests
run: ./gradlew androidHyperskillApp:testDebugUnitTest
env:
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup.outputs.is-git-crypt-unlocked }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}

build-ios:
needs: swiftlint
name: Build iOS
runs-on: macos-13
timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4.1.0

- name: Setup CI
id: setup
uses: ./.github/actions/setup-ios
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}

- name: Build
working-directory: './iosHyperskillApp'
run: bundle exec fastlane build install_pods:false
env:
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 60
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup.outputs.is-git-crypt-unlocked }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
64 changes: 64 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: CodeQL

on:
push:
branches: ["main"]
# Runs at 01:00 UTC every day
schedule:
- cron: "0 1 * * *"

concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true

jobs:
analyze:
name: Analyze
runs-on: ${{ (matrix.language == 'swift' && 'macos-13') || 'ubuntu-22.04' }}
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: ['java-kotlin', 'javascript-typescript', 'ruby']

steps:
- name: Checkout
uses: actions/checkout@v4.1.0

- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
queries: security-extended,security-and-quality
config: |
paths-ignore:
- iosHyperskillApp/iosHyperskillApp/MathJax.js
- iosHyperskillApp/iosHyperskillApp/highlight.js
- androidHyperskillApp/src/main/assets/scripts/highlight.pack.js
- androidHyperskillApp/build/**/*
- .gradle/**/*
- if: matrix.language == 'java-kotlin'
name: Setup Kotlin
id: setup-kotlin
uses: ./.github/actions/setup-android
with:
git-crypt-key: ${{ secrets.GIT_CRYPT_KEY }}

- if: matrix.language == 'java-kotlin'
name: Build Kotlin
run: ./gradlew assembleDebug
env:
IS_GIT_CRYPT_UNLOCKED: ${{ steps.setup-kotlin.outputs.is-git-crypt-unlocked }}
GITHUB_USER: ${{ github.actor }}
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"
Loading

0 comments on commit 6b04b87

Please sign in to comment.