Skip to content

Commit

Permalink
Adapt ci scripts from autofill
Browse files Browse the repository at this point in the history
  • Loading branch information
muodov committed Mar 6, 2024
1 parent eb3638d commit 3bd6ddb
Show file tree
Hide file tree
Showing 9 changed files with 2,622 additions and 64 deletions.
15 changes: 15 additions & 0 deletions .github/actions/setup-release-scripts/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: 'Setup Release Scripts'
description: 'Install release script dependencies using correct node version'
runs:
using: "composite"
steps:
- uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'npm'
cache-dependency-path: 'autoconsent/package-lock.json'
- run: |
cd autoconsent
npm ci
cd ..
shell: bash
294 changes: 294 additions & 0 deletions .github/workflows/ddg-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,294 @@
name: Propagate Autoconsent To DDG Apps

on:
release:
types: [ created ]
workflow_dispatch:
inputs:
testinput:
required: true
description: 'test input'

env:
VERSION: ${{ github.event.release.tag_name }}
RELEASE_URL: ${{ github.event.release.html_url }}
RELEASE_NOTES: ${{ github.event.release.body }}

jobs:

# ------------------------------------------------------------------------------
# Create initial Asana subtasks
# ------------------------------------------------------------------------------
create_asana_tasks:
runs-on: ubuntu-latest
outputs:
asana-output: ${{ steps.create-asana-tasks.outputs.ASANA_OUTPUT }}
steps:
# --- Setup ---
- uses: actions/checkout@v3
with:
path: autoconsent/
- uses: ./autoconsent/.github/actions/setup-release-scripts
# --- Effect ---
- name: Create Asana Tasks
id: create-asana-tasks
env:
ASANA_ACCESS_TOKEN: ${{ secrets.ASANA_ACCESS_TOKEN }}
run: |
JSON_STRING="$(node ./autoconsent/ci/asana-create-tasks.js)"
echo "ASANA_OUTPUT=$JSON_STRING" >> $GITHUB_OUTPUT
# ------------------------------------------------------------------------------
# Create PR with updated autoconsent on Android
# ------------------------------------------------------------------------------

update_android:
runs-on: ubuntu-latest
outputs:
pull-request-url: ${{ steps.create-pr.outputs.pull-request-url }}
needs: create_asana_tasks
steps:
# --- Setup ---
- uses: actions/checkout@v3
with:
path: autoconsent/
- uses: ./autoconsent/.github/actions/setup-release-scripts
# --- Action ---
- name: Checkout Android
uses: actions/checkout@v3
with:
repository: duckduckgo/android
path: android/
token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-node@v3
with:
node-version: current
- name: Update Android autoconsent reference
run: |
cd android
npm install @duckduckgo/autoconsent@${{ github.event.release.tag_name }}
npm run rebuild-autoconsent
cd ..
- name: Create Android PR Body
env:
ASANA_OUTPUT: ${{ needs.create_asana_tasks.outputs.asana-output }}
run: |
TEMPLATE="$(node ./autoconsent/ci/create-pr-template.js android)"
# Creates a randomised delimiter. See https://app.asana.com/0/1199892415909552/1203243297643584/f
DELIMITER=$(echo $RANDOM | md5sum | head -c 20;)
echo "PR_BODY_ANDROID<<$DELIMITER" >> $GITHUB_ENV
echo "$TEMPLATE" >> $GITHUB_ENV
echo "$DELIMITER" >> $GITHUB_ENV
# --- Effect ---
- name: Create PR for Android
uses: peter-evans/create-pull-request@88bf0de51c7487d91e1abbb4899332e602c58bbf
id: create-pr
with:
path: android/
add-paths: |
package.json
package-lock.json
autoconsent/
commit-message: Update autoconsent to ${{ github.event.release.tag_name }}
branch: update-autoconsent-${{ github.event.release.tag_name }}
title: Update autoconsent to ${{ github.event.release.tag_name }}
body: "${{ env.PR_BODY_ANDROID }}"
token: ${{ secrets.DAXMOBILE_AUTOFILL_AUTOMATION }}


# # ------------------------------------------------------------------------------
# # Create PR with updated BrowserServicesKit on iOS
# # ------------------------------------------------------------------------------

