# CoTech Website

## Introduction

This is a port of the current Wordpress version of the [CoTech Website][] to a statically-generated site using [Jekyll][].

## Run the site locally

You can run the site on your computer as if it were live online using Jekyll. You will need `git` and `ruby` installed on your machine to do this. Then clone the repository

### ... using docker

Make sure you have [docker](https://docs.docker.com/install/) (CE is fine) installed and running,
and [docker-compose](https://docs.docker.com/compose/install/) installed,
then:

    git clone git@git.coop:cotech/website.git
    cd website
    docker-compose up -d

And visit [localhost:4000](http://localhost:4000) to view the site.

There are two docker volumes used here:
* `vendor` - caches the ruby gems even if you recreate the containers
* `site` - holds the built site files to share them with httpd (and not clutter your local filesystem)

A few useful things you might want to do:

    # check the status of the containers
    docker-compose ps

    # stop all the containers (but don't remove them)
    docker-compose stop

    # stop and remove the containers (but leave the volumes)
    docker-compose down

    # remove everything
    docker-compose down -v

    # bring it back to life from any state you happen to be in
    docker-compose up -d

    # run some ruby/bundler commands
    docker-compose run jekyll bundle --version
    docker-compose run jekyll bundle update
    docker-compose run jekyll bundle exec jekyll --help

### ... directly on your machine

Install the dependencies for the project

    git clone git@git.coop:cotech/website.git
    cd website
    gem install bundler
    bundle install

Run a local web server so that you can view the site

    bundle exec jekyll server

And visit [localhost:4000](http://localhost:4000) to view the site.

**Note: not all the images will load as there is no `.htaccess` support locally**

## Deployment

### Dev/Staging

When changes are committed to the `master` branch the `.gitlab-ci.yml` file triggers the building of the site and then the copying of the results to [dev.coops.tech](https://dev.coops.tech).

### Production

You need to manually deploy the changes from dev to production.

1. View the changes on [dev.coops.tech](https://dev.coops.tech) and ensure you're happy for them to be pushed to production.

2. Visit [GitLab environments](https://git.coop/cotech/website/environments). __NOTE.__ If you don't have access to the environments page then post a message in the [Website category of the CoTech forum](https://community.coops.tech/c/cotech/website) to ask someone to do it for you.

3. Click the "Play" icon on the right of the screen in the row for the "dev" environment and choose "deploy:production".

4. Your changes will be visible in production when the commit listed in the "production" environment row matches the commit listed in the "dev" environment row.

## Contributing

There's a [list of bugs and improvements](https://git.coop/cotech/website/issues) in the repository. Feel free to add more, discuss or claim any of these issues to work on.

[CoTech Website]: https://www.coops.tech/
[Jekyll]: https://jekyllrb.com/
