From a915cc89a03dcf01ab6d95cc30f0e7617c729e0a Mon Sep 17 00:00:00 2001 From: Daniel Sloof Date: Thu, 1 Sep 2022 15:53:48 +0200 Subject: [PATCH 01/65] feat: add workflow that automatically pulls upstream --- .github/workflows/pull-upstream.yml | 91 +++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 .github/workflows/pull-upstream.yml diff --git a/.github/workflows/pull-upstream.yml b/.github/workflows/pull-upstream.yml new file mode 100644 index 000000000000..364f0926040a --- /dev/null +++ b/.github/workflows/pull-upstream.yml @@ -0,0 +1,91 @@ +on: + schedule: + - cron: "10 10 * * *" # This gives mirror sync, which runs at 9:57, some time to complete. + workflow_dispatch: {} + +permissions: + contents: write + pull-requests: write + +env: + upstream: "https://github.com/mage-os/mirror-magento2.git" + +jobs: + pull-upstream: + name: "Pull Upstream" + runs-on: ubuntu-latest + strategy: + matrix: + # We might support other branches in the future. + branch: [ '2.4-develop' ] + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ matrix.branch }} + fetch-depth: 0 + + # If there is already a 2.x-develop-upstream branch, we're in the process of handling a conflict. + # Skip any subsequent steps. + - name: Check if we're already resolving conflicts + run: "! git ls-remote --exit-code origin ${{ matrix.branch }}-upstream" + + # Add the upstream remote, in normal circumstances this will be mirror-magento2. + - name: Set upstream + run: git remote add upstream ${{ env.upstream }} + + # These settings are required for the merge commit. + - name: Configure git + run: | + git config user.email info@mage-os.org + git config user.name "Mage-OS" + + # Instead of doing a git pull, we do a fetch followed by a merge. + # This is functionally equivalent, but allows us to capture the output of the merge specifically. + - name: Attempt merge + id: merge + run: | + git fetch upstream ${{ matrix.branch }} + git merge --no-edit FETCH_HEAD 2>&1 | tee merge.log + result_code=${PIPESTATUS[0]} + echo "::set-output name=merge::$(cat merge.log)" + exit $result_code + + # When merge succeeds, simply push to the original branch. + # If an upstream branch exists, we'll delete it. + - name: Push + run: | + git push origin ${{ matrix.branch }} + git push --delete origin ${{ matrix.branch }}-upstream || true + + # If the merge failed, checkout the upstream branch and push it to our repo. + - name: Create Upstream Branch + id: create_branch + if: failure() && steps.merge.outcome == 'failure' + run: | + git merge --abort + git checkout -b ${{ matrix.branch }}-upstream FETCH_HEAD + git push --set-upstream --force origin ${{ matrix.branch }}-upstream + git remote remove upstream + + # If the merge failed, and we successfully created an upstream branch, create a pull request. + - name: Create Pull Request + id: create_pr + if: failure() && steps.merge.outcome == 'failure' && steps.create_branch.outcome == 'success' + uses: devops-infra/action-pull-request@v0.5.0 + with: + draft: true + title: "Upstream Merge Conflict (${{ matrix.branch }})" + body: "This PR was automatically generated: a human is required.\n\n${{ steps.merge.outputs.merge }}" + github_token: ${{ secrets.GITHUB_TOKEN }} + source_branch: ${{ matrix.branch }}-upstream + target_branch: ${{ matrix.branch }} + + # If the merge failed, and we successfully created a PR, send a message to discord. + - name: Notify Discord + if: failure() && steps.merge.outcome == 'failure' && steps.create_pr.outcome == 'success' + uses: Ilshidur/action-discord@master + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + DISCORD_USERNAME: "Mage-OS" + DISCORD_EMBEDS: '[{"title": "Upstream Merge Conflict", "description": "Pull Request: ${{ steps.create_pr.outputs.url }}\nAction: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\nConflicts:\n ${{ steps.merge.outputs.merge }}"}]' From e3d61901eee9afbcd031fd0f1509a6e0b5c37985 Mon Sep 17 00:00:00 2001 From: Daniel Sloof Date: Sat, 3 Sep 2022 19:46:37 +0200 Subject: [PATCH 02/65] ci: run magento coding standard for pull requests --- .github/workflows/coding-standard.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/coding-standard.yml diff --git a/.github/workflows/coding-standard.yml b/.github/workflows/coding-standard.yml new file mode 100644 index 000000000000..512b23f8bddd --- /dev/null +++ b/.github/workflows/coding-standard.yml @@ -0,0 +1,16 @@ +name: Coding Standard + +on: + pull_request: + branches: + - 2.4-develop + +permissions: + contents: read + +jobs: + coding-standard: + runs-on: ubuntu-latest + steps: + - name: Run Coding Standard + uses: graycoreio/github-actions-magento2/coding-standard@main From f468ffdd5cfdad615a2170b613d723cc13f1e4a2 Mon Sep 17 00:00:00 2001 From: Vinai Kopp Date: Sun, 23 Oct 2022 21:23:06 +0200 Subject: [PATCH 03/65] use merge-upstream-changes.yml workflow for consistencyx --- .github/workflows/merge-upstream-changes.yml | 15 ++++ .github/workflows/pull-upstream.yml | 91 -------------------- 2 files changed, 15 insertions(+), 91 deletions(-) create mode 100644 .github/workflows/merge-upstream-changes.yml delete mode 100644 .github/workflows/pull-upstream.yml diff --git a/.github/workflows/merge-upstream-changes.yml b/.github/workflows/merge-upstream-changes.yml new file mode 100644 index 000000000000..336c37ab8c76 --- /dev/null +++ b/.github/workflows/merge-upstream-changes.yml @@ -0,0 +1,15 @@ +on: + schedule: + - cron: "10 10 * * *" # This gives mirror sync, which runs at 9:57, some time to complete. + workflow_dispatch: {} +permissions: + contents: write + pull-requests: write +jobs: + merge-from-mirror: + uses: mage-os/infrastructure/.github/workflows/merge-upstream-changes.yml@main + with: + upstream: https://github.com/mage-os/mageos-magento2.git + matrix: '{ branch: ["2.4-develop"] }' + secrets: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} diff --git a/.github/workflows/pull-upstream.yml b/.github/workflows/pull-upstream.yml deleted file mode 100644 index 364f0926040a..000000000000 --- a/.github/workflows/pull-upstream.yml +++ /dev/null @@ -1,91 +0,0 @@ -on: - schedule: - - cron: "10 10 * * *" # This gives mirror sync, which runs at 9:57, some time to complete. - workflow_dispatch: {} - -permissions: - contents: write - pull-requests: write - -env: - upstream: "https://github.com/mage-os/mirror-magento2.git" - -jobs: - pull-upstream: - name: "Pull Upstream" - runs-on: ubuntu-latest - strategy: - matrix: - # We might support other branches in the future. - branch: [ '2.4-develop' ] - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - ref: ${{ matrix.branch }} - fetch-depth: 0 - - # If there is already a 2.x-develop-upstream branch, we're in the process of handling a conflict. - # Skip any subsequent steps. - - name: Check if we're already resolving conflicts - run: "! git ls-remote --exit-code origin ${{ matrix.branch }}-upstream" - - # Add the upstream remote, in normal circumstances this will be mirror-magento2. - - name: Set upstream - run: git remote add upstream ${{ env.upstream }} - - # These settings are required for the merge commit. - - name: Configure git - run: | - git config user.email info@mage-os.org - git config user.name "Mage-OS" - - # Instead of doing a git pull, we do a fetch followed by a merge. - # This is functionally equivalent, but allows us to capture the output of the merge specifically. - - name: Attempt merge - id: merge - run: | - git fetch upstream ${{ matrix.branch }} - git merge --no-edit FETCH_HEAD 2>&1 | tee merge.log - result_code=${PIPESTATUS[0]} - echo "::set-output name=merge::$(cat merge.log)" - exit $result_code - - # When merge succeeds, simply push to the original branch. - # If an upstream branch exists, we'll delete it. - - name: Push - run: | - git push origin ${{ matrix.branch }} - git push --delete origin ${{ matrix.branch }}-upstream || true - - # If the merge failed, checkout the upstream branch and push it to our repo. - - name: Create Upstream Branch - id: create_branch - if: failure() && steps.merge.outcome == 'failure' - run: | - git merge --abort - git checkout -b ${{ matrix.branch }}-upstream FETCH_HEAD - git push --set-upstream --force origin ${{ matrix.branch }}-upstream - git remote remove upstream - - # If the merge failed, and we successfully created an upstream branch, create a pull request. - - name: Create Pull Request - id: create_pr - if: failure() && steps.merge.outcome == 'failure' && steps.create_branch.outcome == 'success' - uses: devops-infra/action-pull-request@v0.5.0 - with: - draft: true - title: "Upstream Merge Conflict (${{ matrix.branch }})" - body: "This PR was automatically generated: a human is required.\n\n${{ steps.merge.outputs.merge }}" - github_token: ${{ secrets.GITHUB_TOKEN }} - source_branch: ${{ matrix.branch }}-upstream - target_branch: ${{ matrix.branch }} - - # If the merge failed, and we successfully created a PR, send a message to discord. - - name: Notify Discord - if: failure() && steps.merge.outcome == 'failure' && steps.create_pr.outcome == 'success' - uses: Ilshidur/action-discord@master - env: - DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - DISCORD_USERNAME: "Mage-OS" - DISCORD_EMBEDS: '[{"title": "Upstream Merge Conflict", "description": "Pull Request: ${{ steps.create_pr.outputs.url }}\nAction: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\nConflicts:\n ${{ steps.merge.outputs.merge }}"}]' From 48e58be04c94923490223de80ac8a5915fd03e00 Mon Sep 17 00:00:00 2001 From: Mage-OS CI Bot Date: Tue, 25 Oct 2022 19:42:14 +0000 Subject: [PATCH 04/65] Managed by Terraform --- CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 CODEOWNERS diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 000000000000..eecc527e760a --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @Mage-OS/distribution \ No newline at end of file From 9c40faad7db918999a8640b41b12853647ab7dd3 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 14:16:56 -0500 Subject: [PATCH 05/65] Issue #5 - Semantic Version Checker Action * Initial code push --- .github/workflows/semantic-checker.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/workflows/semantic-checker.yml diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml new file mode 100644 index 000000000000..771ee438275f --- /dev/null +++ b/.github/workflows/semantic-checker.yml @@ -0,0 +1,11 @@ +name: MageOS Semantic Checker +run-name: ${{ github.actor }} is checking the semantic version +on: [push] +jobs: + semantic-version: + runs-on: ubuntu-latest + steps: + - run: git clone git@github.com:magento/magento-semver.git + - run: cd magento-semver && composer install + - run: bin/svc compare --help + From 7417101059e27058cafd3c7ae96fba638847d928 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 14:42:48 -0500 Subject: [PATCH 06/65] Check out repositories using actions * Check out the semver and local repo using GitHub action steps --- .github/workflows/semantic-checker.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 771ee438275f..bb47ec769760 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -5,7 +5,15 @@ jobs: semantic-version: runs-on: ubuntu-latest steps: - - run: git clone git@github.com:magento/magento-semver.git + - name: Check out Semver + uses: actions/checkout@v3 + with: + repository: magento/magento-semver.git + path: magento-semver + - name: Check out MageOS + uses: actions/checkout@v3 + with: + path: mageos-magento2 - run: cd magento-semver && composer install - run: bin/svc compare --help From 3aacfc4c26247bfa35c5bc45706b979127f83597 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 14:59:06 -0500 Subject: [PATCH 07/65] Install Composer and Composer Cache Helpers * Use more GitHub Action helpers * Correct repository name --- .github/workflows/semantic-checker.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index bb47ec769760..5219b7fbcfd7 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -5,13 +5,20 @@ jobs: semantic-version: runs-on: ubuntu-latest steps: + - name: Install Composer Cache + uses: actions/cache + with: + path: /tmp/composer-cache + key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + - name: Install Composer + uses: php-actions/composer - name: Check out Semver - uses: actions/checkout@v3 + uses: actions/checkout with: - repository: magento/magento-semver.git + repository: magento/magento-semver path: magento-semver - name: Check out MageOS - uses: actions/checkout@v3 + uses: actions/checkout with: path: mageos-magento2 - run: cd magento-semver && composer install From 4ff394c2382cc771ae1254d589157f1a2b3ec99d Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 15:25:09 -0500 Subject: [PATCH 08/65] Repair Action Versions * Move Composer caching and fix action versions --- .github/workflows/semantic-checker.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 5219b7fbcfd7..b2db100bd81e 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -5,20 +5,26 @@ jobs: semantic-version: runs-on: ubuntu-latest steps: + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Install Composer Cache - uses: actions/cache + uses: actions/cache@v3 with: - path: /tmp/composer-cache - key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- - name: Install Composer - uses: php-actions/composer + uses: php-actions/composer@v6 - name: Check out Semver - uses: actions/checkout + uses: actions/checkout@v3 with: repository: magento/magento-semver path: magento-semver - name: Check out MageOS - uses: actions/checkout + uses: actions/checkout@v3 with: path: mageos-magento2 - run: cd magento-semver && composer install From 6ce7852a2af594ba223b26286dac69beffd91b12 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 15:36:37 -0500 Subject: [PATCH 09/65] Move Composer * Moved Composer to after the code checkout --- .github/workflows/semantic-checker.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index b2db100bd81e..a71024035a37 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -16,8 +16,6 @@ jobs: key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - - name: Install Composer - uses: php-actions/composer@v6 - name: Check out Semver uses: actions/checkout@v3 with: @@ -27,6 +25,10 @@ jobs: uses: actions/checkout@v3 with: path: mageos-magento2 + - name: Install Composer + uses: php-actions/composer@v6 + with: + command: help - run: cd magento-semver && composer install - run: bin/svc compare --help From 9b5675d33f7c4e3711bec4aa3514ebc62a6bcfc2 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 15:43:43 -0500 Subject: [PATCH 10/65] Path Fixes * Fix checked-out code path --- .github/workflows/semantic-checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index a71024035a37..db870949eabc 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -30,5 +30,5 @@ jobs: with: command: help - run: cd magento-semver && composer install - - run: bin/svc compare --help + - run: magento-semver/bin/svc compare --help From e3e2833e7bbae52575927c6b9768a433009c4d42 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 15:56:32 -0500 Subject: [PATCH 11/65] Default to a known tag for comparison * Default to the 2.4-develop branch for comparison --- .github/workflows/semantic-checker.yml | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index db870949eabc..2bc8ebb0753f 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -5,6 +5,20 @@ jobs: semantic-version: runs-on: ubuntu-latest steps: + - name: Check out Semver + uses: actions/checkout@v3 + with: + repository: magento/magento-semver + path: magento-semver + - name: Check out MageOS + uses: actions/checkout@v3 + with: + path: mageos-magento2 + ref: 2.4-develop + - name: Check out new changes + uses: actions/checkout@v3 + with: + path: this-change - name: Get Composer Cache Directory id: composer-cache run: | @@ -16,19 +30,10 @@ jobs: key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - - name: Check out Semver - uses: actions/checkout@v3 - with: - repository: magento/magento-semver - path: magento-semver - - name: Check out MageOS - uses: actions/checkout@v3 - with: - path: mageos-magento2 - name: Install Composer uses: php-actions/composer@v6 with: command: help - run: cd magento-semver && composer install - - run: magento-semver/bin/svc compare --help + - run: magento-semver/bin/svc compare mageos-magento2 this-change From a04b6be256ae192cb9c86808ecad46ecd9b76673 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 16:28:16 -0500 Subject: [PATCH 12/65] Save SVC log * Save the SVC log output for future reference --- .github/workflows/semantic-checker.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 2bc8ebb0753f..562baea088e1 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -5,15 +5,16 @@ jobs: semantic-version: runs-on: ubuntu-latest steps: - - name: Check out Semver + - name: Check out Semamtic Version Checker tool uses: actions/checkout@v3 with: repository: magento/magento-semver path: magento-semver - - name: Check out MageOS + - name: Check out MageOS 2.4-develop uses: actions/checkout@v3 with: path: mageos-magento2 + # Change this to compare new code to other branches ref: 2.4-develop - name: Check out new changes uses: actions/checkout@v3 @@ -22,7 +23,7 @@ jobs: - name: Get Composer Cache Directory id: composer-cache run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" + echo "{dir}={$(composer config cache-files-dir)} >> $GITHUB_OUTPUT" - name: Install Composer Cache uses: actions/cache@v3 with: @@ -34,6 +35,13 @@ jobs: uses: php-actions/composer@v6 with: command: help - - run: cd magento-semver && composer install - - run: magento-semver/bin/svc compare mageos-magento2 this-change + - name: Install Semamtic Version Checker + run: cd magento-semver && composer install + - name: Run Semantic Version Checker (SVC) + run: magento-semver/bin/svc compare mageos-magento2 this-change + - name: Upload SVC output file + uses: actions/upload-artifact@v3 + with: + name: svc-log-file + path: svc.log From 4d5b421ace95c37bb28fd4cca9a8fd8e07a88379 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 16:31:53 -0500 Subject: [PATCH 13/65] Install Composer First * Install Composer before cache checks --- .github/workflows/semantic-checker.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 562baea088e1..402abb45dbc7 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -20,9 +20,14 @@ jobs: uses: actions/checkout@v3 with: path: this-change + - name: Install Composer + uses: php-actions/composer@v6 + with: + command: help - name: Get Composer Cache Directory id: composer-cache run: | + cd magento-semver && echo "{dir}={$(composer config cache-files-dir)} >> $GITHUB_OUTPUT" - name: Install Composer Cache uses: actions/cache@v3 @@ -31,10 +36,6 @@ jobs: key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - - name: Install Composer - uses: php-actions/composer@v6 - with: - command: help - name: Install Semamtic Version Checker run: cd magento-semver && composer install - name: Run Semantic Version Checker (SVC) From ad8bdc06aa6d316ba7927deafe5b5e2d527dad63 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 16:43:02 -0500 Subject: [PATCH 14/65] Fix Environment Variable Naming * Fixed the environment variable naming change in GH Actions --- .github/workflows/semantic-checker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 402abb45dbc7..b98f69b8d23a 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -28,11 +28,11 @@ jobs: id: composer-cache run: | cd magento-semver && - echo "{dir}={$(composer config cache-files-dir)} >> $GITHUB_OUTPUT" + echo "{composer_cache_dir}={$(composer config cache-files-dir)} >> $GITHUB_OUTPUT" - name: Install Composer Cache uses: actions/cache@v3 with: - path: ${{ steps.composer-cache.outputs.dir }} + path: ${{ env.composer_cache_dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- From 3c8519cd460dc2b4b3a0fb0bb49d28d1e580a2bb Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 16:45:39 -0500 Subject: [PATCH 15/65] Fix Path Variable Output * Fix the path variable outputting --- .github/workflows/semantic-checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index b98f69b8d23a..34ba9609da4b 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -32,7 +32,7 @@ jobs: - name: Install Composer Cache uses: actions/cache@v3 with: - path: ${{ env.composer_cache_dir }} + path: echo "${{ env.composer_cache_dir }}" key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- From 6b233f3aff895f70cfc0e586ed5a2ff6a9d264f3 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Mon, 31 Oct 2022 16:48:25 -0500 Subject: [PATCH 16/65] Go Back to Step Name * Rename back to the step name, not an environment variable --- .github/workflows/semantic-checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 34ba9609da4b..729fcb5f2b43 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -32,7 +32,7 @@ jobs: - name: Install Composer Cache uses: actions/cache@v3 with: - path: echo "${{ env.composer_cache_dir }}" + path: echo "${{ steps.composer-cache.outputs.composer_cache_dir }}" key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- From c223a92466e8bb183ee182d907f783094c77b732 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Tue, 1 Nov 2022 11:25:44 -0500 Subject: [PATCH 17/65] Change to Pull Requests * Change the trigger to use pull requests only --- .github/workflows/semantic-checker.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 729fcb5f2b43..c8a7dc2d0b6a 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -1,6 +1,6 @@ name: MageOS Semantic Checker run-name: ${{ github.actor }} is checking the semantic version -on: [push] +on: [pull_request] jobs: semantic-version: runs-on: ubuntu-latest @@ -10,16 +10,17 @@ jobs: with: repository: magento/magento-semver path: magento-semver - - name: Check out MageOS 2.4-develop + - name: Check out MageOS - $GITHUB_BASE_REF uses: actions/checkout@v3 with: path: mageos-magento2 # Change this to compare new code to other branches - ref: 2.4-develop - - name: Check out new changes + ref: $GITHUB_BASE_REF + - name: Check out new changes - $GITHUB_HEAD_REF uses: actions/checkout@v3 with: path: this-change + ref: $GITHUB_HEAD_REF - name: Install Composer uses: php-actions/composer@v6 with: From 3bcf10f92c4d9e3d6341c64b004a80dd33d5c817 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Tue, 1 Nov 2022 11:29:55 -0500 Subject: [PATCH 18/65] Use Expressions Instead of Env Vars * Switch to an expression for this use --- .github/workflows/semantic-checker.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index c8a7dc2d0b6a..472f80f58f6e 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -10,17 +10,17 @@ jobs: with: repository: magento/magento-semver path: magento-semver - - name: Check out MageOS - $GITHUB_BASE_REF + - name: Check out MageOS - ${{ github.base_ref }} uses: actions/checkout@v3 with: path: mageos-magento2 # Change this to compare new code to other branches - ref: $GITHUB_BASE_REF - - name: Check out new changes - $GITHUB_HEAD_REF + ref: ${{ github.base_ref }} + - name: Check out new changes - ${{ github.head_ref }} uses: actions/checkout@v3 with: path: this-change - ref: $GITHUB_HEAD_REF + ref: ${{ github.head_ref }} - name: Install Composer uses: php-actions/composer@v6 with: From c8c78d5ea2ca2a08edba1e8d9d4ba0d3c4577300 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Tue, 1 Nov 2022 22:18:51 -0500 Subject: [PATCH 19/65] Debug Forked Environment Variables * Output some variables to test --- .github/workflows/semantic-checker.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 472f80f58f6e..80b08b876572 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -16,9 +16,14 @@ jobs: path: mageos-magento2 # Change this to compare new code to other branches ref: ${{ github.base_ref }} + - name: Environment Output + run: | + echo "Event_path: ${GITHUB_EVENT_PATH}" + echo "Event: ${GITHUB_EVENT}" - name: Check out new changes - ${{ github.head_ref }} uses: actions/checkout@v3 with: + repository: ${{ github_event_path.repository.head.repo.full_name }} path: this-change ref: ${{ github.head_ref }} - name: Install Composer From e2431574942ec7c155f05b155810fdaa51c179b4 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Tue, 1 Nov 2022 22:20:45 -0500 Subject: [PATCH 20/65] Additional Environment Debugging * Additional environment debugging --- .github/workflows/semantic-checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 80b08b876572..8d37adea4981 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -23,7 +23,7 @@ jobs: - name: Check out new changes - ${{ github.head_ref }} uses: actions/checkout@v3 with: - repository: ${{ github_event_path.repository.head.repo.full_name }} + repository: ${{ github.event.pull_request.head.repo.full_name }} path: this-change ref: ${{ github.head_ref }} - name: Install Composer From ac74bfd4dc1f190cf8c7e336db2612884bf05374 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Tue, 1 Nov 2022 22:25:01 -0500 Subject: [PATCH 21/65] Corrected Event Syntax * Use the correct GitHub event variable --- .github/workflows/semantic-checker.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 8d37adea4981..ca8c62f99fdd 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -5,6 +5,10 @@ jobs: semantic-version: runs-on: ubuntu-latest steps: + - name: Environment Debugging Output + run: | + echo "Event_path: ${GITHUB_EVENT_PATH}" + echo "Event: ${{ github.event }}" - name: Check out Semamtic Version Checker tool uses: actions/checkout@v3 with: @@ -16,10 +20,6 @@ jobs: path: mageos-magento2 # Change this to compare new code to other branches ref: ${{ github.base_ref }} - - name: Environment Output - run: | - echo "Event_path: ${GITHUB_EVENT_PATH}" - echo "Event: ${GITHUB_EVENT}" - name: Check out new changes - ${{ github.head_ref }} uses: actions/checkout@v3 with: From 0d284a1a48d9259e3d9ffc17cac1063b6a8e164b Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Wed, 2 Nov 2022 08:23:56 -0500 Subject: [PATCH 22/65] Refactor to Use SVC Mirror * Refactor to use the MageOS SVC mirror * Make the branch comparisons more generic and re-usable --- .github/workflows/semantic-checker.yml | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index ca8c62f99fdd..67a48d3060d8 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -8,19 +8,23 @@ jobs: - name: Environment Debugging Output run: | echo "Event_path: ${GITHUB_EVENT_PATH}" - echo "Event: ${{ github.event }}" + echo "Event: ${{ github.event.pull_request }}" + # TODO: Add pull request labels + # - name: Clean up labels + # uses: andymckay/labeler@master + # with: + # remove-labels: "svc" - name: Check out Semamtic Version Checker tool uses: actions/checkout@v3 with: - repository: magento/magento-semver + repository: mage-os/mirror-magento-semver path: magento-semver - - name: Check out MageOS - ${{ github.base_ref }} + - name: Check out base branch - ${{ github.base_ref }} uses: actions/checkout@v3 with: - path: mageos-magento2 - # Change this to compare new code to other branches + path: base-branch ref: ${{ github.base_ref }} - - name: Check out new changes - ${{ github.head_ref }} + - name: Check out new changes - ${{ github.event.pull_request.head.repo.full_name }} / ${{ github.head_ref }} uses: actions/checkout@v3 with: repository: ${{ github.event.pull_request.head.repo.full_name }} @@ -38,17 +42,22 @@ jobs: - name: Install Composer Cache uses: actions/cache@v3 with: - path: echo "${{ steps.composer-cache.outputs.composer_cache_dir }}" + path: ${{ steps.composer-cache.outputs.composer_cache_dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install Semamtic Version Checker run: cd magento-semver && composer install - name: Run Semantic Version Checker (SVC) - run: magento-semver/bin/svc compare mageos-magento2 this-change + run: magento-semver/bin/svc compare base-branch this-change - name: Upload SVC output file uses: actions/upload-artifact@v3 with: name: svc-log-file path: svc.log + # TODO: Add pull request labels + # - name: Add labels + # uses: andymckay/labeler@master + # with: + # add-labels: "svc" From ccbeaeb8fe3cad331f14516c04eef2f843639f3d Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Wed, 2 Nov 2022 09:04:09 -0500 Subject: [PATCH 23/65] Repair Composer Cache Variable * Repaired the Composer cache variable --- .github/workflows/semantic-checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 67a48d3060d8..68da62a64936 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -38,7 +38,7 @@ jobs: id: composer-cache run: | cd magento-semver && - echo "{composer_cache_dir}={$(composer config cache-files-dir)} >> $GITHUB_OUTPUT" + echo "composer_cache_dir=$(composer config cache-files-dir) >> $GITHUB_OUTPUT" - name: Install Composer Cache uses: actions/cache@v3 with: From dff04f9ea79b330b208e13c351ede8d348ac96ae Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Wed, 2 Nov 2022 09:11:28 -0500 Subject: [PATCH 24/65] Repair Environment Syntax * Use the correct environment syntax --- .github/workflows/semantic-checker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 68da62a64936..703ef26a36b2 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -8,7 +8,7 @@ jobs: - name: Environment Debugging Output run: | echo "Event_path: ${GITHUB_EVENT_PATH}" - echo "Event: ${{ github.event.pull_request }}" + echo "Event: ${{ toJSON(github.event.pull_request) }}" # TODO: Add pull request labels # - name: Clean up labels # uses: andymckay/labeler@master @@ -38,7 +38,7 @@ jobs: id: composer-cache run: | cd magento-semver && - echo "composer_cache_dir=$(composer config cache-files-dir) >> $GITHUB_OUTPUT" + echo "composer_cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Install Composer Cache uses: actions/cache@v3 with: From 6dfb131e8a1a9cdbc7dcb527872914dede9d7b84 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Wed, 2 Nov 2022 09:17:30 -0500 Subject: [PATCH 25/65] Repair Debug Output * Repaired the debug output JSON call --- .github/workflows/semantic-checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 703ef26a36b2..0f48eb647f6a 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -8,7 +8,7 @@ jobs: - name: Environment Debugging Output run: | echo "Event_path: ${GITHUB_EVENT_PATH}" - echo "Event: ${{ toJSON(github.event.pull_request) }}" + echo 'Event: ${{ toJSON(github.event.pull_request) }}' # TODO: Add pull request labels # - name: Clean up labels # uses: andymckay/labeler@master From 1c247280e0872b82813d12fe017db848bb54047c Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Wed, 2 Nov 2022 09:57:28 -0500 Subject: [PATCH 26/65] Refactor as a Reusable Action * Moved this action to another repository --- .github/workflows/semantic-checker.yml | 60 +------------------------- 1 file changed, 2 insertions(+), 58 deletions(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 0f48eb647f6a..fb352583d653 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -2,62 +2,6 @@ name: MageOS Semantic Checker run-name: ${{ github.actor }} is checking the semantic version on: [pull_request] jobs: - semantic-version: - runs-on: ubuntu-latest - steps: - - name: Environment Debugging Output - run: | - echo "Event_path: ${GITHUB_EVENT_PATH}" - echo 'Event: ${{ toJSON(github.event.pull_request) }}' - # TODO: Add pull request labels - # - name: Clean up labels - # uses: andymckay/labeler@master - # with: - # remove-labels: "svc" - - name: Check out Semamtic Version Checker tool - uses: actions/checkout@v3 - with: - repository: mage-os/mirror-magento-semver - path: magento-semver - - name: Check out base branch - ${{ github.base_ref }} - uses: actions/checkout@v3 - with: - path: base-branch - ref: ${{ github.base_ref }} - - name: Check out new changes - ${{ github.event.pull_request.head.repo.full_name }} / ${{ github.head_ref }} - uses: actions/checkout@v3 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - path: this-change - ref: ${{ github.head_ref }} - - name: Install Composer - uses: php-actions/composer@v6 - with: - command: help - - name: Get Composer Cache Directory - id: composer-cache - run: | - cd magento-semver && - echo "composer_cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - name: Install Composer Cache - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.composer_cache_dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - name: Install Semamtic Version Checker - run: cd magento-semver && composer install - - name: Run Semantic Version Checker (SVC) - run: magento-semver/bin/svc compare base-branch this-change - - name: Upload SVC output file - uses: actions/upload-artifact@v3 - with: - name: svc-log-file - path: svc.log - # TODO: Add pull request labels - # - name: Add labels - # uses: andymckay/labeler@master - # with: - # add-labels: "svc" + call-semantic-version: + uses: lefte/mageos-infrastructure/.github/workflows/semantic-checker.yml@feature/github-actions-semantic-version-checker From 2e3f3e81b548a8d7dc929bd952541cae85436b53 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Wed, 2 Nov 2022 10:05:11 -0500 Subject: [PATCH 27/65] Commit Bump * Fire commit hook --- .github/workflows/semantic-checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index fb352583d653..7709da91fc56 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -1,5 +1,5 @@ name: MageOS Semantic Checker -run-name: ${{ github.actor }} is checking the semantic version +run-name: ${{ github.actor }} is checking the semantic version... on: [pull_request] jobs: call-semantic-version: From 775b9b30dbc0491d3b96d183b02b0f4d2ef79320 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Wed, 2 Nov 2022 17:32:00 -0500 Subject: [PATCH 28/65] Call the MageOS Reusable Action * Works against the mage-os/infrastructure reusable action now --- .github/workflows/semantic-checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml index 7709da91fc56..a4123f604f80 100644 --- a/.github/workflows/semantic-checker.yml +++ b/.github/workflows/semantic-checker.yml @@ -3,5 +3,5 @@ run-name: ${{ github.actor }} is checking the semantic version... on: [pull_request] jobs: call-semantic-version: - uses: lefte/mageos-infrastructure/.github/workflows/semantic-checker.yml@feature/github-actions-semantic-version-checker + uses: mage-os/infrastructure/.github/workflows/semantic-checker.yml@main From 99cb364d047cb6e32899b874c9f51d4822e3c900 Mon Sep 17 00:00:00 2001 From: Mage-OS <100189073+mage-os-ci@users.noreply.github.com> Date: Sun, 6 Nov 2022 11:30:43 +0100 Subject: [PATCH 29/65] Fix upstream repo URL --- .github/workflows/merge-upstream-changes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/merge-upstream-changes.yml b/.github/workflows/merge-upstream-changes.yml index 336c37ab8c76..ee74708ac31a 100644 --- a/.github/workflows/merge-upstream-changes.yml +++ b/.github/workflows/merge-upstream-changes.yml @@ -9,7 +9,7 @@ jobs: merge-from-mirror: uses: mage-os/infrastructure/.github/workflows/merge-upstream-changes.yml@main with: - upstream: https://github.com/mage-os/mageos-magento2.git + upstream: https://github.com/mage-os/mirror-magento2.git matrix: '{ branch: ["2.4-develop"] }' secrets: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} From e250289387af4429fcc6dcb37e50792257cc82a4 Mon Sep 17 00:00:00 2001 From: Damien Retzinger Date: Sat, 12 Nov 2022 08:48:38 -0500 Subject: [PATCH 30/65] ci: use MAGE_OS_CI_TOKEN as GITHUB_TOKEN --- .github/workflows/merge-upstream-changes.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/merge-upstream-changes.yml b/.github/workflows/merge-upstream-changes.yml index ee74708ac31a..8db3fcbaead8 100644 --- a/.github/workflows/merge-upstream-changes.yml +++ b/.github/workflows/merge-upstream-changes.yml @@ -13,3 +13,4 @@ jobs: matrix: '{ branch: ["2.4-develop"] }' secrets: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + GITHUB_TOKEN: ${{ secrets.MAGE_OS_CI_TOKEN }} From da8b58c42255e4e60abffce8146af3b41b5a2536 Mon Sep 17 00:00:00 2001 From: Damien Retzinger Date: Sat, 12 Nov 2022 09:02:15 -0500 Subject: [PATCH 31/65] ci: remove reserved word usage --- .github/workflows/merge-upstream-changes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/merge-upstream-changes.yml b/.github/workflows/merge-upstream-changes.yml index 8db3fcbaead8..2d5f9f6c7596 100644 --- a/.github/workflows/merge-upstream-changes.yml +++ b/.github/workflows/merge-upstream-changes.yml @@ -13,4 +13,4 @@ jobs: matrix: '{ branch: ["2.4-develop"] }' secrets: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - GITHUB_TOKEN: ${{ secrets.MAGE_OS_CI_TOKEN }} + MAGEOS_GITHUB_TOKEN: ${{ secrets.MAGE_OS_CI_TOKEN }} From 2c3526e2813eaa6f1ff302215bd61a6ad7b80ce8 Mon Sep 17 00:00:00 2001 From: mage-os-ci Date: Tue, 2 May 2023 13:25:23 +0000 Subject: [PATCH 32/65] Managed by Terraform From 3c2dd9eebe099757f90c757861e13f8c3b50e841 Mon Sep 17 00:00:00 2001 From: Damien Retzinger Date: Thu, 15 Jun 2023 16:45:10 -0400 Subject: [PATCH 33/65] ci: use mage-os/github-actions (#28) --- .github/workflows/coding-standard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/coding-standard.yml b/.github/workflows/coding-standard.yml index 512b23f8bddd..03a87ff180d0 100644 --- a/.github/workflows/coding-standard.yml +++ b/.github/workflows/coding-standard.yml @@ -13,4 +13,4 @@ jobs: runs-on: ubuntu-latest steps: - name: Run Coding Standard - uses: graycoreio/github-actions-magento2/coding-standard@main + uses: mage-os/github-actions/coding-standard@main From f1b175b58a7534876e2da018dc511b7b92dbe3e9 Mon Sep 17 00:00:00 2001 From: mage-os-ci Date: Sun, 23 Jul 2023 17:03:24 +0000 Subject: [PATCH 34/65] Managed by Terraform From 036c42cb10ee72a5fc71161aa5108677b021833f Mon Sep 17 00:00:00 2001 From: kamleshluhana Date: Tue, 8 Aug 2023 11:26:01 +0530 Subject: [PATCH 35/65] Apply Coding standard baseline github action --- .../workflows/coding-standard-baseline.yml | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/coding-standard-baseline.yml diff --git a/.github/workflows/coding-standard-baseline.yml b/.github/workflows/coding-standard-baseline.yml new file mode 100644 index 000000000000..c3de61c37110 --- /dev/null +++ b/.github/workflows/coding-standard-baseline.yml @@ -0,0 +1,67 @@ +name: M2 Coding Testing + +on: + push: + branches: [ 2.4-develop, develop, phpcs_baseline ] + pull_request: + branches: [ 2.4-develop, develop, phpcs_baseline ] + workflow_call: + inputs: + php_version: + type: string + required: true + default: "8.1" + description: "PHP version used to do the coding standard check." + + composer_version: + type: string + required: true + default: "2" + description: "The version of composer to use." + + path: + type: string + required: true + default: 'app/code' + description: "The directory (relative to the project root) in which the coding standard will be checked. Used when the event is not a pull request." + + version: + type: string + required: false + description: "The version of the coding standard to use. If not provided, will use the latest version." + + severity: + type: string + required: false + default: "8" + description: "The minimum severity required to display an error or warning (default: 5)" + + warning_severity: + type: string + required: false + default: "8" + description: "The minimum severity required to display a warning" + + error_severity: + type: string + required: false + default: "8" + description: "The minimum severity required to display an error" + +permissions: + contents: read + +jobs: + coding-standard: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: mage-os/github-actions/coding-standard-baseline@main + with: + php_version: "8.1" # Optional, will be used for Php version + composer_version: "2" + version: "31" # Optional, will use the latest if omitted. + severity: "8" # Optional, will use phpcs default of 5 if not specified. + warning_severity: "4" # Optional, will use warning severity value if not specified. + error_severity: "7" # Optional, will use error severity value if not specified. + baseline_version: "1.1.2" # Optional, will use for php codesniffer baseline version From b9f9a04de5ca3e19f489be3b4a537dc496402a37 Mon Sep 17 00:00:00 2001 From: kamleshluhana Date: Tue, 8 Aug 2023 11:33:04 +0530 Subject: [PATCH 36/65] Apply Coding standard baseline github action --- .github/workflows/coding-standard-baseline.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coding-standard-baseline.yml b/.github/workflows/coding-standard-baseline.yml index c3de61c37110..c513ae257369 100644 --- a/.github/workflows/coding-standard-baseline.yml +++ b/.github/workflows/coding-standard-baseline.yml @@ -2,9 +2,9 @@ name: M2 Coding Testing on: push: - branches: [ 2.4-develop, develop, phpcs_baseline ] + branches: [ 2.4-develop, develop, codingstandard_baseline_integration ] pull_request: - branches: [ 2.4-develop, develop, phpcs_baseline ] + branches: [ 2.4-develop, develop, codingstandard_baseline_integration ] workflow_call: inputs: php_version: From 02a34e2cc05c1ff9511dd61135946c834b97fd1d Mon Sep 17 00:00:00 2001 From: kamleshluhana Date: Tue, 8 Aug 2023 14:00:50 +0530 Subject: [PATCH 37/65] Fix php baseline issues --- .github/workflows/coding-standard-baseline.yml | 17 +++++------------ .../Magento/Backup/Block/Adminhtml/Backup.php | 1 + 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/coding-standard-baseline.yml b/.github/workflows/coding-standard-baseline.yml index c513ae257369..90dc1aeca001 100644 --- a/.github/workflows/coding-standard-baseline.yml +++ b/.github/workflows/coding-standard-baseline.yml @@ -1,10 +1,10 @@ -name: M2 Coding Testing +name: Coding Standard With Baseline on: push: branches: [ 2.4-develop, develop, codingstandard_baseline_integration ] pull_request: - branches: [ 2.4-develop, develop, codingstandard_baseline_integration ] + branches: [ 2.4-develop, develop] workflow_call: inputs: php_version: @@ -55,13 +55,6 @@ jobs: coding-standard: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - uses: mage-os/github-actions/coding-standard-baseline@main - with: - php_version: "8.1" # Optional, will be used for Php version - composer_version: "2" - version: "31" # Optional, will use the latest if omitted. - severity: "8" # Optional, will use phpcs default of 5 if not specified. - warning_severity: "4" # Optional, will use warning severity value if not specified. - error_severity: "7" # Optional, will use error severity value if not specified. - baseline_version: "1.1.2" # Optional, will use for php codesniffer baseline version + - name: Run Coding Standard + uses: mage-os/github-actions/coding-standard-baseline@main + diff --git a/app/code/Magento/Backup/Block/Adminhtml/Backup.php b/app/code/Magento/Backup/Block/Adminhtml/Backup.php index 2a4100805577..a950e8653bbb 100644 --- a/app/code/Magento/Backup/Block/Adminhtml/Backup.php +++ b/app/code/Magento/Backup/Block/Adminhtml/Backup.php @@ -29,6 +29,7 @@ class Backup extends \Magento\Backend\Block\Template protected function _prepareLayout() { parent::_prepareLayout(); + echo "1"; $this->getToolbar()->addChild( 'createSnapshotButton', From a3564f42ca5df96f613d4ab387a712228ffec0fb Mon Sep 17 00:00:00 2001 From: kamleshluhana Date: Tue, 8 Aug 2023 14:07:34 +0530 Subject: [PATCH 38/65] Fix php baseline issues --- .../workflows/coding-standard-baseline.yml | 52 ++----------------- .../Magento/Backup/Block/Adminhtml/Backup.php | 1 + 2 files changed, 4 insertions(+), 49 deletions(-) diff --git a/.github/workflows/coding-standard-baseline.yml b/.github/workflows/coding-standard-baseline.yml index 90dc1aeca001..cc7d9cfc61fe 100644 --- a/.github/workflows/coding-standard-baseline.yml +++ b/.github/workflows/coding-standard-baseline.yml @@ -1,60 +1,14 @@ name: Coding Standard With Baseline - on: - push: - branches: [ 2.4-develop, develop, codingstandard_baseline_integration ] pull_request: - branches: [ 2.4-develop, develop] - workflow_call: - inputs: - php_version: - type: string - required: true - default: "8.1" - description: "PHP version used to do the coding standard check." - - composer_version: - type: string - required: true - default: "2" - description: "The version of composer to use." - - path: - type: string - required: true - default: 'app/code' - description: "The directory (relative to the project root) in which the coding standard will be checked. Used when the event is not a pull request." - - version: - type: string - required: false - description: "The version of the coding standard to use. If not provided, will use the latest version." - - severity: - type: string - required: false - default: "8" - description: "The minimum severity required to display an error or warning (default: 5)" - - warning_severity: - type: string - required: false - default: "8" - description: "The minimum severity required to display a warning" - - error_severity: - type: string - required: false - default: "8" - description: "The minimum severity required to display an error" - + branches: + - 2.4-develop permissions: contents: read - jobs: coding-standard: runs-on: ubuntu-latest steps: - - name: Run Coding Standard + - name: Run Coding Standard Baseline uses: mage-os/github-actions/coding-standard-baseline@main diff --git a/app/code/Magento/Backup/Block/Adminhtml/Backup.php b/app/code/Magento/Backup/Block/Adminhtml/Backup.php index a950e8653bbb..c97395ad88c5 100644 --- a/app/code/Magento/Backup/Block/Adminhtml/Backup.php +++ b/app/code/Magento/Backup/Block/Adminhtml/Backup.php @@ -30,6 +30,7 @@ protected function _prepareLayout() { parent::_prepareLayout(); echo "1"; + echo "22"; $this->getToolbar()->addChild( 'createSnapshotButton', From e8eff1c59afc32f4e2edb4cb9829efed7214f7b4 Mon Sep 17 00:00:00 2001 From: kamleshluhana Date: Tue, 8 Aug 2023 14:14:01 +0530 Subject: [PATCH 39/65] revert backup file to original one --- app/code/Magento/Backup/Block/Adminhtml/Backup.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/code/Magento/Backup/Block/Adminhtml/Backup.php b/app/code/Magento/Backup/Block/Adminhtml/Backup.php index c97395ad88c5..2a4100805577 100644 --- a/app/code/Magento/Backup/Block/Adminhtml/Backup.php +++ b/app/code/Magento/Backup/Block/Adminhtml/Backup.php @@ -29,8 +29,6 @@ class Backup extends \Magento\Backend\Block\Template protected function _prepareLayout() { parent::_prepareLayout(); - echo "1"; - echo "22"; $this->getToolbar()->addChild( 'createSnapshotButton', From f773b89680bd355459bf0a8369cbed2c4912f9a8 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 15 Aug 2023 14:20:27 +0100 Subject: [PATCH 40/65] feat: NX based Unit Testing (#31) --- .github/workflows/unit-tests.yml | 13 +++++++++++++ supported-services.json | 8 ++++++++ 2 files changed, 21 insertions(+) create mode 100644 .github/workflows/unit-tests.yml create mode 100644 supported-services.json diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml new file mode 100644 index 000000000000..dd29dfcb9b02 --- /dev/null +++ b/.github/workflows/unit-tests.yml @@ -0,0 +1,13 @@ +name: Unit Tests +run-name: ${{ github.actor }} is running Unit Tests +on: + pull_request: + branches: + - 2.4-develop + +permissions: + contents: write + +jobs: + run-unit-tests: + uses: mage-os/infrastructure/.github/workflows/unit-tests.yml@main diff --git a/supported-services.json b/supported-services.json new file mode 100644 index 000000000000..db11fc5c6880 --- /dev/null +++ b/supported-services.json @@ -0,0 +1,8 @@ +{ + "services": { + "php": [ + 8.1, + 8.2 + ] + } +} \ No newline at end of file From 894356d6a7c27e1fd6ab02f97ea75799e0f2f9a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tjitse=20Efd=C3=A9?= Date: Mon, 18 Sep 2023 10:54:20 +0200 Subject: [PATCH 41/65] ci: remove phpcs coding standard workflow --- .github/workflows/coding-standard.yml | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 .github/workflows/coding-standard.yml diff --git a/.github/workflows/coding-standard.yml b/.github/workflows/coding-standard.yml deleted file mode 100644 index 03a87ff180d0..000000000000 --- a/.github/workflows/coding-standard.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Coding Standard - -on: - pull_request: - branches: - - 2.4-develop - -permissions: - contents: read - -jobs: - coding-standard: - runs-on: ubuntu-latest - steps: - - name: Run Coding Standard - uses: mage-os/github-actions/coding-standard@main From db9ec29879b5a045b0917c19141dcc4a3f4a6846 Mon Sep 17 00:00:00 2001 From: Vinai Kopp Date: Fri, 6 Oct 2023 10:15:53 +1300 Subject: [PATCH 42/65] ci: remove semantic version check workflow (#39) The workflow currently seems to be broken. The decision has been made to disable the workflow until we have the resources to fork and fix the project, and decide to do so. --- .github/workflows/semantic-checker.yml | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .github/workflows/semantic-checker.yml diff --git a/.github/workflows/semantic-checker.yml b/.github/workflows/semantic-checker.yml deleted file mode 100644 index a4123f604f80..000000000000 --- a/.github/workflows/semantic-checker.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: MageOS Semantic Checker -run-name: ${{ github.actor }} is checking the semantic version... -on: [pull_request] -jobs: - call-semantic-version: - uses: mage-os/infrastructure/.github/workflows/semantic-checker.yml@main - From 4310d628bd7d8696ff8309592d18efb40a4a327d Mon Sep 17 00:00:00 2001 From: Kiel Date: Sat, 7 Oct 2023 18:36:49 +0100 Subject: [PATCH 43/65] feat: update branding * Update Admin Branding * Update Copyright Notice + Remove Magento icon * Update Privacy Policy and Bug Report Links * Update Fallback Logo URL to Mage-OS Logo --- app/code/Magento/Backend/i18n/en_US.csv | 3 + .../view/adminhtml/layout/admin_login.xml | 2 +- .../Backend/view/adminhtml/layout/default.xml | 6 +- .../adminhtml/templates/page/copyright.phtml | 15 ++- .../adminhtml/templates/page/footer.phtml | 10 +- .../adminhtml/templates/page/header.phtml | 112 ++++++++++-------- .../Email/view/frontend/web/logo_email.png | Bin 5121 -> 23994 bytes .../frontend/templates/html/notices.phtml | 6 +- .../view/frontend/web/images/mage-os-icon.svg | 6 + .../view/frontend/web/images/magento-icon.svg | 1 - .../Theme/view/adminhtml/web/favicon.ico | Bin 34494 -> 4286 bytes .../Theme/view/frontend/web/favicon.ico | Bin 34494 -> 4286 bytes .../Theme/view/install/web/favicon.ico | Bin 34494 -> 4286 bytes .../web/css/source/module/_footer.less | 26 +--- .../web/css/source/module/_menu.less | 2 +- .../app/setup/styles/less/lib/_variables.less | 1 - .../backend/web/images/mage-os-icon.svg | 6 + .../backend/web/images/magento-icon.svg | 1 - .../Magento/blank/web/images/logo.svg | 20 +++- lib/web/images/logo.svg | 20 +++- lib/web/images/mage-os-logo.svg | 19 +++ lib/web/images/magento-logo.svg | 1 - pub/errors/default/images/favicon.ico | Bin 1150 -> 4286 bytes pub/errors/default/images/logo.gif | Bin 11605 -> 16436 bytes setup/pub/images/favicon/favicon-16x16.png | Bin 281 -> 1122 bytes setup/pub/images/favicon/favicon-32x32.png | Bin 392 -> 1540 bytes setup/pub/images/favicon/favicon-96x96.png | Bin 739 -> 2699 bytes setup/pub/images/favicon/favicon.ico | Bin 15086 -> 4286 bytes setup/pub/images/mage-os-logo.svg | 19 +++ setup/pub/images/magento-logo.svg | 1 - setup/view/magento/setup/index.phtml | 29 +++-- 31 files changed, 208 insertions(+), 98 deletions(-) create mode 100644 app/code/Magento/LoginAsCustomerFrontendUi/view/frontend/web/images/mage-os-icon.svg delete mode 100644 app/code/Magento/LoginAsCustomerFrontendUi/view/frontend/web/images/magento-icon.svg create mode 100644 app/design/adminhtml/Magento/backend/web/images/mage-os-icon.svg delete mode 100644 app/design/adminhtml/Magento/backend/web/images/magento-icon.svg create mode 100644 lib/web/images/mage-os-logo.svg delete mode 100644 lib/web/images/magento-logo.svg create mode 100644 setup/pub/images/mage-os-logo.svg delete mode 100644 setup/pub/images/magento-logo.svg diff --git a/app/code/Magento/Backend/i18n/en_US.csv b/app/code/Magento/Backend/i18n/en_US.csv index b72db96d6a59..64ce31433b19 100644 --- a/app/code/Magento/Backend/i18n/en_US.csv +++ b/app/code/Magento/Backend/i18n/en_US.csv @@ -240,7 +240,10 @@ password,password "Reload Data","Reload Data" "Browse Files...","Browse Files..." Magento,Magento +"Mage-OS","Mage-OS" "Copyright © %1 Magento Commerce Inc. All rights reserved.","Copyright © %1 Magento Commerce Inc. All rights reserved." +"Thank you for choosing Mage-OS.","Thank you for choosing Mage-OS." +"Learn more about Mage-OS.","Learn more about Mage-OS." "ver. %1","ver. %1" "Magento Admin Panel","Magento Admin Panel" "Account Setting","Account Setting" diff --git a/app/code/Magento/Backend/view/adminhtml/layout/admin_login.xml b/app/code/Magento/Backend/view/adminhtml/layout/admin_login.xml index 9ddcb0f3b3bb..85e184df0d49 100644 --- a/app/code/Magento/Backend/view/adminhtml/layout/admin_login.xml +++ b/app/code/Magento/Backend/view/adminhtml/layout/admin_login.xml @@ -24,7 +24,7 @@ - images/magento-logo.svg + images/mage-os-logo.svg diff --git a/app/code/Magento/Backend/view/adminhtml/layout/default.xml b/app/code/Magento/Backend/view/adminhtml/layout/default.xml index 1c28d5fc5935..8feb4d5163cb 100644 --- a/app/code/Magento/Backend/view/adminhtml/layout/default.xml +++ b/app/code/Magento/Backend/view/adminhtml/layout/default.xml @@ -26,7 +26,7 @@ logo Community Edition - images/magento-icon.svg + images/mage-os-icon.svg @@ -63,12 +63,12 @@ - https://www.adobe.com/privacy/policy.html + https://mage-os.org/privacy-policy - https://github.com/magento/magento2/issues + https://github.com/mage-os/mageos-magento2/issues diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/copyright.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/copyright.phtml index e3a5c84ea452..293fe82b7f09 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/copyright.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/page/copyright.phtml @@ -3,6 +3,17 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + +use Magento\Backend\Block\Page\Copyright; +use Magento\Framework\Escaper; + +/** @var Escaper $escaper */ +/** @var Copyright $block */ ?> - -escapeHtml(__('Copyright © %1 Magento Commerce Inc. All rights reserved.', date('Y'))) ?> +escapeHtml(__('Thank you for choosing Mage-OS.')); ?> + + escapeHtml(__('Learn more about Mage-OS.')); ?> + diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/footer.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/footer.phtml index 3f21dcda9a54..7b1f14d28a50 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/footer.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/page/footer.phtml @@ -3,8 +3,14 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + +use Magento\Backend\Block\Page\Footer; +use Magento\Framework\Escaper; + +/** @var Escaper $escaper */ +/** @var Footer $block */ ?>

