Skip to content

Commit

Permalink
Merge pull request #42 from OpenSourcePolitics/master
Browse files Browse the repository at this point in the history
  • Loading branch information
paulinebessoles authored Sep 8, 2023
2 parents 12d388a + 3d8159a commit 3f60854
Show file tree
Hide file tree
Showing 360 changed files with 115,310 additions and 1,445 deletions.
1 change: 0 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ node_modules
public/uploads
deploy
.rubocop*
.overloads
.erb-lint.yml
.env-example
.env
Expand Down
139 changes: 110 additions & 29 deletions .github/workflows/ci_cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,20 @@ env:
RAILS_ENV: test
NODE_VERSION: 16.9.1
RUBYOPT: '-W:no-deprecated'
# Set locales available for i18n tasks
ENFORCED_LOCALES: "en,fr"
AVAILABLE_LOCALES: "en,fr"

jobs:
todo:
name: TODO
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: "TODO to Issue"
uses: "alstr/todo-to-issue-action@v4"
lint:
name: Lint code
runs-on: ubuntu-latest
Expand All @@ -26,13 +38,16 @@ jobs:
ruby_version: ${{ env.RUBY_VERSION }}
node_version: ${{ env.NODE_VERSION }}
tests:
strategy:
fail-fast: false
matrix:
slice: [ "0-2", "1-2" ]
name: Tests
runs-on: ubuntu-latest
if: "!startsWith(github.head_ref, 'chore/l10n')"
services:
postgres:
image: postgres:11
ports: [ "5432:5432" ]
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
Expand All @@ -44,54 +59,121 @@ jobs:
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: postgres
DATABASE_HOST: localhost
RAILS_ENV: test
# Set locales available for i18n tasks
ENFORCED_LOCALES: "en,fr"
steps:
- uses: rokroskar/[email protected]
if: "github.ref != 'refs/heads/master' || github.ref != 'refs/heads/develop'"
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- uses: actions/checkout@v2.0.0
- uses: actions/checkout@v3
with:
fetch-depth: 1
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
bundler-cache: true
- uses: actions/setup-node@v1
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Get Yarn cache directory
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Use Yarn cache
uses: actions/cache@v2
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: yarn-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
run: yarn install --prefer-offline --frozen-lockfile
- name: Create db
run: |
bundle exec rails db:create
bundle exec rails db:migrate
- name: Precompile assets
bundle exec rails parallel:create parallel:migrate
- name: Register cache hash
id: cache-hash
run: |
bundle exec rake assets:precompile
echo "::set-output name=hash::$(bundle exec rake test:assets_hash)"
- uses: OpenSourcePolitics/cache-precompile-action@master
with:
key: asset-cache-${{ runner.os }}-${{ steps.cache-hash.outputs.hash }}
- run: mkdir -p ./spec/tmp/screenshots
name: Create the screenshots folder
- uses: nanasess/[email protected]
- run: bundle exec rspec
# TODO: Use latest version
- uses: nanasess/setup-chromedriver@v2
with:
chromedriver-version: "114.0.5735.90"
- run: bundle exec rake "test:run[exclude, spec/system/**/*_spec.rb, ${{ matrix.slice }}]"
name: RSpec
- run: ./.github/upload_coverage.sh $DECIDIM_MODULE $GITHUB_EVENT_PATH
- run: ./.github/upload_coverage.sh decidim-app $GITHUB_EVENT_PATH
name: Upload coverage
- uses: actions/upload-artifact@v2-preview
- uses: actions/upload-artifact@v3
if: always()
with:
name: screenshots
path: ./spec/decidim_dummy_app/tmp/screenshots
path: ./spec/tmp/screenshots
- uses: actions/upload-artifact@v3
if: always()
with:
name: assets-manifest-${{ matrix.slice }}
path: ./tmp/assets_manifest.json
system_tests:
strategy:
matrix:
slice: [ "0-4", "1-4", "2-4", "3-4" ]
name: System tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres:11
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_PASSWORD: postgres
env:
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: postgres
DATABASE_HOST: localhost
steps:
- uses: rokroskar/[email protected]
if: "github.ref != 'refs/heads/master' || github.ref != 'refs/heads/develop'"
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- uses: actions/checkout@v3
with:
fetch-depth: 1
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
bundler-cache: true
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: yarn install --prefer-offline --frozen-lockfile
- name: Create db
run: |
bundle exec rails parallel:create parallel:migrate
- name: Register cache hash
id: cache-hash
run: |
echo "::set-output name=hash::$(bundle exec rake test:assets_hash)"
- uses: OpenSourcePolitics/cache-precompile-action@master
with:
key: asset-cache-${{ runner.os }}-${{ steps.cache-hash.outputs.hash }}
- run: mkdir -p ./spec/tmp/screenshots
name: Create the screenshots folder
# TODO: Use latest version
- uses: nanasess/setup-chromedriver@v2
with:
chromedriver-version: "114.0.5735.90"
- run: bundle exec rake "test:run[include, spec/system/**/*_spec.rb, ${{ matrix.slice }}]"
name: RSpec
- run: ./.github/upload_coverage.sh decidim-app $GITHUB_EVENT_PATH
name: Upload coverage
- uses: actions/upload-artifact@v3
if: always()
with:
name: screenshots
path: ./spec/tmp/screenshots
- uses: actions/upload-artifact@v3
if: always()
with:
name: assets-manifest-${{ matrix.slice }}
path: ./tmp/assets_manifest.json
test_build:
name: Test build docker image
runs-on: ubuntu-latest
Expand Down Expand Up @@ -124,7 +206,7 @@ jobs:
build_and_push_image_dev:
name: Build and push image to Registry
if: "github.ref == 'refs/heads/develop'"
needs: [ lint, tests, test_build ]
needs: [lint, tests, system_tests, test_build]
runs-on: ubuntu-latest
steps:
- uses: OpenSourcePolitics/build-and-push-images-action@master
Expand All @@ -136,13 +218,13 @@ jobs:
tag: "develop"
generate_release:
name: Generate release
needs: [ lint, tests, test_build ]
needs: [lint, tests, system_tests, test_build]
if: "github.ref == 'refs/heads/master'"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: mathieudutour/[email protected]
name: Bump vaersion and push tag
name: Bump version and push tag
id: tag_version
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -160,4 +242,3 @@ jobs:
password: ${{ secrets.TOKEN }}
image_name: ${{ vars.IMAGE_NAME }}
tag: ${{ steps.tag_version.outputs.new_tag }}

