@4rk/staticpages-cli

The command-line interface for staticpages mass hosting

Usage no npm install needed!

<script type="module">
  import 4rkStaticpagesCli from 'https://cdn.skypack.dev/@4rk/staticpages-cli';
</script>

README

Staticpages CLI

This is the client-side command line interface for our staticpages backend.

Usage

  1. Install it using either npm or yarn: npm install -g @4rk/staticpages-cli
  2. Create a .env file with corresponding parameters as explained in the next section
  3. Run staticpages-cli

Configuration

Configuration parameters originate using the following precedence:

  1. Environment variables
  2. Environment variables placed in a .env file
  3. Command line parameters. Check -h

Available environment variables are:

  • DEPLOY_KEY
  • DEPLOY_SERVER
  • DEPLOY_SRC

How does it work

When running the client, it:

  1. Loads configuration parameters
  2. Checks whether the folder DEPLOY_SRC exists, otherwise it fails
  3. Retrieves the current git branch using git rev-parse --abbrev-ref HEAD
  4. Asks the staticpages API at DEPLOY_SERVER using DEPLOY_KEY for the rsync remote, deploy URL etc
  5. Uploads all files from DEPLOY_SRC via rsync
  6. Displays the upload URL

GitLab CI dynamic environment URLs

In order to automatically create a new dynamic environment URL in GitLab after deployment, the CLI automatically creates a file deploy.env when detecting to be run within GitLab CI. Integration into your pipeline works as follows:

deploy:
    script:
        - yarn build
        - staticpages-cli
    artifacts:
        reports:
            dotenv: deploy.env
    environment:
        name: review/$CI_COMMIT_REF_SLUG
        url: $DEPLOYMENT_URL
        on_stop: delete_deploy
        auto_stop_in: 2 weeks

# delete deployment on environment stop
delete_deploy:
    script:
        - "staticpages-cli --delete"
    when: manual
    environment:
        name: review/$CI_COMMIT_REF_SLUG
        action: stop

See also Set dynamic environment URLs after a job finishes.

Other modes

There is a --delete mode that removes the deployment from the remote.

There is a --debug mode to enable verbose logging.

License

See LICENSE