- escapeHtml(__('Magento')) ?> - escapeHtml(__('ver. %1', $block->getMagentoVersion())) ?> + escapeHtml(__('Mage-OS')); ?> + escapeHtml(__('ver. %1', $block->getMagentoVersion())); ?>

diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml index 89f144664003..f5d9172a51c4 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml @@ -3,62 +3,74 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); -/** @var $block \Magento\Backend\Block\Page\Header */ +use Magento\Backend\Block\Page\Header; +use Magento\Framework\Escaper; + +/** @var Escaper $escaper */ +/** @var Header $block */ $part = $block->getShowPart(); ?> - - hasEdition() ? 'data-edition="' . $block->escapeHtml($block->getEdition()) . '"' : ''; ?> - hasLogoImageSrc()) ? $block->escapeHtml($block->getLogoImageSrc()) : 'images/magento-logo.svg' ?> - - class="logo"> - <?= $block->escapeHtml(__('Magento Admin Panel')) ?> - - - + + getChildHtml(); ?> diff --git a/app/code/Magento/Email/view/frontend/web/logo_email.png b/app/code/Magento/Email/view/frontend/web/logo_email.png index 215e9d06edcdc79fef5565f7196d4ff551fe16f7..ac822941c785b93d21cae5a1d193379d00d8f319 100644 GIT binary patch literal 23994 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'Magento_LoginAsCustomerFrontendUi::images/magento-icon.svg'); +$viewFileUrl = $block->getViewFileUrl('Magento_LoginAsCustomerFrontendUi::images/mage-os-icon.svg'); ?> getConfig()->isEnabled()): ?>
getViewFileUrl('Magento_LoginAsCustomerFrontendUi::images