Skip to content
This repository was archived by the owner on Feb 24, 2025. It is now read-only.

Commit ad924b1

Browse files
committed
Merge branch 'main' into sam/remove-cgnat
# By Alexey Martemyanov (10) and others # Via GitHub * main: (39 commits) Add Peoplewhiz data broker (#2310) Integrate confirm entitlements endpoint for macOS App Store purchase (#2325) Make dbSaveBloomFilterError pixel daily and continuous (#2299) Subscription UI updates (#2303) Add email pattern on opt-out pixel (#2307) Use compile-time checked generated asset names (#2177) fix bundle name in breakByRaisingSigInt (#2319) BSK update for iOS autofill support to delete all passwords (#2254) Bump BrowserServicesKit (#2309) Bump version to 1.78.0 (132) Fix crash on popup window display; adjust naming (#2315) Bump version to 1.78.0 (131) Set marketing version to 1.78.0 Update embedded files Fix parsing commit log (#2311) DBP: Set correct duration of submit-success pixel (#2308) Publish subsequent internal releases right after building (#2306) DBP disable pixel changes (#2293) Remove duplicated broker items (#2294) fix tab title not updated (#2302) ... # Conflicts: # DuckDuckGo.xcodeproj/project.pbxproj # DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
2 parents b2e5525 + a574164 commit ad924b1

File tree

489 files changed

+54317
-5454
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

489 files changed

+54317
-5454
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
data:
2+
# yq -o=j | sed -E 's/\\n( *)([^\\n])/\2/g'
3+
html_text: |
4+
<body>
5+
<h2>Hotfix branch ${BRANCH} ready ⚙️</h2>
6+
<ul>
7+
<li>🔱 <code>${BRANCH}</code> branch has been created off <code>${RELEASE_TAG}</code> tag.</li>
8+
<li>Point any pull requests with changes required for the hotfix release to that branch.</li>
9+
10+
</ul>
11+
12+
🔗 Workflow URL: <a href='${WORKFLOW_URL}'>${WORKFLOW_URL}</a>.
13+
</body>

.github/actions/asana-add-comment/templates/internal-release-ready-tag-failed copy.yml

Lines changed: 0 additions & 16 deletions
This file was deleted.

.github/actions/asana-log-message/templates/internal-release-ready-tag-failed.yml renamed to .github/actions/asana-add-comment/templates/internal-release-ready-tag-failed.yml

File renamed without changes.

.github/actions/asana-add-comment/templates/internal-release-ready.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ data:
44
<body>
55
<h2>Internal release build ${TAG} ready ✅</h2>
66
<ul>
7-
<li>📥 DMG is available from <a href='${DMG_URL}'>${DMG_URL}</a>.</li>
7+
<li>📥 DMG is available from <a href='${DMG_URL}'>${DMG_URL}</a>.
8+
<ul>
9+
<li>If this is a subsequent internal release (started by calling <em>Bump Internal Release</em> workflow), the DMG will be automatically published to Sparkle in a few minutes. Sit tight.</li>
10+
</ul></li>
811
<li>🏷️ Repository is tagged with <code>${TAG}</code> tag.</li>
912
<li>🚢 GitHub <a href='${RELEASE_URL}'>${TAG} pre-release</a> is created.</li>
1013
<li>🔱 <code>${BRANCH}</code> branch has been successfully merged to <code>${BASE_BRANCH}</code>.</li>

.github/actions/asana-add-comment/templates/validate-check-for-updates-public.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ data:
44
<h2>Build ${TAG} is available publicly through Sparkle 🚀</h2>
55
<ul>
66
<li>🌟 New appcast file has been generated and uploaded to S3, together with binary delta files.</li>
7-
<li>👀 <a data-asana-gid='${ASSIGNEE_ID}'/>, please proceed by following instructions in <a data-asana-gid='${TASK_ID}'/> which concludes the release process.</li>
7+
<li>👀 <a data-asana-gid='${ASSIGNEE_ID}'/>, please proceed by following instructions in <a data-asana-gid='${TASK_ID}'/> and <a data-asana-gid='${ANNOUNCEMENT_TASK_ID}'/> which concludes the release process.</li>
88
</ul>
99
1010
🔗 Workflow URL: <a href='${WORKFLOW_URL}'>${WORKFLOW_URL}</a>.

