Skip to content

Skywire/m2-actions-workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

M2 Github actions workflow

Installation

Clone this repo [email protected]:Skywire/m2-actions-workflow.git

Copy the workflows you want to use into your project's .github/worksflows/ directory

Available Workflows

Standard

These should be used on all projects

  • commit_lint - lint commit messages against conventional changelog standard
  • php - Run PHP test suites
  • static - Run static analysis (PHPCS)

Optional

These are optional or experimental workflows and should be added only as required

  • uat - Deploy to UAT via capistrano and run cypress test suite
  • production-deploy - Deploy to production via capistrano

Customisation

  • Update .github/workflows/php.yml to the version of PHP required

  • Update .github/workflows/static.yml and replace app/code/[ClientNamespace] with your client namespace, e.g app/code/FL

  • Update .github/workflows/config/integration/phpunit.xml and .github/workflows/config/unit/phpunit.xml with directories to test:

<directory suffix="Test.php">../../../app/code/Skywire/*/Test/Integration</directory>
  • Update .github/workflows/config/integration/phpunit.xml and whitelist code dir:
<directory suffix=".php">../../../app/code/Skywire</directory>
  • Remove .travis.yml if exists
  • Update github configuration as required to not allow merging without this passing

Deployment

Configure the following secrets

  • DESTINATION_HOSTNAME = The hostname or IP to deploy to
  • DEP_HOST_ALIAS = The host alias used in deployer
  • DESTINATION_HOST_PRIVATE_KEY = The SSH private key to connect to the host, ensure the public key has been added to ~/.ssh/authorized_keys
  • KNOWN_HOSTS = The signature of the destination host taken from ssh-keyscan -H [hostname]
  • SSH_CONFIG_FILE = The contents of the ~/.ssh/config file (if any)
  • OPENVPN_CERTIFICATE base64 encoded p12 certificate file

Example SSH_CONFIG_FILE

Host mage.hostname
    HostName acc.magestack.com
    User www-data

CI Specific Composer

This package provides a CI specific composer.json and composer.lock, composer-ci.json and composer-ci.lock should be copied to your project root. If you want to use the same composer for CI and your project uncomment .github/workflows/production-deploy.yml:46 and comment .github/workflows/production-deploy.yml:47

OpenVPN

If your destination server requires OpenVPN you will need to place an openvpn.conf configuration file and any certificates into .github/workflows/config/openvpn

To base64 encode the certificate use base64 <certificate_name>.p12

e.g base64 .github/workflows/config/openvpn/*.p12

Then copy this value into your OPENVPN_CERTIFICATE secret and delte all p12 files. Do not commit these to github

Edit the openvpn.conf file and replace the pkcs12 value with .github/workflows/config/openvpn/openvpn.p12

Hosts

To add a hosts file entry use

jobs:
  job_name:
    steps:
      - name: set /etc/hosts
        run: |
          echo 'localhost docker.example.com' | sudo tee -a /etc/hosts

Testproject.io

To run testproject tests add the testpoject job to your production-deploy.yaml

on:
    ...
jobs
  production_deploy:
    ...
  testproject:
    needs: [deploy]
    uses: ./.github/workflows/testproject.yaml
    secrets: inherit

Add testproject secrets

  • TP_API_KEY = Your testproject.io API key
  • TP_JOB_ID = The job you want to run (you can get this ID from the copy ID link in testproject itself)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages