Adding first pass of ios publish #1
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: Shared Pipeline to build and publish Nuget Packages to NuGet Repos | ||
on: | ||
workflow_call: | ||
inputs: | ||
release_type: | ||
description: The type of version number to return. Must be one of [Patch, Minor or Major] | ||
required: true | ||
type: string | ||
vulnerability_failure_severity: | ||
description: The severity to fail the workflow if such vulnerability is detected. DO NOT override it unless a Jira ticket is raised. Must be one of ['CRITICAL', 'CRITICAL,HIGH' or 'CRITICAL,HIGH,MEDIUM'] (without space in between). | ||
type: string | ||
default: 'CRITICAL,HIGH' | ||
working_dir: | ||
description: The path to the directory for which the version should be determined. | ||
type: string | ||
default: '.' | ||
publish_vulnerabilities: | ||
type: string | ||
default: "true" | ||
env: | ||
REPO: ${{ github.event.repository.name }} | ||
jobs: | ||
release: | ||
name: Create Release | ||
runs-on: macos-latest | ||
permissions: | ||
pull-requests: write | ||
contents: write | ||
security-events: write | ||
packages: write | ||
steps: | ||
- name: Show Context | ||
run: | | ||
printenv | ||
echo "$GITHUB_CONTEXT" | ||
shell: bash | ||
env: | ||
GITHUB_CONTEXT: ${{ toJson(github) }} | ||
- name: Check branch and release type | ||
id: checkRelease | ||
uses: IABTechLab/uid2-shared-actions/actions/check_branch_and_release_type@v2 | ||
with: | ||
release_type: ${{ inputs.release_type }} | ||
- name: Checkout repo | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- name: Vulnerability Scan | ||
uses: IABTechLab/uid2-shared-actions/actions/vulnerability_scan_filesystem@v2 | ||
with: | ||
scan_severity: HIGH,CRITICAL | ||
failure_severity: ${{ inputs.vulnerability_failure_severity }} | ||
publish_vulnerabilities: ${{ inputs.publish_vulnerabilities }} | ||
- name: Set version number | ||
id: version | ||
uses: IABTechLab/uid2-shared-actions/actions/version_number@v2 | ||
with: | ||
type: ${{ inputs.release_type }} | ||
branch_name: ${{ github.ref }} | ||
working_dir: ${{ inputs.working_dir }} | ||
- name: Lint code | ||
run: swiftlint lint --config .swiftlint.yml --reporter github-actions-logging | ||
- name: Update UID2.Client.ios | ||
run: | | ||
current_version=$(grep -o '<string>.*</string>' ${{ inputs.working_dir }}/Sources/UID2/Properties/sdk_properties.plist | head -1 | sed 's/<string>\(.*\)<\/string>/\1/') | ||
new_version=${{ steps.version.outputs.new_version }} | ||
sed -i "s/$current_version/$new_version/g" ${{ inputs.working_dir }}/Sources/UID2/Properties/sdk_properties.plist | ||
echo "Version number updated from $current_version to $new_version" | ||
- name: Build, Test | ||
-- ? Should we make the iOS version configurable? Is that even possible | ||
run: | | ||
cd ./${{ inputs.working_dir }} | ||
xcodebuild -scheme UID2 -sdk iphonesimulator16.2 -destination "OS=16.2,name=iPhone 14" | ||
xcodebuild test -scheme UID2Tests -sdk iphonesimulator16.2 -destination "OS=16.2,name=iPhone 14" | ||
- name: Commit sdk_properties, version.json and set tag | ||
uses: IABTechLab/uid2-shared-actions/actions/commit_pr_and_merge@v2 | ||
with: | ||
add: '${{ inputs.working_dir }}/Sources/UID2/Properties/sdk_properties.plist ${{ inputs.working_dir }}/version.json' | ||
message: 'Released ${{ inputs.release_type }} version: ${{ steps.version.outputs.new_version }}' | ||
tag: v${{ steps.version.outputs.new_version }} | ||
- name: Build Changelog | ||
id: github_release | ||
uses: mikepenz/release-changelog-builder-action@v4 | ||
with: | ||
toTag: v${{ steps.version.outputs.new_version }} | ||
configurationJson: | | ||
{ | ||
"template": "#{{CHANGELOG}}\n## NuGet\n```\n<dependency>\n <groupId>com.uid2</groupId>\n <artifactId>${{ env.REPO }}</artifactId>\n <version>${{ steps.version.outputs.new_version }}</version>\n</dependency>\n```\n\n## Nuget Files\n- [UID2.Client.${{ steps.version.outputs.new_version }}.nupkg](https://www.nuget.org/packages/UID2.Client)\n\n## Changelog\n#{{UNCATEGORIZED}}", | ||
"pr_template": " - #{{TITLE}} - ( PR: ##{{NUMBER}} )" | ||
} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Create Release | ||
uses: softprops/action-gh-release@v2 | ||
with: | ||
name: v${{ steps.version.outputs.new_version }} | ||
body: ${{ steps.github_release.outputs.changelog }} | ||
draft: true |