Skip to content

Release and publish #272

Release and publish

Release and publish #272

name: Release and publish
on:
release:
types: [released, prereleased]
jobs:
build:
name: Build the base artifact
runs-on: ubuntu-latest
outputs:
version: ${{ steps.set_version.outputs.version }}
steps:
- name: Checkout
uses: actions/checkout@v2.0.0
- name: Setup node env 🏗
uses: actions/setup-node@v3
with:
node-version: 18
registry-url: 'https://registry.npmjs.org'
scope: '@prestashopcorp'
- name: Set version
id: set_version
run: |
echo "version=$(echo "${{ github.event.release.tag_name }}" | sed 's/^v//' | cut -d'-' -f1)" >> "$GITHUB_OUTPUT"
- name: Bump version
run: |
VERSION=${{ steps.set_version.outputs.version }} \
make version
# - name: Install composer dependencies
# run: composer install --no-dev -o
- name: Scoped dependencies
run: make php-scoper
- name: Get yarn cache directory path 🛠
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
working-directory: ./_dev
- name: Cache node_modules 📦
uses: actions/cache@v2
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install _dev dependencies 👨🏻‍💻
working-directory: ./_dev
run: yarn --frozen-lockfile --silent
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_RO }}
- name: Build apps
working-directory: ./_dev
run: yarn build
# - name: Clean-up project
# uses: PrestaShopCorp/github-action-clean-before-deploy@v1.0
- name: Clean-up project 🧹
run: |
rm -rf .git
rm -rf _dev
- name: Create & upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}
path: ${{ github.workspace }}
include-hidden-files: true
upload_release_asset_production:
name: Upload the production zip asset to the release
runs-on: ubuntu-latest
needs: build
outputs:
zip_file: ${{ steps.set_zip_file.outputs.zip_file }}
steps:
- name: Set the zip file
id: set_zip_file
run: |
echo "zip_file=${{ github.event.repository.name }}-${{ needs.build.outputs.version }}.zip" >> "$GITHUB_ENV"
echo "zip_file=${{ github.event.repository.name }}-${{ needs.build.outputs.version }}.zip" >> "$GITHUB_OUTPUT"
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ github.event.repository.name }}
path: ${{ github.workspace }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v0
with:
project_id: ${{ secrets.GCLOUD_PROJECT_PRODUCTION }}
service_account_key: ${{ secrets.G_CREDENTIAL_PRODUCTION }}
export_default_credentials: true
- name: Copy env files
run: |
gcloud components install beta
gcloud beta secrets versions access latest --secret="accounts-module-config" > ${{ github.workspace }}/config/config.yml
env:
GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.G_CREDENTIAL_PRODUCTION }}
- name: Prepare the production zip
run: |
cd ${{ github.workspace }}
sh ./scripts/bundle-module.sh ${{ env.zip_file }}
env:
ENV_FILE: ${{ secrets.PS_ACCOUNTS_ENV_PROD }}
- name: Publish the production zip
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ github.workspace }}/dist/${{ env.zip_file }}
asset_name: ${{ env.zip_file }}
asset_content_type: application/zip
upload_release_asset_preprod:
name: Upload the preprod zip asset to the release
runs-on: ubuntu-latest
needs: build
steps:
- name: Set the zip file
id: set_zip_file
run: |
echo "zip_file=${{ github.event.repository.name }}_preprod-${{ needs.build.outputs.version }}.zip" >> "$GITHUB_ENV"
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ github.event.repository.name }}
path: ${{ github.workspace }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v0
with:
project_id: ${{ secrets.GCLOUD_PROJECT_PREPROD }}
service_account_key: ${{ secrets.G_CREDENTIAL_PREPROD }}
export_default_credentials: true
- name: Copy env files
run: |
gcloud components install beta
gcloud beta secrets versions access latest --secret="accounts-module-config" > ${{ github.workspace }}/config/config.yml
env:
GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.G_CREDENTIAL_PREPROD }}
- name: Prepare the preprod zip
run: |
cd ${{ github.workspace }}
sh ./scripts/bundle-module.sh ${{ env.zip_file }}
- name: Publish the preprod zip
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ github.workspace }}/dist/${{ env.zip_file }}
asset_name: ${{ env.zip_file }}
asset_content_type: application/zip
publish_to_marketplace:
name: Publish the module to the addons marketplace
runs-on: ubuntu-latest
needs: upload_release_asset_production
if: "!github.event.release.prerelease"
steps:
- name: Checkout
uses: actions/checkout@v2.0.0
- name: Download release asset
uses: dsaltares/fetch-gh-release-asset@0.06
with:
repo: ${{ github.event.repository.full_name }}
version: ${{ github.event.release.id }}
file: ${{ needs.upload_release_asset_production.outputs.zip_file }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare publishing tool
run: |
composer global require prestashop/publish-on-marketplace
- name: Release zip
run: |
~/.composer/vendor/bin/publish-on-marketplace \
--archive=$PWD/${{ needs.upload_release_asset_production.outputs.zip_file }} \
--metadata-json=$PWD/.github/mktp-metadata.json \
--changelog="${{ github.event.release.body }}" \
--debug
env:
MARKETPLACE_API_KEY: ${{ secrets.MARKETPLACE_API_KEY }}