# update_ios:
# runs-on: ubuntu-20.04
# outputs:
# pull-request-url: ${{ steps.create-pr.outputs.pull-request-url }}
# needs: [create_asana_tasks, update_bsk]
# steps:
# # --- Setup ---
# - uses: actions/checkout@v3
# with:
# path: autofill/
# - uses: ./autofill/.github/actions/setup-release-scripts
# # --- Action ---
# - name: Checkout iOS
# uses: actions/checkout@v3
# with:
# repository: duckduckgo/iOS
# path: ios/
# token: ${{ secrets.DAXMOBILE_AUTOFILL_AUTOMATION }}
# - name: Update iOS autofill reference
# env:
# BSK_SHA: ${{ needs.update_bsk.outputs.pull-request-head-sha }}
# run: |
# node ./autofill/ci/update-apple-device-repo.js 'ios'
# - name: Create iOS PR Body
# env:
# ASANA_OUTPUT: ${{ needs.create_asana_tasks.outputs.asana-output }}
# BSK_PR_URL: ${{ needs.update_bsk.outputs.pull-request-url }}
# run: |
# TEMPLATE="$(node ./autofill/ci/create-pr-template.js ios)"
# # Creates a randomised delimiter. See https://app.asana.com/0/1199892415909552/1203243297643584/f
# DELIMITER=$(echo $RANDOM | md5sum | head -c 20;)
# echo "PR_BODY_IOS<<$DELIMITER" >> $GITHUB_ENV
# echo "$TEMPLATE" >> $GITHUB_ENV
# echo "$DELIMITER" >> $GITHUB_ENV
# # --- Effect ---
# - name: Create PR for iOS
# uses: peter-evans/create-pull-request@88bf0de51c7487d91e1abbb4899332e602c58bbf
# id: create-pr
# with:
# path: ios/
# add-paths: DuckDuckGo.xcodeproj/project.pbxproj
# commit-message: Update BSK with autofill ${{ github.event.release.tag_name }}
# branch: update-bsk-with-autofill-${{ github.event.release.tag_name }}
# title: Update BSK with autofill ${{ github.event.release.tag_name }}
# body: ${{ env.PR_BODY_IOS }}
# token: ${{ secrets.DAXMOBILE_AUTOFILL_AUTOMATION }}

# # ------------------------------------------------------------------------------
# # Create PR with updated BrowserServicesKit on macOS
# # ------------------------------------------------------------------------------

# update_macos:
# runs-on: ubuntu-20.04
# outputs:
# pull-request-url: ${{ steps.create-pr.outputs.pull-request-url }}
# needs: [create_asana_tasks, update_bsk]
# steps:
# # --- Setup ---
# - uses: actions/checkout@v3
# with:
# path: autofill/
# - uses: ./autofill/.github/actions/setup-release-scripts
# # --- Action ---
# - name: Checkout macOS
# uses: actions/checkout@v3
# with:
# repository: duckduckgo/macos-browser
# path: macos/
# token: ${{ secrets.DAXMOBILE_AUTOFILL_AUTOMATION }}
# - name: Update macOS autofill reference
# env:
# BSK_SHA: ${{ needs.update_bsk.outputs.pull-request-head-sha }}
# run: |
# node ./autofill/ci/update-apple-device-repo.js 'macos'
# - name: Create macOS PR Body
# env:
# ASANA_OUTPUT: ${{ needs.create_asana_tasks.outputs.asana-output }}
# BSK_PR_URL: ${{ needs.update_bsk.outputs.pull-request-url }}
# run: |
# TEMPLATE="$(node ./autofill/ci/create-pr-template.js macos)"
# # Creates a randomised delimiter. See https://app.asana.com/0/1199892415909552/1203243297643584/f
# DELIMITER=$(echo $RANDOM | md5sum | head -c 20;)
# echo "PR_BODY_MACOS<<$DELIMITER" >> $GITHUB_ENV
# echo "$TEMPLATE" >> $GITHUB_ENV
# echo "$DELIMITER" >> $GITHUB_ENV
# # --- Effect ---
# - name: Create PR for macOS
# uses: peter-evans/create-pull-request@88bf0de51c7487d91e1abbb4899332e602c58bbf
# id: create-pr
# with:
# path: macos/
# add-paths: DuckDuckGo.xcodeproj/project.pbxproj
# commit-message: Update BSK with autofill ${{ github.event.release.tag_name }}
# branch: update-bsk-with-autofill-${{ github.event.release.tag_name }}
# title: Update BSK with autofill ${{ github.event.release.tag_name }}
# body: ${{ env.PR_BODY_MACOS }}
# token: ${{ secrets.DAXMOBILE_AUTOFILL_AUTOMATION }}

