From 4f064b72e26606a331d5e1cd52f271e8d76c367f Mon Sep 17 00:00:00 2001 From: quentinchampenois <26109239+Quentinchampenois@users.noreply.github.com> Date: Fri, 24 Nov 2023 15:35:52 +0100 Subject: [PATCH] ci: Use OSP's Github Actions --- .github/workflows/ci_cleaner.yml | 117 +++++++++---------------------- 1 file changed, 33 insertions(+), 84 deletions(-) diff --git a/.github/workflows/ci_cleaner.yml b/.github/workflows/ci_cleaner.yml index 3b0c64d..7205f3f 100644 --- a/.github/workflows/ci_cleaner.yml +++ b/.github/workflows/ci_cleaner.yml @@ -19,14 +19,7 @@ jobs: if: "github.ref != 'refs/heads/develop'" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v2.0.0 - with: - fetch-depth: 1 - - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true - - name: Run Rubocop - run: bundle exec rubocop -P + - uses: OpenSourcePolitics/lint-action@master tests: name: Tests runs-on: ubuntu-latest @@ -51,86 +44,42 @@ jobs: if: "github.ref != 'refs/heads/develop'" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v2.0.0 - with: - fetch-depth: 1 - - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true - - uses: actions/setup-node@v1 + - uses: OpenSourcePolitics/rspec-action@master with: - node-version: ${{ env.NODE_VERSION }} - - name: Get npm cache directory path - id: npm-cache-dir-path - run: echo "::set-output name=dir::$(npm get cache)-cleaner" - - uses: actions/cache@v2 - id: npm-cache - with: - path: ${{ steps.npm-cache-dir-path.outputs.dir }} - key: npm-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - npm- - - run: bundle exec rake test_app - name: Create test app - - run: mkdir -p ./spec/decidim_dummy_app/tmp/screenshots - name: Create the screenshots folder - - uses: nanasess/setup-chromedriver@v1.0.1 - - name: Run precompile if needed - run: | - if [[ -d "app/views" ]] || [[ -d "spec/mailers" ]] || [[ -d "spec/system" ]]; then - cd "spec/decidim_dummy_app" - bundle exec rails assets:precompile - else - echo "No need to precompile assets since system folder is empty" - fi - - run: bundle exec rspec - name: RSpec - - uses: codecov/codecov-action@v1 - - uses: actions/upload-artifact@v2 - if: always() - with: - name: screenshots - path: ./spec/decidim_dummy_app/tmp/screenshots - if-no-files-found: ignore - release: - if: "github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release' )" - needs: [tests, lint] + command: "bundle exec rspec --exclude-pattern 'spec/system/**/*_spec.rb'" + system_tests: + name: System tests runs-on: ubuntu-latest + timeout-minutes: 30 + 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: actions/checkout@v2.0.0 - with: - fetch-depth: 1 - - uses: ruby/setup-ruby@v1 + - uses: rokroskar/workflow-run-cleanup-action@v0.3.0 + if: "github.ref != 'refs/heads/develop'" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + - uses: OpenSourcePolitics/rspec-action@master with: - bundler-cache: true - - name: Setup git and gh - run: | - git config user.name "${GITHUB_ACTOR}" - git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" - echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token - - run: gem install parse_gemspec-cli - name: Intall gem parser - - run: echo "::set-output name=tag::$(parse-gemspec-cli *.gemspec | jq .'version')" - name: Set tag version - id: set_tag - - name: Add tag and push - run: | - git tag - git push --tags - - name: Create release - run: gh release create ${{ steps.set_tag.outputs.tag }} --generate-notes + command: "bundle exec rspec spec/system" publish: - needs: release + if: "github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release' )" + needs: [tests, system_tests, lint] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - name: Publish to RubyGems - run: | - mkdir -p $HOME/.gem - touch $HOME/.gem/credentials - chmod 0600 $HOME/.gem/credentials - printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials - gem build *.gemspec - gem push *.gem - env: - GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_API_KEY}}" \ No newline at end of file + - uses: OpenSourcePolitics/publish-gem-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + rubygems_api_key: ${{ secrets.RUBYGEMS_API_KEY }} \ No newline at end of file