Skip to content

Commit

Permalink
Merge pull request #105 from Shopify/adjust-dist-to-ci
Browse files Browse the repository at this point in the history
Moving to a `releases` branch
  • Loading branch information
elsom25 committed Mar 19, 2024
2 parents 7664c88 + 2cf4c0d commit 2e00f68
Show file tree
Hide file tree
Showing 48 changed files with 288 additions and 1,112,599 deletions.
5 changes: 0 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,14 @@ jobs:
ruby-version: 3.3.0

- name: Install bundler and gems
working-directory: ./dev
run: |
gem install bundler
bundle install --jobs 4 --retry 3
- name: Run unit tests
working-directory: ./dev
run: make unit_tests

- name: Run integration tests
working-directory: ./dev
run: make integration_tests

verify_schema:
Expand All @@ -48,7 +45,6 @@ jobs:
ruby-version: 3.3.0

- name: Install bundler and gems
working-directory: ./dev
run: |
gem install bundler
bundle install --jobs 4 --retry 3
Expand All @@ -59,5 +55,4 @@ jobs:
version: 'v0.7.0'

- name: Run tests
working-directory: ./dev
run: make vet_schema
2 changes: 0 additions & 2 deletions .github/workflows/deploy_branch_github_pages.yml.skip
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,11 @@ jobs:
version: 'v0.7.0'

- name: Install bundler and gems
working-directory: ./dev
run: |
gem install bundler
bundle install --jobs 4 --retry 3

- name: Generate dist & docs
working-directory: ./dev
run: make

- name: Upload data
Expand Down
47 changes: 47 additions & 0 deletions .github/workflows/deploy_dist.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Deploy distribution files

on:
push:
branches:
- master
workflow_dispatch:

concurrency:
group: "dist"
cancel-in-progress: false

permissions:
contents: write

jobs:
generate_dist:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3.0

- name: Install Cue
uses: cue-lang/setup-cue@v1.0.0
with:
version: 'v0.7.0'

- name: Install bundler and gems
run: |
gem install bundler
bundle install --jobs 4 --retry 3
- name: Generate dist & docs
run: make

- name: Deploy to releases branch
uses: s0/git-publish-subdir-action@develop
env:
REPO: self
BRANCH: releases
FOLDER: dist
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 0 additions & 2 deletions .github/workflows/deploy_github_pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,11 @@ jobs:
version: 'v0.7.0'

- name: Install bundler and gems
working-directory: ./dev
run: |
gem install bundler
bundle install --jobs 4 --retry 3
- name: Generate dist & docs
working-directory: ./dev
run: make

- name: Upload data
Expand Down
14 changes: 12 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
.byebug_history
# generated schema data files to validate against
schema/attributes_data.cue
schema/categories_data.cue