6 changes: 6 additions & 0 deletions .rubocop_rails.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ Rails/ScopeArgs:

Rails/SkipsModelValidations:
Enabled: true
Exclude:
- db/migrate/*.rb

Rails/Validation:
Include:
Expand All @@ -95,3 +97,7 @@ Rails/Validation:
Rails/BulkChangeTable:
Exclude:
- db/**/*

RSpec/MultipleMemoizedHelpers:
Exclude:
- spec/**/**
41 changes: 29 additions & 12 deletions .rubocop_ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ AllCops:
- "**/Gemfile"
- "**/Rakefile"
Exclude:
- "**/vendor/**/*"
- "vendor/**/*"
- "node_modules/**/*"
- "bin/**/*"
- "db/**/*"
- "db/schema.rb"
- "bin/*"
# Default formatter will be used if no -f/--format option is given.
DefaultFormatter: progress
# Cop names are not displayed in offense messages by default. Change behavior
Expand Down Expand Up @@ -74,6 +74,10 @@ AllCops:
- "(?:^|/)spec/"
- "(?:^|/)test/"

Lint/SafeNavigationChain:
Exclude:
- lib/tasks/migrate.rake

# Indent private/protected/public as deep as method definitions
Layout/AccessModifierIndentation:
EnforcedStyle: indent
Expand Down Expand Up @@ -176,6 +180,15 @@ Layout/ParameterAlignment:
# But it can be overridden by setting this parameter
IndentationWidth: ~

Style/ArrayCoercion:
Description: >-
Use Array() instead of explicit Array check or [*var], when dealing
with a variable you want to treat as an Array, but you're not certain it's an array.
StyleGuide: '#array-coercion'
Safe: false
Enabled: false
VersionAdded: '0.88'

Style/AndOr:
# Whether `and` and `or` are banned only in conditionals (conditionals)
# or completely (always).
Expand Down Expand Up @@ -390,6 +403,10 @@ Style/Copyright:
Style/DocumentationMethod:
RequireForNonPublicMethods: false

Style/MixinUsage:
Exclude:
- "bin/*"

# Multi-line method chaining should be done with leading dots.
Layout/DotPosition:
EnforcedStyle: leading
Expand Down Expand Up @@ -504,6 +521,8 @@ Style/FormatStringToken:

Style/FrozenStringLiteralComment:
EnforcedStyle: always
Exclude:
- bin/*
SupportedStyles:
- never
# `always` will always add the frozen string literal comment to a file
Expand Down Expand Up @@ -1079,6 +1098,10 @@ Style/WordArray:
# The regular expression WordRegex decides what is considered a word.
WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/'

Style/MutableConstant:
Exclude:
- "bin/overloads"

##################### Metrics ##################################

Metrics/AbcSize:
Expand Down Expand Up @@ -1187,8 +1210,8 @@ Layout/LineLength:
- http
- https
Exclude:
- "**/spec/**/*"
- "db/**/*"
- "spec/**/*"
- "db/schema.rb"

# Checks for unused block arguments
Lint/UnusedBlockArgument:
Expand Down Expand Up @@ -1219,14 +1242,11 @@ RSpec/ContextWording:
RSpec/DescribeClass:
Exclude:
- spec/gemfiles_spec.rb
- spec/js_bundles_spec.rb
- spec/webpacker_spec.rb
- spec/i18n_spec.rb
- "**/*/spec/**/*_badge_spec.rb"
- "**/tasks/**/*"

RSpec/EmptyExampleGroup:
Enabled: true

RSpec/ExampleLength:
Max: 49

Expand All @@ -1245,9 +1265,6 @@ RSpec/MessageSpies:
RSpec/MultipleExpectations:
Enabled: false

RSpec/MultipleMemoizedHelpers:
Max: 35

RSpec/NestedGroups:
Max: 7

Expand Down
Loading

0 comments on commit 3f60854

Please sign in to comment.