.github/actions/asana-create-action-item/action.yml

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ inputs:
1313
description: "Task name"
1414
required: false
1515
type: string
16-
contents:
17-
description: "Task contents"
16+
notes:
17+
description: "Task notes"
18+
required: false
19+
type: string
20+
html-notes:
21+
description: "Task HTML notes"
1822
required: false
1923
type: string
2024
template-name:
@@ -44,7 +48,9 @@ runs:
4448
shell: bash
4549
env:
4650
ASSIGNEE_ID: ${{ steps.get-automation-subtask.outputs.assignee-id }}
51+
AUTOMATION_TASK_ID: ${{ steps.get-automation-subtask.outputs.automation-task-id }}
4752
TEMPLATE_PATH: ${{ github.action_path }}/templates/${{ inputs.template-name }}.yml
53+
WORKFLOW_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
4854
run: |
4955
if [ ! -f $TEMPLATE_PATH ]; then
5056
echo "::error::Template file not found at $TEMPLATE_PATH"
@@ -55,16 +61,30 @@ runs:
5561
payload="$(envsubst < $TEMPLATE_PATH | yq -o=j | sed -E 's/\\n( *)([^\\n])/\2/g' | jq -c)"
5662
echo "payload-base64=$(base64 <<< $payload)" >> $GITHUB_OUTPUT
5763
58-
- id: process-contents-payload
59-
if: ${{ inputs.contents }}
64+
- id: process-notes-payload
65+
if: ${{ inputs.notes }}
66+
shell: bash
67+
env:
68+
ASSIGNEE_ID: ${{ steps.get-automation-subtask.outputs.assignee-id }}
69+
AUTOMATION_TASK_ID: ${{ steps.get-automation-subtask.outputs.automation-task-id }}
70+
NOTES: ${{ inputs.notes }}
71+
TASK_NAME: ${{ inputs.task-name }}
72+
WORKFLOW_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
73+
run: |
74+
payload="{ \"data\": { \"name\": \"${TASK_NAME}\", \"notes\": \"${NOTES}\n\n🔗 Workflow URL: ${WORKFLOW_URL}\", \"assignee\": \"${ASSIGNEE_ID}\" } }"
75+
echo "payload-base64=$(base64 <<< $payload)" >> $GITHUB_OUTPUT
76+
77+
- id: process-html-notes-payload
78+
if: ${{ inputs.html-notes }}
6079
shell: bash
6180
env:
6281
ASSIGNEE_ID: ${{ steps.get-automation-subtask.outputs.assignee-id }}
63-
CONTENTS: ${{ inputs.contents }}
82+
AUTOMATION_TASK_ID: ${{ steps.get-automation-subtask.outputs.automation-task-id }}
83+
HTML_NOTES: ${{ inputs.html-notes }}
6484
TASK_NAME: ${{ inputs.task-name }}
6585
WORKFLOW_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
6686
run: |
67-
payload="{ \"data\": { \"name\": \"${TASK_NAME}\", \"notes\": \"${CONTENTS}\n\nWorkflow URL: ${WORKFLOW_URL}\", \"assignee\": \"${ASSIGNEE_ID}\" } }"
87+
payload="{ \"data\": { \"name\": \"${TASK_NAME}\", \"html_notes\": \"${HTML_NOTES}\", \"assignee\": \"${ASSIGNEE_ID}\" } }"
6888
echo "payload-base64=$(base64 <<< $payload)" >> $GITHUB_OUTPUT
6989
7090
- id: create-task
@@ -73,7 +93,7 @@ runs:
7393
ASANA_ACCESS_TOKEN: ${{ inputs.access-token }}
7494
ASSIGNEE_ID: ${{ steps.get-automation-subtask.outputs.assignee-id }}
7595
TASK_ID: ${{ steps.get-automation-subtask.outputs.automation-task-id }}
76-
PAYLOAD_BASE64: ${{ steps.process-template-payload.outputs.payload-base64 || steps.process-comment-payload.outputs.payload-base64 }}
96+
PAYLOAD_BASE64: ${{ steps.process-template-payload.outputs.payload-base64 || steps.process-notes-payload.outputs.payload-base64 || steps.process-html-notes-payload.outputs.payload-base64 }}
7797
run: |
7898
# Create a subtask and retrieve its ID from the response (.data.gid) to return as an output
7999
new_task_id=$(set -o pipefail && curl -fLSs "https://app.asana.com/api/1.0/tasks/${TASK_ID}/subtasks?opt_fields=gid" \

.github/actions/asana-create-action-item/templates/internal-release-tag-failed.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ data:
1919
<li><code>git pull origin ${BASE_BRANCH}</code> pull the latest code</li>
2020
<li><code>git merge ${BRANCH}</code>
2121
<ul>
22-
<li>resolve conflicts as needed</li>
22+
<li>Resolve conflicts as needed</li>
23+
<li>When merging a hotfix branch into an internal release branch, you will get conflicts in version and build number xcconfig files:
24+
<ul>
25+
<li>In the version file: accept the internal version number (higher).</li>
26+
<li>In the build number file: accept the hotfix build number (higher). This step is very important in order to calculate the build number of the next internal release correctly.</li>
27+
</ul></li>
2328
</ul></li>
2429
<li><code>git push origin ${BASE_BRANCH}</code> push merged branch</li>
2530
</ul>

.github/actions/asana-create-action-item/templates/merge-failed.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ data:
1616
<li><code>git pull origin ${BASE_BRANCH}</code> pull the latest code</li>
1717
<li><code>git merge ${BRANCH}</code>
1818
<ul>
19-
<li>resolve conflicts as needed</li>
19+
<li>Resolve conflicts as needed</li>
20+
<li>When merging a hotfix branch into an internal release branch, you will get conflicts in version and build number xcconfig files:
21+
<ul>
22+
<li>In the version file: accept the internal version number (higher).</li>
23+
<li>In the build number file: accept the hotfix build number (higher). This step is very important in order to calculate the build number of the next internal release correctly.</li>
24+
</ul></li>
2025
</ul></li>
2126
<li><code>git push origin ${BASE_BRANCH}</code> push merged branch</li>
2227
</ul>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
data:
2+
name: Run Publish DMG Release GitHub Actions workflow
3+
assignee: "${ASSIGNEE_ID}"
4+
html_notes: |
5+
<body>
6+
<h1>Using GH CLI</h1>
7+
Run the following command:
8+
9+
10+
<code>gh workflow run publish_dmg_release.yml --ref ${BRANCH} -f asana-task-url=${ASANA_TASK_URL} -f tag=${TAG} -f release-type=internal</code>
11+
<h1>Using GitHub web UI</h1>
12+
<ol>
13+
<li>Open <a href='https://github.com/duckduckgo/macos-browser/actions/workflows/publish_dmg_release.yml'>Publish DMG Release workflow page</a>.</li>
14+
<li>Click "Run Workflow" and fill in the form as follows:
15+
<ul>
16+
<li><b>Branch</b> <code>${BRANCH}</code></li>
17+
<li><b>Asana release task URL</b> <code>${ASANA_TASK_URL}</code></li>
18+
<li><b>Tag to publish</b> <code>${TAG}</code></li>
19+
<li><b>Release Type</b> <code>internal</code></li>
20+
</ul></li>
21+
</ol>
22+
23+
The GitHub Action workflow does the following:
24+
<ul>
25+
<li>Fetches the release DMG from staticcdn.duckduckgo.com</li>
26+
<li>Extracts release notes from the Asana task description</li>
27+
<li>Runs <code>appcastManager</code> to generate the new appcast2.xml file</li>
28+
<li>Stores the diff against previous version and the copy of the old appcast2.xml file</li>
29+
<li>Uploads new appcast, DMG and binary delta files to S3</li>
30+
<li>On success, creates a task for the release DRI to validate that "Check for Updates" works, with instructions on how to revert that change if "Check for Updates" is broken.</li>
31+
<li>On failure, creates a task for the release DRI with manual instructions on generating the appcast and uploading to S3.</li>
32+
</ul>
33+
34+
Complete this task when ready and proceed with testing the build. If GitHub Actions is unavailable, you'll find manual instructions in the <em>Run Publish DMG Release GitHub Actions workflow</em> subtask of <em>Make Internal Release</em> task.
35+
36+
37+
🔗 Workflow URL: <a href='${WORKFLOW_URL}'>${WORKFLOW_URL}</a>.
38+
</body>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
data:
2+
name: Move release task and included items to "Done" section in macOS App Board and close them if possible
3+
assignee: "${ASSIGNEE_ID}"
4+
html_notes: |
5+
<body>
6+
Automation failed to update Asana for the public release. Please follow the steps below.
7+
<ol>
8+
<li>Open <a data-asana-gid='${APP_BOARD_ASANA_PROJECT_ID}'/> and select the List view</li>
9+
<li>Scroll to the "Validation" section.</li>
10+
<li>Select all the tasks in that section.</li>
11+
<li>Drag and drop all the selected tasks to the "Done" section</li>
12+
<li>Close all tasks that are not incidents and don't belong to <a data-asana-gid='72649045549333'/> project, including the release task itself.</li>
13+
</ol>
14+
15+
Complete this task when ready.
16+
17+
18+
🔗 Workflow URL: <a href='${WORKFLOW_URL}'>${WORKFLOW_URL}</a>.
19+
</body>

0 commit comments

Comments
 (0)