# docs site
/_site
/docs/_data
/docs/assets/js/search_index.json
/dev/tmp/*

# dev files
/tmp/*
!/tmp/.gitkeep
.byebug_history

# generated dist files
/dist/*
!/dist/README.md
!/dist/img/
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
124 changes: 81 additions & 43 deletions dev/Makefile → Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,37 +18,79 @@ NUKE = $(FMT) "1;31" # bold red
ADVISORY = printf "\e[%sm!! %-21s\e[0;1m\n" "1;31" # bold red text with a !! prefix
RUN_CMD = printf "\e[%sm>> %-21s\e[0;1m\n" "1;34" # bold blue text with a >> prefix

# Inputs
CATEGORIES_DATA = $(shell find ../data/categories)
ATTRIBUTES_DATA = $(shell find ../data/attributes)

# Targets
###############################################################################
# INPUTS

CATEGORIES_DATA = $(shell find data/categories)
ATTRIBUTES_DATA = $(shell find data/attributes)


###############################################################################
# TARGETS
# Many commands generate many files (that'll expand), and Make isn't great at
# targeting arbitrary numbers of outputs, so we'll use sentinels.

# Note, this is only because bin/generate_docs generates multiple files
# and would probably generate more in the future. Make isn't great at targeting
# arbitrary numbers of outputs, so we'll use a sentinel instead.
# also required for generating dist files
# DOCS
GENERATED_DOCS_PATH = docs/_data
DOCS_GENERATED_SENTINEL = tmp/.docs_generated_sentinel
GENERATED_DOCS_PATH = ../docs/_data

# DIST
GENERATED_DIST_PATH = dist
DIST_GENERATED_SENTINEL = tmp/.dist_generated_sentinel
GENERATED_DIST_PATH = ../dist
CATEGORIES_JSON = $(GENERATED_DIST_PATH)/categories.json
ATTRIBUTES_JSON = $(GENERATED_DIST_PATH)/attributes.json
STATIC_VERSION_FILE = $(GENERATED_DIST_PATH)/VERSION
STATIC_LICENSE_FILE = $(GENERATED_DIST_PATH)/LICENSE
STATIC_CHANGELOG_FILE = $(GENERATED_DIST_PATH)/CHANGELOG.md

# DATA files to run application
LOCAL_DB = tmp/local.sqlite3

# CUE imports needed for schema validation
ATTRIBUTES_DATA_CUE = ../schema/attributes_data.cue
CATEGORIES_DATA_CUE = ../schema/categories_data.cue
ATTRIBUTES_DATA_CUE = schema/attributes_data.cue
CATEGORIES_DATA_CUE = schema/categories_data.cue

# DATA files to run application
LOCAL_DB = ../tmp/local.sqlite3
###############################################################################
# COMMANDS

# JSON files generated
CATEGORIES_JSON = ../dist/categories.json
ATTRIBUTES_JSON = ../dist/attributes.json
#
# BUILD commands and children
default: build
.PHONY: default

default: $(CATEGORIES_DATA_CUE) \
build: $(CATEGORIES_DATA_CUE) \
$(ATTRIBUTES_DATA_CUE) \
$(DOCS_GENERATED_SENTINEL)
.PHONY: default
$(DOCS_GENERATED_SENTINEL) \
$(STATIC_VERSION_FILE) \
$(STATIC_LICENSE_FILE) \
$(STATIC_CHANGELOG_FILE)
.PHONY: build

$(DOCS_GENERATED_SENTINEL): $(LOCAL_DB) $(CATEGORIES_DATA) $(ATTRIBUTES_DATA)
@$(GENERATE) "Building Docs" "$(GENERATED_DOCS_PATH)/*"
$(V)./bin/generate_docs
$(V)touch $@

$(DIST_GENERATED_SENTINEL): $(LOCAL_DB) $(CATEGORIES_DATA) $(ATTRIBUTES_DATA)
@$(GENERATE) "Building Dist" "$(GENERATED_DIST_PATH)/*.[json|txt]"
$(V)bin/generate_dist
$(V)touch $@

$(STATIC_VERSION_FILE):
@$(GENERATE) "Copying Version File" $(STATIC_VERSION_FILE)
$(V)cp -f VERSION $(STATIC_VERSION_FILE)

$(STATIC_LICENSE_FILE):
@$(GENERATE) "Copying License File" $(STATIC_LICENSE_FILE)
$(V)cp -f LICENSE $(STATIC_LICENSE_FILE)

$(STATIC_CHANGELOG_FILE):
@$(GENERATE) "Copying Changelog File" $(STATIC_CHANGELOG_FILE)
$(V)cp -f CHANGELOG.md $(STATIC_CHANGELOG_FILE)

#
# CLEAN
clean:
@$(NUKE) "Cleaning dev db" $(LOCAL_DB)
$(V)rm -f $(LOCAL_DB)
Expand All @@ -61,20 +103,32 @@ clean:
$(V)rm -f $(CATEGORIES_DATA_CUE)
@$(NUKE) "Cleaning Generated Dist Files" $(GENERATED_DIST_PATH)
$(V)rm -f $(DIST_GENERATED_SENTINEL)
$(V)rm -rf $(GENERATED_DIST_PATH)/*
$(V)rm -f $(STATIC_VERSION_FILE)
$(V)rm -f $(STATIC_LICENSE_FILE)
$(V)rm -f $(STATIC_CHANGELOG_FILE)
$(V)rm -rf $(GENERATED_DIST_PATH)/*.json
$(V)rm -rf $(GENERATED_DIST_PATH)/*.txt
.PHONY: clean

server:
#
# DOCS SERVER
server: $(DOCS_GENERATED_SENTINEL)
@$(RUN_CMD) "Running Server"
$(V)bundle exec jekyll serve --source ../docs --destination ../_site
$(V)bundle exec jekyll serve --source docs --destination _site
.PHONY: server

seed:
#
# DATABASE SETUP
seed: $(LOCAL_DB)
.PHONY: seed

$(LOCAL_DB):
@$(GENERATE) "Seeding Database" $(LOCAL_DB)
$(V)bin/seed
.PHONY: seed

test: vet_schema unit_tests integration_tests
#
# TESTS
test: unit_tests integration_tests vet_schema
.PHONY: test

unit_tests:
Expand All @@ -89,26 +143,10 @@ integration_tests:

vet_schema: $(CATEGORIES_DATA_CUE) $(ATTRIBUTES_DATA_CUE)
@$(RUN_CMD) "Validating Schema"
$(V)cd ../schema && cue vet
$(V)cd schema && cue vet
$(V)echo "Done!"
.PHONY: vet_schema

$(DOCS_GENERATED_SENTINEL): $(CATEGORIES_DATA) $(ATTRIBUTES_DATA)
@$(GENERATE) "Building Docs" "../docs/_data/*.yml"
$(V)./bin/generate_docs
$(V)touch $@

# This generates both dist/categories.json and dist/attributes.json
$(DIST_GENERATED_SENTINEL): $(LOCAL_DB) $(CATEGORIES_DATA) $(ATTRIBUTES_DATA)
@$(GENERATE) "Building Dist" "../dist/*.json"
$(V)bin/generate_dist
$(V)touch $@

$(LOCAL_DB): seed
ifeq ($(shell test -e $(LOCAL_DB) && echo -n yes),yes)
seed
endif

# TODO: These two targets can be done together
$(CATEGORIES_DATA_CUE): $(DIST_GENERATED_SENTINEL)
@$(GENERATE) "Importing $(CATEGORIES_JSON)" $(CATEGORIES_DATA_CUE)
Expand Down
Loading

0 comments on commit 2e00f68

Please sign in to comment.