From f3299682e876b95861f8f208c7d036c7d6f56f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Tue, 22 Apr 2025 14:17:00 +0200 Subject: [PATCH 1/9] chore(ci): add automatic release workflow for generic Actors --- .github/workflows/release-generic-actors.yaml | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .github/workflows/release-generic-actors.yaml diff --git a/.github/workflows/release-generic-actors.yaml b/.github/workflows/release-generic-actors.yaml new file mode 100644 index 0000000000..85974b0c56 --- /dev/null +++ b/.github/workflows/release-generic-actors.yaml @@ -0,0 +1,76 @@ +name: Build generic Actors + +on: + workflow_dispatch: + inputs: + web-scraper: + description: apify/web-scraper + type: boolean + required: false + default: true + cheerio-scraper: + description: apify/cheerio-scraper + type: boolean + required: false + default: true + playwright-scraper: + description: apify/playwright-scraper + type: boolean + required: false + default: true + puppeteer-scraper: + description: apify/puppeteer-scraper + type: boolean + required: false + default: true + jsdom-scraper: + description: apify/jsdom-scraper + type: boolean + required: false + default: true + camoufox-scraper: + description: apify/camoufox-scraper + type: boolean + required: false + default: true + version: + description: Version to build + type: string + required: true + default: '3.0' + build-tag: + description: Build tag + type: string + required: true + default: version-3 + +jobs: + push-to-apify: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + settings: + - actor: web-scraper + should-build: ${{ github.event.inputs.web-scraper }} + - actor: cheerio-scraper + should-build: ${{ github.event.inputs.cheerio-scraper }} + - actor: playwright-scraper + should-build: ${{ github.event.inputs.playwright-scraper }} + - actor: puppeteer-scraper + should-build: ${{ github.event.inputs.puppeteer-scraper }} + - actor: jsdom-scraper + should-build: ${{ github.event.inputs.jsdom-scraper }} + - actor: camoufox-scraper + should-build: ${{ github.event.inputs.camoufox-scraper }} + steps: + - uses: actions/checkout@v4 + + - name: Build ${{ matrix.settings.actor }} + uses: apify/push-actor-action@master + if: matrix.settings.should-build == 'true' + with: + token: ${{ secrets.APIFY_ACTOR_BUILD_TOKEN }} + build-tag: ${{ github.event.inputs.build-tag }} + version: ${{ github.event.inputs.version }} + working-directory: packages/actor-scraper/${{ matrix.settings.actor }} From b7b33a7b2b2bc77f57a8f8440be13ee914f2246a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Wed, 23 Apr 2025 08:48:34 +0200 Subject: [PATCH 2/9] feat: add build channel option and automatic version computation --- .github/workflows/release-generic-actors.yaml | 62 ++++++++++++++++--- 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release-generic-actors.yaml b/.github/workflows/release-generic-actors.yaml index 85974b0c56..cf98579f44 100644 --- a/.github/workflows/release-generic-actors.yaml +++ b/.github/workflows/release-generic-actors.yaml @@ -33,16 +33,22 @@ on: type: boolean required: false default: true + build-channel: + description: Build channel + type: choice + required: true + options: + - stable + - development + - custom version: - description: Version to build + description: Custom version (only for custom build channel) type: string - required: true - default: '3.0' + required: false build-tag: - description: Build tag + description: Custom build tag (only for custom build channel) type: string - required: true - default: version-3 + required: false jobs: push-to-apify: @@ -52,25 +58,63 @@ jobs: matrix: settings: - actor: web-scraper + stable-version: 3.0 + stable-build-tag: version-3 + development-version: 0.0 + development-build-tag: development should-build: ${{ github.event.inputs.web-scraper }} - actor: cheerio-scraper + stable-version: 3.0 + stable-build-tag: version-3 + development-version: 0.0 + development-build-tag: development should-build: ${{ github.event.inputs.cheerio-scraper }} - actor: playwright-scraper + stable-version: 1.0 + stable-build-tag: version-1 + development-version: 0.0 + development-build-tag: development should-build: ${{ github.event.inputs.playwright-scraper }} - actor: puppeteer-scraper + stable-version: 3.0 + stable-build-tag: version-3 + development-version: 0.0 + development-build-tag: development should-build: ${{ github.event.inputs.puppeteer-scraper }} - actor: jsdom-scraper + stable-version: 0.1 + stable-build-tag: latest + development-version: 0.0 + development-build-tag: development should-build: ${{ github.event.inputs.jsdom-scraper }} - actor: camoufox-scraper + stable-version: 3.0 + stable-build-tag: version-3 + development-version: 0.0 + development-build-tag: development should-build: ${{ github.event.inputs.camoufox-scraper }} steps: - uses: actions/checkout@v4 + - name: Calculate versions and tags + id: calculate-versions + if: matrix.settings.should-build == 'true' + run: | + if [ "${{ github.event.inputs.build-channel }}" == "stable" ]; then + echo "version=${{ matrix.settings.stable-version }}\n" >> $GITHUB_ENV + echo "build-tag=${{ matrix.settings.stable-build-tag }}\n" >> $GITHUB_ENV + elif [ "${{ github.event.inputs.build-channel }}" == "development" ]; then + echo "version=${{ matrix.settings.development-version }}\n" >> $GITHUB_ENV + echo "build-tag=${{ matrix.settings.development-build-tag }}\n" >> $GITHUB_ENV + else + echo "version=${{ github.event.inputs.version }}\n" >> $GITHUB_ENV + echo "build-tag=${{ github.event.inputs.build-tag }}\n" >> $GITHUB_ENV + fi + - name: Build ${{ matrix.settings.actor }} uses: apify/push-actor-action@master - if: matrix.settings.should-build == 'true' with: token: ${{ secrets.APIFY_ACTOR_BUILD_TOKEN }} - build-tag: ${{ github.event.inputs.build-tag }} - version: ${{ github.event.inputs.version }} + build-tag: ${{ steps.calculate-versions.outputs.build-tag }} + version: ${{ steps.calculate-versions.outputs.version }} working-directory: packages/actor-scraper/${{ matrix.settings.actor }} From 0061bfafb7f544a62e3598043a2538eb63dadb53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Wed, 23 Apr 2025 08:50:59 +0200 Subject: [PATCH 3/9] chore: test workflow by running it on `push` --- .github/workflows/release-generic-actors.yaml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-generic-actors.yaml b/.github/workflows/release-generic-actors.yaml index cf98579f44..2895bc1644 100644 --- a/.github/workflows/release-generic-actors.yaml +++ b/.github/workflows/release-generic-actors.yaml @@ -1,6 +1,9 @@ name: Build generic Actors on: + push: + branches: + - chore/automatic-actor-build workflow_dispatch: inputs: web-scraper: @@ -112,9 +115,9 @@ jobs: fi - name: Build ${{ matrix.settings.actor }} - uses: apify/push-actor-action@master - with: - token: ${{ secrets.APIFY_ACTOR_BUILD_TOKEN }} - build-tag: ${{ steps.calculate-versions.outputs.build-tag }} - version: ${{ steps.calculate-versions.outputs.version }} - working-directory: packages/actor-scraper/${{ matrix.settings.actor }} + run: | + echo "Building ${{ matrix.settings.actor }}!" + echo "Channel: ${{ github.event.inputs.build-channel }}" + echo "Version: ${{ steps.calculate-versions.outputs.version }}" + echo "Build tag: ${{ steps.calculate-versions.outputs.build-tag }}" + echo "Working directory: packages/actor-scraper/${{ matrix.settings.actor }}" From c839d578287949c15d00b4c2e3acdc7db361ae46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Wed, 23 Apr 2025 08:52:53 +0200 Subject: [PATCH 4/9] chore: skip build if `should-build` is `false` --- .github/workflows/release-generic-actors.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-generic-actors.yaml b/.github/workflows/release-generic-actors.yaml index 2895bc1644..32b1d74337 100644 --- a/.github/workflows/release-generic-actors.yaml +++ b/.github/workflows/release-generic-actors.yaml @@ -115,6 +115,7 @@ jobs: fi - name: Build ${{ matrix.settings.actor }} + if: matrix.settings.should-build == 'true' run: | echo "Building ${{ matrix.settings.actor }}!" echo "Channel: ${{ github.event.inputs.build-channel }}" From 6404f908a2283f7612201f6fd762926963784379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Wed, 23 Apr 2025 08:57:31 +0200 Subject: [PATCH 5/9] chore: debugging --- .github/workflows/release-generic-actors.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release-generic-actors.yaml b/.github/workflows/release-generic-actors.yaml index 32b1d74337..071f61af87 100644 --- a/.github/workflows/release-generic-actors.yaml +++ b/.github/workflows/release-generic-actors.yaml @@ -44,6 +44,7 @@ on: - stable - development - custom + default: stable version: description: Custom version (only for custom build channel) type: string @@ -99,6 +100,11 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Log matrix + run: | + echo "Actor: ${{ matrix.settings.actor }}" + echo "Should build: ${{ matrix.settings.should-build }}" + - name: Calculate versions and tags id: calculate-versions if: matrix.settings.should-build == 'true' From dfc16728d109835a7939d3849eb91dbf47a29a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Wed, 23 Apr 2025 09:04:50 +0200 Subject: [PATCH 6/9] chore: try renaming files to enable the `workflow_dispatch` UI --- ...ease-generic-actors.yaml => release-generic-actors-v2.yaml} | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename .github/workflows/{release-generic-actors.yaml => release-generic-actors-v2.yaml} (98%) diff --git a/.github/workflows/release-generic-actors.yaml b/.github/workflows/release-generic-actors-v2.yaml similarity index 98% rename from .github/workflows/release-generic-actors.yaml rename to .github/workflows/release-generic-actors-v2.yaml index 071f61af87..9be56c5a78 100644 --- a/.github/workflows/release-generic-actors.yaml +++ b/.github/workflows/release-generic-actors-v2.yaml @@ -1,4 +1,5 @@ -name: Build generic Actors +name: Build generic Actors on Apify +description: Build generic Actors and push them to Apify on: push: From fdf46b9be734721e8aa7a856fc042b08254447c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Wed, 23 Apr 2025 09:09:43 +0200 Subject: [PATCH 7/9] chore: revert debugging changes, prepare for merge --- ...tors-v2.yaml => release-generic-actors.yaml} | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) rename .github/workflows/{release-generic-actors-v2.yaml => release-generic-actors.yaml} (90%) diff --git a/.github/workflows/release-generic-actors-v2.yaml b/.github/workflows/release-generic-actors.yaml similarity index 90% rename from .github/workflows/release-generic-actors-v2.yaml rename to .github/workflows/release-generic-actors.yaml index 9be56c5a78..86b44dbd20 100644 --- a/.github/workflows/release-generic-actors-v2.yaml +++ b/.github/workflows/release-generic-actors.yaml @@ -1,10 +1,7 @@ -name: Build generic Actors on Apify +name: Build generic Actors description: Build generic Actors and push them to Apify on: - push: - branches: - - chore/automatic-actor-build workflow_dispatch: inputs: web-scraper: @@ -122,10 +119,10 @@ jobs: fi - name: Build ${{ matrix.settings.actor }} + uses: apify/push-actor-action@master if: matrix.settings.should-build == 'true' - run: | - echo "Building ${{ matrix.settings.actor }}!" - echo "Channel: ${{ github.event.inputs.build-channel }}" - echo "Version: ${{ steps.calculate-versions.outputs.version }}" - echo "Build tag: ${{ steps.calculate-versions.outputs.build-tag }}" - echo "Working directory: packages/actor-scraper/${{ matrix.settings.actor }}" + with: + token: ${{ secrets.APIFY_ACTOR_BUILD_TOKEN }} + build-tag: ${{ steps.calculate-versions.outputs.build-tag }} + version: ${{ steps.calculate-versions.outputs.version }} + working-directory: packages/actor-scraper/${{ matrix.settings.actor }} From 5d071b23d6794b5db3a5908ee29bc913a6d180df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Wed, 23 Apr 2025 09:15:14 +0200 Subject: [PATCH 8/9] chore: migrate generic Actors to `.apify/actor.json` manifest --- .../cheerio-scraper/{apify.json => .actor/actor.json} | 4 ++-- .../jsdom-scraper/{apify.json => .actor/actor.json} | 4 ++-- .../playwright-scraper/{apify.json => .actor/actor.json} | 4 ++-- .../puppeteer-scraper/{apify.json => .actor/actor.json} | 4 ++-- packages/actor-scraper/web-scraper/.actor/actor.json | 6 ++++++ packages/actor-scraper/web-scraper/apify.json | 6 ------ 6 files changed, 14 insertions(+), 14 deletions(-) rename packages/actor-scraper/cheerio-scraper/{apify.json => .actor/actor.json} (51%) rename packages/actor-scraper/jsdom-scraper/{apify.json => .actor/actor.json} (50%) rename packages/actor-scraper/playwright-scraper/{apify.json => .actor/actor.json} (52%) rename packages/actor-scraper/puppeteer-scraper/{apify.json => .actor/actor.json} (52%) create mode 100644 packages/actor-scraper/web-scraper/.actor/actor.json delete mode 100644 packages/actor-scraper/web-scraper/apify.json diff --git a/packages/actor-scraper/cheerio-scraper/apify.json b/packages/actor-scraper/cheerio-scraper/.actor/actor.json similarity index 51% rename from packages/actor-scraper/cheerio-scraper/apify.json rename to packages/actor-scraper/cheerio-scraper/.actor/actor.json index 344a876981..1de98d889e 100644 --- a/packages/actor-scraper/cheerio-scraper/apify.json +++ b/packages/actor-scraper/cheerio-scraper/.actor/actor.json @@ -1,6 +1,6 @@ { + "actorSpecification": 1, "name": "cheerio-scraper", "version": "0.1", - "buildTag": "latest", - "env": null + "buildTag": "latest" } diff --git a/packages/actor-scraper/jsdom-scraper/apify.json b/packages/actor-scraper/jsdom-scraper/.actor/actor.json similarity index 50% rename from packages/actor-scraper/jsdom-scraper/apify.json rename to packages/actor-scraper/jsdom-scraper/.actor/actor.json index 8490d5ef3c..1b03c1939f 100644 --- a/packages/actor-scraper/jsdom-scraper/apify.json +++ b/packages/actor-scraper/jsdom-scraper/.actor/actor.json @@ -1,6 +1,6 @@ { + "actorSpecification": 1, "name": "jsdom-scraper", "version": "0.1", - "buildTag": "latest", - "env": null + "buildTag": "latest" } diff --git a/packages/actor-scraper/playwright-scraper/apify.json b/packages/actor-scraper/playwright-scraper/.actor/actor.json similarity index 52% rename from packages/actor-scraper/playwright-scraper/apify.json rename to packages/actor-scraper/playwright-scraper/.actor/actor.json index b0fbccafa7..2835946dad 100644 --- a/packages/actor-scraper/playwright-scraper/apify.json +++ b/packages/actor-scraper/playwright-scraper/.actor/actor.json @@ -1,6 +1,6 @@ { + "actorSpecification": 1, "name": "playwright-scraper", "version": "0.1", - "buildTag": "latest", - "env": null + "buildTag": "latest" } diff --git a/packages/actor-scraper/puppeteer-scraper/apify.json b/packages/actor-scraper/puppeteer-scraper/.actor/actor.json similarity index 52% rename from packages/actor-scraper/puppeteer-scraper/apify.json rename to packages/actor-scraper/puppeteer-scraper/.actor/actor.json index ea8c5ee438..5ab3eb5ae1 100644 --- a/packages/actor-scraper/puppeteer-scraper/apify.json +++ b/packages/actor-scraper/puppeteer-scraper/.actor/actor.json @@ -1,6 +1,6 @@ { + "actorSpecification": 1, "name": "puppeteer-scraper", "version": "0.1", - "buildTag": "latest", - "env": null + "buildTag": "latest" } diff --git a/packages/actor-scraper/web-scraper/.actor/actor.json b/packages/actor-scraper/web-scraper/.actor/actor.json new file mode 100644 index 0000000000..529480ab93 --- /dev/null +++ b/packages/actor-scraper/web-scraper/.actor/actor.json @@ -0,0 +1,6 @@ +{ + "actorSpecification": 1, + "name": "web-scraper", + "version": "0.1", + "buildTag": "latest" +} diff --git a/packages/actor-scraper/web-scraper/apify.json b/packages/actor-scraper/web-scraper/apify.json deleted file mode 100644 index dea3ee8502..0000000000 --- a/packages/actor-scraper/web-scraper/apify.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "web-scraper", - "version": "0.1", - "buildTag": "latest", - "env": null -} From d28fd3f71f84d83e167ede032afbd039864c6195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jind=C5=99ich=20B=C3=A4r?= Date: Wed, 23 Apr 2025 13:09:23 +0200 Subject: [PATCH 9/9] chore: code style Co-authored-by: Jan Buchar --- .github/workflows/release-generic-actors.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-generic-actors.yaml b/.github/workflows/release-generic-actors.yaml index 86b44dbd20..1ef7f6409c 100644 --- a/.github/workflows/release-generic-actors.yaml +++ b/.github/workflows/release-generic-actors.yaml @@ -107,10 +107,10 @@ jobs: id: calculate-versions if: matrix.settings.should-build == 'true' run: | - if [ "${{ github.event.inputs.build-channel }}" == "stable" ]; then + if [ "${{ github.event.inputs.build-channel }}" = "stable" ]; then echo "version=${{ matrix.settings.stable-version }}\n" >> $GITHUB_ENV echo "build-tag=${{ matrix.settings.stable-build-tag }}\n" >> $GITHUB_ENV - elif [ "${{ github.event.inputs.build-channel }}" == "development" ]; then + elif [ "${{ github.event.inputs.build-channel }}" = "development" ]; then echo "version=${{ matrix.settings.development-version }}\n" >> $GITHUB_ENV echo "build-tag=${{ matrix.settings.development-build-tag }}\n" >> $GITHUB_ENV else