diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml new file mode 100644 index 000000000..40538bccc --- /dev/null +++ b/.github/workflows/build_release.yml @@ -0,0 +1,56 @@ +on: + push: + tags: + - '*.*.*' + +name: Create Github Release + +permissions: + contents: write + +env: + COMPOSE_USER: runner + +jobs: + create-release: + runs-on: ubuntu-latest + env: + COMPOSER_ALLOW_SUPERUSER: 1 + APP_ENV: prod + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Composer install + run: | + docker network create frontend + docker compose run --rm --user=root phpfpm composer install --no-dev -o --classmap-authoritative + docker compose run --rm --user=root phpfpm composer clear-cache + + - name: Build theme + run: | + - docker compose run --rm node yarn install + - docker compose run --rm node yarn build + - docker compose run --rm node rm -rf node_modules + # Ensure everything is owned by runner + - sudo chown -R ${{ COMPOSE_USER }}:${{ COMPOSE_USER }} web + + - name: Make assets dir + run: | + mkdir -p ../assets + + - name: Create archive + run: | + sudo chown -R runner:runner ./ + tar --exclude='.git' -zcf ../assets/${{ github.event.repository.name }}-${{ github.ref_name }}.tar.gz ./ + + - name: Create checksum + run: | + cd ../assets + sha256sum ${{ github.event.repository.name }}-${{ github.ref_name }}.tar.gz > ../assets/checksum.txt + + - name: Create a release in GitHub and uploads assets + run: gh release create ${{ github.ref_name }} --verify-tag --generate-notes ../assets/*.* + env: + GITHUB_TOKEN: ${{ github.TOKEN }} + shell: bash diff --git a/.woodpecker/os2forms_prod.yml b/.woodpecker/os2forms_prod.yml new file mode 100644 index 000000000..119f9a963 --- /dev/null +++ b/.woodpecker/os2forms_prod.yml @@ -0,0 +1,40 @@ +when: + - event: release + +skip_clone: true + +labels: + zone: CLOUD + +steps: + - name: Ansible playbook + image: itkdev/ansible-plugin:1 + pull: true + settings: + id: + from_secret: id + secret: + from_secret: secret + host: + from_secret: prod_os2forms_host + path: + from_secret: prod_os2forms_path + user: + from_secret: user + playbook: 'release' + pre_up: + # Fixes issue with 'Drupal\mysql\Driver\Database\mysql\Connection' not found + - itkdev-docker-compose-server run --rm phpfpm composer2 dump-autoload + - itkdev-docker-compose-server run --rm phpfpm vendor/bin/drush --yes cache:rebuild + - itkdev-docker-compose-server run --rm phpfpm vendor/bin/drush --yes deploy + - itkdev-docker-compose-server exec phpfpm vendor/bin/drush --yes locale:update + - itkdev-docker-compose-server exec phpfpm vendor/bin/drush --yes locale:import --type=customized --override=none da /app/web/profiles/custom/os2loop/translations/translations.da.po + - itkdev-docker-compose-server run --rm phpfpm vendor/bin/drush --yes cache:rebuild + cron: + cron: + minute: '47' + hour: '*' + day: '*' + month: '*' + weekday: '*' + job: 'itkdev-docker-compose-server exec phpfpm vendor/bin/drush core:cron' diff --git a/CHANGELOG.md b/CHANGELOG.md index a05049dde..5656f3d04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +- [PR-371](https://github.com/itk-dev/os2loop/pull/371) + Added GitHub action to build release + Added os2forms auto deployment + - [PR-370](https://github.com/itk-dev/os2loop/pull/370) Added woodpecker to test site deployment diff --git a/config/sync/config_ignore.settings.yml b/config/sync/config_ignore.settings.yml index 495dcf791..9462fd889 100644 --- a/config/sync/config_ignore.settings.yml +++ b/config/sync/config_ignore.settings.yml @@ -17,3 +17,16 @@ ignored_config_entities: - samlauth.authentication - samlauth_user_roles.mapping - system.site + - user.role.anonymous + - user.role.os2loop_user_external_sources_editor + - user.role.os2loop_user_manual + - user.role.os2loop_user_post_author + - user.role.os2loop_user_document_collection_editor + - user.role.os2loop_user_document_author + - user.role.os2loop_user_administrator' + - user.role.authenticated + - user.role.os2loop_user_user_administrator + - views.view.files + - system.action.user_add_role_action.os2loop_user_user_administrator + - system.action.user_remove_role_action.os2loop_user_user_administrator + - user.role.os2loop_user_user_administrator