Skip to content

Create update package #378

Create update package

Create update package #378

Workflow file for this run

name: Create update package
on:
workflow_dispatch:
branches:
- "**"
push:
tags:
- "*"
schedule:
- cron:
'0 1 * * *'
jobs:
create-update-package:
env:
PACKAGE_PREFIX: 'update'
PACKAGE_DELIMITER: _
UPDATE_ASSET_DIR: './update-assets/'
runs-on: ubuntu-latest
steps:
- name: Create version
run: |
TAG=${{ github.ref_name }}
echo "VERSION=$(echo ${TAG#v} | cut -d "-" -f 1)" >> $GITHUB_ENV
echo "VERSION_TEXT=$(echo ${TAG#v} | cut -d "-" -s -f 2)" >> $GITHUB_ENV
shell: bash
- name: Clone
uses: actions/checkout@v4
- name: Set current date as env variable
run: echo "REVISION=$(git log -1 --format="%at" | xargs -I{} date -d @{} +'%Y%m%d%H%M')" >> $GITHUB_ENV
- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Install Composer
run: |
composer install --no-dev
cd recovery/common && composer install --no-dev
- name: Download last package
run: |
mkdir ./output
LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/shopware5/shopware/releases/latest)
LATEST_VERSION_ID=$(echo $LATEST_RELEASE | sed -e 's/.*"id":\([^",]*\).*/\1/')
ASSETS=$(curl -L -s -H 'Accept: application/json' https://api.github.com/repos/shopware5/shopware/releases/$LATEST_VERSION_ID/assets)
ARTIFACT_URL=$(echo $ASSETS | sed -e 's/.*"browser_download_url": "\([^",]*install[^",]*\)".*/\1/')
wget -O install.zip $ARTIFACT_URL
unzip install.zip -d ./output/release
- name: Replace placeholder
run: |
sed -i 's=___VERSION___=${{ env.VERSION }}=g' engine/Shopware/Kernel.php
sed -i 's=___VERSION_TEXT___=${{ env.VERSION_TEXT }}=g' engine/Shopware/Kernel.php
sed -i 's=___REVISION___=${{ env.REVISION }}=g' engine/Shopware/Kernel.php
sed -i 's=___VERSION___=${{ env.VERSION }}=g' recovery/install/data/version
sed -i 's=___VERSION_TEXT___=${{ env.VERSION_TEXT }}=g' recovery/install/data/version
shell: bash
- name: Create update asset dir
run: |
mkdir ${{ env.UPDATE_ASSET_DIR }}
- name: Create version file
run: |
echo "${{ github.ref_name }} ${{ env.REVISION }}" > ${{ env.UPDATE_ASSET_DIR }}version
- name: Generate cleanup list
run: php ./.github/deleted_files.php --input=$(pwd) > ${{ env.UPDATE_ASSET_DIR }}cleanup.txt
- run: cat ${{ env.UPDATE_ASSET_DIR }}cleanup.txt
- name: Generate cleanup list
run: ./.github/deleted_files_vendor.sh -o $(pwd)/output/release/vendor -n $(pwd)/vendor $(pwd) >> ${{ env.UPDATE_ASSET_DIR }}cleanup.txt
- run: cat ${{ env.UPDATE_ASSET_DIR }}cleanup.txt
- name: Copy Migrations
run: |
mv ./_sql/migrations ${{ env.UPDATE_ASSET_DIR }}migrations
- name: Dump SQL file with snippets
run: |
php bin/console sw:snippets:to:sql ${{ env.UPDATE_ASSET_DIR }}snippets.sql --force --include-default-plugins --force
- name: Create hash files
run: |
mkdir -p engine/Shopware/Components/Check/Data
find engine/Shopware themes -type f \( -iname '*.php' -o -iname '*.tpl' -o -iname '*.js' -o -iname '*.less' \) -print0 | xargs -0 md5sum | sort -k 2 -d > engine/Shopware/Components/Check/Data/Files.md5sums
- name: Download CaRoot
run: |
wget -O ./engine/Shopware/Components/HttpClient/cacert.pem https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt
- name: Configure git
run: |
git config --global user.name "shopware5"
git config --global user.email "<>"
- name: Create Zip
run: |
rm install.zip
rm -rf ./output/release
rm -rf _sql
git add .
git commit -m "Create release package"
git archive -v -o ${{ env.PACKAGE_PREFIX }}.zip HEAD
zip -r ${{ env.PACKAGE_PREFIX }}.zip ./vendor ./recovery/common/vendor ${{ env.UPDATE_ASSET_DIR }} ${{ env.UPDATE_ASSET_DIR }}version ${{ env.UPDATE_ASSET_DIR }}cleanup.txt ${{ env.UPDATE_ASSET_DIR }}snippets.sql
- run: echo "SHA=$(sha1sum ${{ env.PACKAGE_PREFIX }}.zip | awk '{print $1}')" >> $GITHUB_ENV
- name: Rename Zip
run: |
mv ${{ env.PACKAGE_PREFIX }}.zip ${{ env.PACKAGE_PREFIX }}${{ env.PACKAGE_DELIMITER }}${{ env.SHA }}.zip
- name: Archive results
if: always()
uses: actions/upload-artifact@v4
with:
path: ${{ env.PACKAGE_PREFIX }}${{ env.PACKAGE_DELIMITER }}${{ env.SHA }}.zip
- name: Push to release
uses: xresloader/upload-to-github-release@v1.6.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
file: "*.zip"
tags: true
draft: true