# # ------------------------------------------------------------------------------
# # Create PR with updated autofill on Windows
# # ------------------------------------------------------------------------------

# update_windows:
# runs-on: ubuntu-20.04
# outputs:
# pull-request-url: ${{ steps.create-pr.outputs.pull-request-url }}
# needs: create_asana_tasks
# steps:
# # --- Setup ---
# - uses: actions/checkout@v3
# with:
# path: autofill/
# - uses: ./autofill/.github/actions/setup-release-scripts
# # --- Action ---
# - name: Checkout Windows
# uses: actions/checkout@v3
# with:
# repository: duckduckgo/windows-browser
# path: windows/
# submodules: true
# token: ${{ secrets.DAXMOBILE_AUTOFILL_AUTOMATION }}
# - name: Update Windows autofill reference
# run: |
# cd windows/submodules/duckduckgo-autofill
# git fetch --tags
# git checkout ${{ github.event.release.tag_name }}
# cd ../../../
# - name: Create Windows PR Body
# env:
# ASANA_OUTPUT: ${{ needs.create_asana_tasks.outputs.asana-output }}
# run: |
# TEMPLATE="$(node ./autofill/ci/create-pr-template.js windows)"
# # Creates a randomised delimiter. See https://app.asana.com/0/1199892415909552/1203243297643584/f
# DELIMITER=$(echo $RANDOM | md5sum | head -c 20;)
# echo "PR_BODY_WINDOWS<<$DELIMITER" >> $GITHUB_ENV
# echo "$TEMPLATE" >> $GITHUB_ENV
# echo "$DELIMITER" >> $GITHUB_ENV
# # --- Effect ---
# - name: Create PR for Windows
# uses: peter-evans/create-pull-request@88bf0de51c7487d91e1abbb4899332e602c58bbf
# id: create-pr
# with:
# path: windows/
# add-paths: |
# submodules/duckduckgo-autofill
# commit-message: Update autofill to ${{ github.event.release.tag_name }}
# branch: update-autofill-${{ github.event.release.tag_name }}
# title: Update autofill to ${{ github.event.release.tag_name }}
# body: "${{ env.PR_BODY_WINDOWS }}"
# token: ${{ secrets.DAXMOBILE_AUTOFILL_AUTOMATION }}

# ------------------------------------------------------------------------------
# Update Asana subtasks with PR URLs
# ------------------------------------------------------------------------------

update_asana_tasks:
runs-on: ubuntu-latest
# Always run this final step, even if any of the updates have failed
# unless the previous jobs were cancelled
if: ${{ always() && !contains(needs.*.result, 'cancelled') }}
needs: [create_asana_tasks, update_android] # , update_ios, update_macos, update_windows]
steps:
# --- Setup ---
- uses: actions/checkout@v3
with:
path: autoconsent/
- uses: ./autoconsent/.github/actions/setup-release-scripts
# --- Effect ---
- name: Update Asana tasks
env:
ASANA_ACCESS_TOKEN: ${{ secrets.ASANA_ACCESS_TOKEN }}
ASANA_OUTPUT: ${{ needs.create_asana_tasks.outputs.asana-output }}
# BSK_PR_URL: ${{ needs.update_bsk.outputs.pull-request-url }}
# IOS_PR_URL: ${{ needs.update_ios.outputs.pull-request-url }}
# MACOS_PR_URL: ${{ needs.update_macos.outputs.pull-request-url }}
# WINDOWS_PR_URL: ${{ needs.update_windows.outputs.pull-request-url }}
ANDROID_PR_URL: ${{ needs.update_android.outputs.pull-request-url }}
run: |
node ./autoconsent/ci/asana-update-tasks.js
- name: Ouput workflow summary
# Show failure message if any of the jobs report failed
if: ${{ contains(needs.*.result, 'failure') }}
run: |
echo "Release process completed but with failures reported." >> $GITHUB_STEP_SUMMARY
echo "Please review the job output to see which steps require manual intervention." >> $GITHUB_STEP_SUMMARY
- name: Ouput workflow summary
# Show success message as long as none of the jobs report failed
if: ${{ !contains(needs.*.result, 'failure') }}
run: |
echo "Release process completed successfully." >> $GITHUB_STEP_SUMMARY
echo "All PRs and Asana tasks created! :rocket:" >> $GITHUB_STEP_SUMMARY
Loading

0 comments on commit 3bd6ddb

Please sign in to comment.