Skip to content

Commit

Permalink
Add CI
Browse files Browse the repository at this point in the history
  • Loading branch information
winebarrel committed Nov 17, 2024
1 parent 4990e0b commit 62b375f
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 0 deletions.
70 changes: 70 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: CI

on:
push:
branches:
- main
pull_request:

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

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Lint
uses: norio-nomura/[email protected]

build:
name: Build and Analyse
runs-on: macos-14
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Switch Xcode
run: sudo xcode-select -s /Applications/Xcode_16.app
- name: Install SwiftLint
env:
SWIFTLINT_VERSION: 0.57.0
run: |
curl -sSfLO https://github.com/realm/SwiftLint/releases/download/${SWIFTLINT_VERSION}/portable_swiftlint.zip
unzip portable_swiftlint.zip swiftlint
- name: Install the Apple certificate and provisioning profile
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.provisionprofile
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
- name: Build and Analyse
run: |
xcodebuild build analyze -scheme Pulse -destination 'generic/platform=macOS' -allowProvisioningUpdates -configuration Debug | tee build.log
- name: SwiftLint Analyse
run: |
./swiftlint analyze --strict --compiler-log-path build.log
25 changes: 25 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
BUILD_DIR = ./build
APP_NAME = Pulse
ARCHIVE_PATH = $(BUILD_DIR)/$(APP_NAME).xcarchive
CONFIGURATION = Release
BUILD_LOG = ./build.log

.PHONY: build
build: clean
xcodebuild build analyze archive \
-destination "generic/platform=macOS" \
-scheme $(APP_NAME) \
-configuration $(CONFIGURATION) \
-archivePath $(ARCHIVE_PATH) \
| tee $(BUILD_LOG)

.PHONY: swiftlint-analyze
swiftlint-analyze:
$(MAKE) build CONFIGURATION=Debug
swiftlint analyze --strict --compiler-log-path $(BUILD_LOG)

.PHONY: clean
clean:
rm -rf $(BUILD_DIR)

# TODO: notary

0 comments on commit 62b375f

Please sign in to comment.