From a0ec7b35716959c8e896ef63857172089280953a Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:23:12 -0700 Subject: [PATCH 01/11] Start moving to Github Actions deploys --- .github/workflows/middleman.yml | 21 ++++++++ Gemfile | 4 +- Gemfile.lock | 93 --------------------------------- config.rb | 38 +++++++------- 4 files changed, 42 insertions(+), 114 deletions(-) create mode 100644 .github/workflows/middleman.yml diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml new file mode 100644 index 0000000..67f1547 --- /dev/null +++ b/.github/workflows/middleman.yml @@ -0,0 +1,21 @@ +name: Middleman Build + +on: + push: {} + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + + - name: Install dependencies + run: bundle install + + - name: Build Middleman site + run: bundle exec middleman build diff --git a/Gemfile b/Gemfile index 77e1f4b..b5faa9d 100644 --- a/Gemfile +++ b/Gemfile @@ -11,8 +11,8 @@ gem "wdm", "~> 0.1.0", platforms: %i[mswin mingw] gem "tzinfo-data", platforms: %i[mswin mingw jruby] gem "middleman-autoprefixer" -gem "middleman-s3_sync", github: "fredjean/middleman-s3_sync" -gem "middleman-cdn" +# gem "middleman-s3_sync", github: "fredjean/middleman-s3_sync" +# gem "middleman-cdn" gem "sass" gem "bootstrap-sass" diff --git a/Gemfile.lock b/Gemfile.lock index 84168e3..2fc4a76 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,18 +1,3 @@ -GIT - remote: https://github.com/fredjean/middleman-s3_sync.git - revision: 39c3b84aafadbc8496f8fd8a139ef0117cfba62a - specs: - middleman-s3_sync (4.0.3) - ansi (~> 1.5.0) - fog-aws (>= 0.1.1) - map - middleman-cli - middleman-core (>= 4.0.0) - mime-types (~> 3.1) - parallel - ruby-progressbar - unf - GEM remote: https://rubygems.org/ specs: @@ -31,7 +16,6 @@ GEM uri (>= 0.13.1) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) - ansi (1.5.0) autoprefixer-rails (10.4.19.0) execjs (~> 2) aws-eventstream (1.3.2) @@ -54,9 +38,6 @@ GEM bootstrap-sass (3.4.1) autoprefixer-rails (>= 5.2.1) sassc (>= 2.0.0) - builder (3.3.0) - cloudflare (3.2.1) - rest-client (~> 2.0.2) coderay (1.1.3) coffee-script (2.4.1) coffee-script-source @@ -66,64 +47,28 @@ GEM connection_pool (2.5.0) contracts (0.17.2) csv (3.3.2) - domain_name (0.6.20240107) dotenv (3.1.7) drb (2.2.1) erubi (1.13.1) - excon (0.112.0) execjs (2.10.0) - faraday (0.17.6) - multipart-post (>= 1.2, < 3) fast_blank (1.0.1) fastimage (2.4.0) - fastly (1.15.0) ffi (1.17.1) - fog-aws (1.4.1) - fog-core (~> 1.38) - fog-json (~> 1.0) - fog-xml (~> 0.1) - ipaddress (~> 0.8) - fog-core (1.45.0) - builder - excon (~> 0.58) - formatador (~> 0.2) - fog-json (1.2.0) - fog-core - multi_json (~> 1.10) - fog-xml (0.1.5) - fog-core - nokogiri (>= 1.5.11, < 2.0.0) - formatador (0.3.0) haml (5.2.2) temple (>= 0.8.0) tilt hamster (3.0.0) concurrent-ruby (~> 1.0) hashie (5.0.0) - http-cookie (1.0.8) - domain_name (~> 0.5) - httparty (0.22.0) - csv - mini_mime (>= 1.0.0) - multi_xml (>= 0.5.2) i18n (1.14.7) concurrent-ruby (~> 1.0) - ipaddress (0.8.3) jmespath (1.6.2) - jwt (2.10.1) - base64 kramdown (2.5.1) rexml (>= 3.3.9) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) logger (1.6.6) - map (6.6.0) - maxcdn (0.4.0) - addressable (~> 2.4) - faraday (~> 0.9) - net-http-persistent (~> 2.9) - signet (~> 0.7) memoist (0.16.2) method_source (1.1.0) middleman (4.6.0) @@ -132,15 +77,6 @@ GEM middleman-autoprefixer (3.0.0) autoprefixer-rails (~> 10.0) middleman-core (>= 4.0.0) - middleman-cdn (0.3.2) - activesupport (>= 4.1) - ansi (~> 1.5) - cloudflare (~> 3.2.1) - fastly (~> 1.1) - fog-aws (~> 1.4) - httparty (~> 0.13) - maxcdn (~> 0.1) - middleman (>= 3.2) middleman-cli (4.6.0) thor (>= 0.17.0, < 1.3.0) middleman-core (4.6.0) @@ -171,23 +107,8 @@ GEM toml uglifier (>= 3, < 5) webrick - mime-types (3.6.0) - logger - mime-types-data (~> 3.2015) - mime-types-data (3.2025.0304) - mini_mime (1.1.5) - mini_portile2 (2.8.8) minitest (5.25.5) - multi_json (1.15.0) - multi_xml (0.7.1) - bigdecimal (~> 3.1) - multipart-post (2.4.1) mutex_m (0.3.0) - net-http-persistent (2.9.4) - netrc (0.11.0) - nokogiri (1.18.4) - mini_portile2 (~> 2.8.2) - racc (~> 1.4) padrino-helpers (0.15.3) i18n (>= 0.6.7, < 2) padrino-support (= 0.15.3) @@ -199,7 +120,6 @@ GEM coderay (~> 1.1) method_source (~> 1.0) public_suffix (6.0.1) - racc (1.8.1) rack (3.1.12) rackup (2.2.1) rack (>= 3) @@ -207,12 +127,7 @@ GEM rb-inotify (0.11.1) ffi (~> 1.0) redcarpet (3.3.4) - rest-client (2.0.2) - http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 4.0) - netrc (~> 0.8) rexml (3.4.1) - ruby-progressbar (1.13.0) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) @@ -222,11 +137,6 @@ GEM ffi (~> 1.9) securerandom (0.4.1) servolux (0.13.0) - signet (0.19.0) - addressable (~> 2.8) - faraday (>= 0.17.5, < 3.a) - jwt (>= 1.5, < 3.0) - multi_json (~> 1.10) temple (0.10.3) thor (1.2.2) tilt (2.6.0) @@ -236,7 +146,6 @@ GEM concurrent-ruby (~> 1.0) uglifier (4.2.1) execjs (>= 0.3.0, < 3) - unf (0.2.0) uri (1.0.3) webrick (1.9.1) @@ -253,8 +162,6 @@ DEPENDENCIES haml (~> 5.0) middleman (~> 4.6.0) middleman-autoprefixer - middleman-cdn - middleman-s3_sync! mutex_m pry redcarpet (~> 3.3.0) diff --git a/config.rb b/config.rb index 73a2674..1c736ee 100644 --- a/config.rb +++ b/config.rb @@ -95,23 +95,23 @@ def navbar_item(text_or_url, url = nil, &block) # set :http_prefix, "/Content/images/" end -aws_creds = Aws::SharedCredentials.new(profile_name: "neil").credentials - -activate :s3_sync do |s3_sync| - s3_sync.bucket = "gamewrap.interactiveliterature.org" # The name of the S3 bucket you are targeting. This is globally unique. - s3_sync.region = "us-east-1" # The AWS region for your bucket. - s3_sync.aws_access_key_id = aws_creds.access_key_id - s3_sync.aws_secret_access_key = aws_creds.secret_access_key - s3_sync.path_style = true - s3_sync.index_document = "index.html" - s3_sync.error_document = "error.html" -end +# aws_creds = Aws::SharedCredentials.new(profile_name: "neil").credentials + +# activate :s3_sync do |s3_sync| +# s3_sync.bucket = "gamewrap.interactiveliterature.org" # The name of the S3 bucket you are targeting. This is globally unique. +# s3_sync.region = "us-east-1" # The AWS region for your bucket. +# s3_sync.aws_access_key_id = aws_creds.access_key_id +# s3_sync.aws_secret_access_key = aws_creds.secret_access_key +# s3_sync.path_style = true +# s3_sync.index_document = "index.html" +# s3_sync.error_document = "error.html" +# end -activate :cdn do |cdn| - cdn.cloudfront = { - access_key_id: aws_creds.access_key_id, - secret_access_key: aws_creds.secret_access_key, - distribution_id: "E54CA6RGBP7HW" - } - cdn.after_build = true -end +# activate :cdn do |cdn| +# cdn.cloudfront = { +# access_key_id: aws_creds.access_key_id, +# secret_access_key: aws_creds.secret_access_key, +# distribution_id: "E54CA6RGBP7HW" +# } +# cdn.after_build = true +# end From 5fb80f575080c5d403241e7e44a77977a5c9aeee Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:25:25 -0700 Subject: [PATCH 02/11] Set up node --- .github/workflows/middleman.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index 67f1547..22f07b1 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -14,6 +14,11 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + cache: "yarn" + - name: Install dependencies run: bundle install From 5f7b9a0dd83f008191f21def654a71fdad490f5f Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:29:42 -0700 Subject: [PATCH 03/11] Actually this uses npm --- .github/workflows/middleman.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index 22f07b1..d959343 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -17,7 +17,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v2 with: - cache: "yarn" + cache: "npm" - name: Install dependencies run: bundle install From f056760591107e37ec88251c832730e18a13e983 Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:30:25 -0700 Subject: [PATCH 04/11] Run npm install --- .github/workflows/middleman.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index d959343..9f2fbd0 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -19,8 +19,11 @@ jobs: with: cache: "npm" - - name: Install dependencies + - name: Install Ruby dependencies run: bundle install + - name: Install JS dependencies + run: npm install + - name: Build Middleman site run: bundle exec middleman build From 59d848fa394d752440d0c128d5d7b3b2967e5b1b Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:31:29 -0700 Subject: [PATCH 05/11] Cancel in progress runs --- .github/workflows/middleman.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index 9f2fbd0..46e77d0 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -3,6 +3,10 @@ name: Middleman Build on: push: {} +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: build: runs-on: ubuntu-latest From 94977329776ca9e5af966bc0388c528e4320993b Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:32:46 -0700 Subject: [PATCH 06/11] Cache ruby gems --- .github/workflows/middleman.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index 46e77d0..f554cd6 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -17,15 +17,14 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 + with: + bundler-cache: true - name: Setup Node.js uses: actions/setup-node@v2 with: cache: "npm" - - name: Install Ruby dependencies - run: bundle install - - name: Install JS dependencies run: npm install From 3efd967171a439b39f5f003c14e453996cba33d0 Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:34:51 -0700 Subject: [PATCH 07/11] Accept legacy peer deps --- .github/workflows/middleman.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index f554cd6..549bb1a 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -26,7 +26,7 @@ jobs: cache: "npm" - name: Install JS dependencies - run: npm install + run: npm install --legacy-peer-deps - name: Build Middleman site run: bundle exec middleman build From 45ae66ac6e439ee3b5708a417df5f70718eb5ce3 Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:36:27 -0700 Subject: [PATCH 08/11] Use the right version of Node --- .github/workflows/middleman.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index 549bb1a..b33d74f 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -24,6 +24,7 @@ jobs: uses: actions/setup-node@v2 with: cache: "npm" + node-version-file: ".node-version" - name: Install JS dependencies run: npm install --legacy-peer-deps From fcc1ee6a46b85f1e1eed7eea66dcc3dba877dfb9 Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:37:06 -0700 Subject: [PATCH 09/11] Upgrade setup-node action --- .github/workflows/middleman.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index b33d74f..29d4bef 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -21,7 +21,7 @@ jobs: bundler-cache: true - name: Setup Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: cache: "npm" node-version-file: ".node-version" From 0f38a72e1983bdc1ca3d31f0bd05ba6068292dc0 Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 12:48:18 -0700 Subject: [PATCH 10/11] Sync to S3 --- .github/workflows/middleman.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index 29d4bef..a8b3dc5 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -7,11 +7,20 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +permissions: + id-token: write # needed for configure-aws-credentials + contents: read + jobs: build: runs-on: ubuntu-latest steps: + - uses: aws-actions/configure-aws-credentials@v4 + with: + aws-region: us-east-1 + role-to-assume: arn:aws:iam::689053117832:role/github-oidc-provider-aws + - name: Checkout repository uses: actions/checkout@v2 @@ -31,3 +40,7 @@ jobs: - name: Build Middleman site run: bundle exec middleman build + + - name: Deploy to S3 + if: github.event.ref == 'refs/heads/main' + run: aws s3 sync ./build/ s3://gamewrap.interactiveliterature.org/ --delete --acl public-read From 448060a8bd6b29602cbafbab712966d2332f671b Mon Sep 17 00:00:00 2001 From: Nat Budin Date: Mon, 17 Mar 2025 13:04:23 -0700 Subject: [PATCH 11/11] Use the Gamewrap deploy role --- .github/workflows/middleman.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/middleman.yml b/.github/workflows/middleman.yml index a8b3dc5..9e55942 100644 --- a/.github/workflows/middleman.yml +++ b/.github/workflows/middleman.yml @@ -19,7 +19,7 @@ jobs: - uses: aws-actions/configure-aws-credentials@v4 with: aws-region: us-east-1 - role-to-assume: arn:aws:iam::689053117832:role/github-oidc-provider-aws + role-to-assume: arn:aws:iam::689053117832:role/gamewrap_deploy - name: Checkout repository uses: actions/checkout@v2