diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 5fbf7ebf..8e0e3c65 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -44,71 +44,6 @@ jobs: slice: [ "0-2", "1-2" ] name: 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/workflow-run-cleanup-action@v0.2.2 - 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 - - uses: nanasess/setup-chromedriver@v1.0.1 - - run: bundle exec rake "test:run[exclude, 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 - 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 @@ -262,6 +197,48 @@ jobs: database_username: ${{ env.DATABASE_USERNAME }} database_password: ${{ env.DATABASE_PASSWORD }} database_host: ${{ env.DATABASE_HOST }} + deploy_develop: + if: "github.ref == 'refs/heads/develop'" + needs: [lint, tests, system_tests, test_build] + name: Deploy develop branch on develop instance + runs-on: ubuntu-latest + steps: + - name: Run Ansible playbook + uses: appleboy/ssh-action@v0.1.4 + with: + host: ${{ secrets.ANSIBLE_HOST }} + username: ${{ secrets.ANSIBLE_USERNAME }} + key: ${{ secrets.ANSIBLE_KEY }} + port: ${{ secrets.SSH_PORT }} + script: ansible-playbook -u ${{ secrets.ANSIBLE_USERNAME }} --private-key="~/.ssh/ansible-deploy/ansible-deploy" -i /home/${{ secrets.ANSIBLE_USERNAME }}/ansible/decidim/inventories/develop.yml /home/${{ secrets.ANSIBLE_USERNAME }}/ansible/decidim/playbooks/update_decidim_app.yml + deploy_rc: + if: "github.ref == 'refs/heads/rc'" + needs: [lint, tests, system_tests, test_build] + name: Deploy rc branch on RC instance + runs-on: ubuntu-latest + steps: + - name: Run Ansible playbook + uses: appleboy/ssh-action@v0.1.4 + with: + host: ${{ secrets.ANSIBLE_HOST }} + username: ${{ secrets.ANSIBLE_USERNAME }} + key: ${{ secrets.ANSIBLE_KEY }} + port: ${{ secrets.SSH_PORT }} + script: ansible-playbook -u ${{ secrets.ANSIBLE_USERNAME }} --private-key="~/.ssh/ansible-deploy/ansible-deploy" -i /home/${{ secrets.ANSIBLE_USERNAME }}/ansible/decidim/inventories/rc.yml /home/${{ secrets.ANSIBLE_USERNAME }}/ansible/decidim/playbooks/update_decidim_app.yml + deploy_staging: + if: "github.ref == 'refs/heads/master'" + needs: [lint, tests, system_tests, test_build] + name: Deploy staging branch on staging instance + runs-on: ubuntu-latest + steps: + - name: Run Ansible playbook + uses: appleboy/ssh-action@v0.1.4 + with: + host: ${{ secrets.ANSIBLE_HOST }} + username: ${{ secrets.ANSIBLE_USERNAME }} + key: ${{ secrets.ANSIBLE_KEY }} + port: ${{ secrets.SSH_PORT }} + script: ansible-playbook -u ${{ secrets.ANSIBLE_USERNAME }} --private-key="~/.ssh/ansible-deploy/ansible-deploy" -i /home/${{ secrets.ANSIBLE_USERNAME }}/ansible/decidim/inventories/staging.yml /home/${{ secrets.ANSIBLE_USERNAME }}/ansible/decidim/playbooks/update_decidim_app.yml build_and_push_image_dev: name: Build and push image to Registry if: "github.ref == 'refs/heads/develop'"