diff --git a/.github/scripts/validate-version b/.github/scripts/validate-version new file mode 100644 index 000000000000..d8fa85cdf959 --- /dev/null +++ b/.github/scripts/validate-version @@ -0,0 +1,21 @@ +#!/bin/bash +set -o pipefail + +if [[ -z $1 ]]; then + echo "validate-version requires a version identifier" + exit 1 +fi + +FILES=("system/CodeIgniter.php" "user_guide_src/source/conf.py") +LENGTH="${#FILES[@]}" + +for FILE in "${FILES[@]}"; do + COUNT="$((COUNT + $(grep -c "$FILE" -e "$1")))" +done + +if [[ $COUNT -ne $LENGTH ]]; then + echo "CodeIgniter version is not updated to v"$1"" + exit 1 +fi + +echo "CodeIgniter version is updated to v"$1"" diff --git a/.github/workflows/deploy-framework.yml b/.github/workflows/deploy-distributables.yml similarity index 53% rename from .github/workflows/deploy-framework.yml rename to .github/workflows/deploy-distributables.yml index 9fdbc8f08127..d00ebc5a9f36 100644 --- a/.github/workflows/deploy-framework.yml +++ b/.github/workflows/deploy-distributables.yml @@ -1,16 +1,40 @@ -# When a new Release is created, deploy relevant +# When a new release is created, deploy relevant # files to each of the generated repos. -name: Deploy Framework +name: Deploy Distributable Repos on: release: types: [published] jobs: + check-version: + name: Check for updated version + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 # fetch all tags + + - name: Get latest version + run: | + echo 'LATEST_VERSION<> $GITHUB_ENV + echo $(git describe --tags --abbrev=0) | sed "s/v//" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + + - name: Search for updated version + if: ${{ env.LATEST_VERSION }} + run: | + chmod +x ${GITHUB_WORKSPACE}/.github/scripts/validate-version + ${GITHUB_WORKSPACE}/.github/scripts/validate-version ${{ env.LATEST_VERSION }} + framework: name: Deploy to framework if: github.repository == 'codeigniter4/CodeIgniter4' - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 + needs: check-version + steps: - name: Identify run: | @@ -55,7 +79,9 @@ jobs: appstarter: name: Deploy to appstarter if: github.repository == 'codeigniter4/CodeIgniter4' - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 + needs: check-version + steps: - name: Identify run: | @@ -96,3 +122,56 @@ jobs: name: release.data.name, body: release.data.body }) + + userguide: + name: Deploy to userguide + if: github.repository == 'codeigniter4/CodeIgniter4' + runs-on: ubuntu-22.04 + needs: check-version + + steps: + - name: Identify + run: | + git config --global user.email "action@github.com" + git config --global user.name "${GITHUB_ACTOR}" + + - name: Checkout source + uses: actions/checkout@v3 + with: + path: source + + - name: Checkout target + uses: actions/checkout@v3 + with: + repository: codeigniter4/userguide + token: ${{ secrets.ACCESS_TOKEN }} + path: userguide + + - name: Install Sphinx + run: | + sudo apt install python3-sphinx + sudo pip3 install sphinxcontrib-phpdomain + sudo pip3 install sphinx_rtd_theme + + - name: Chmod + run: chmod +x ./source/.github/scripts/deploy-userguide + + - name: Deploy + run: ./source/.github/scripts/deploy-userguide ${GITHUB_WORKSPACE}/source ${GITHUB_WORKSPACE}/userguide ${GITHUB_REF##*/} + + - name: Release + uses: actions/github-script@v6 + with: + github-token: ${{secrets.ACCESS_TOKEN}} + script: | + const release = await github.rest.repos.getLatestRelease({ + owner: context.repo.owner, + repo: context.repo.repo + }) + github.rest.repos.createRelease({ + owner: context.repo.owner, + repo: 'userguide', + tag_name: release.data.tag_name, + name: release.data.name, + body: release.data.body + }) diff --git a/.github/workflows/deploy-userguide.yml b/.github/workflows/deploy-userguide.yml deleted file mode 100644 index 384eeef5186f..000000000000 --- a/.github/workflows/deploy-userguide.yml +++ /dev/null @@ -1,59 +0,0 @@ -# When a new Release is created, deploy relevant -# files to each of the generated repos. -name: Deploy User Guide - -on: - release: - types: [published] - -jobs: - framework: - name: Deploy to userguide - if: (github.repository == 'codeigniter4/CodeIgniter4') - runs-on: ubuntu-latest - steps: - - name: Identify - run: | - git config --global user.email "action@github.com" - git config --global user.name "${GITHUB_ACTOR}" - - - name: Checkout source - uses: actions/checkout@v3 - with: - path: source - - - name: Checkout target - uses: actions/checkout@v3 - with: - repository: codeigniter4/userguide - token: ${{ secrets.ACCESS_TOKEN }} - path: userguide - - - name: Install Sphinx - run: | - sudo apt install python3-sphinx - sudo pip3 install sphinxcontrib-phpdomain - sudo pip3 install sphinx_rtd_theme - - - name: Chmod - run: chmod +x ./source/.github/scripts/deploy-userguide - - - name: Deploy - run: ./source/.github/scripts/deploy-userguide ${GITHUB_WORKSPACE}/source ${GITHUB_WORKSPACE}/userguide ${GITHUB_REF##*/} - - - name: Release - uses: actions/github-script@v6 - with: - github-token: ${{secrets.ACCESS_TOKEN}} - script: | - const release = await github.rest.repos.getLatestRelease({ - owner: context.repo.owner, - repo: context.repo.repo - }) - github.rest.repos.createRelease({ - owner: context.repo.owner, - repo: 'userguide', - tag_name: release.data.tag_name, - name: release.data.name, - body: release.data.body - }) diff --git a/admin/RELEASE.md b/admin/RELEASE.md index 174147ac5733..d37868bf1d5b 100644 --- a/admin/RELEASE.md +++ b/admin/RELEASE.md @@ -60,15 +60,15 @@ CodeIgniter 4.x.x release. See the changelog: https://github.com/codeigniter4/CodeIgniter4/blob/develop/CHANGELOG.md ``` -* Watch for the "Deploy Framework" Action to make sure **framework** and **appstarter** get updated -* Run the following commands to install and test AppStarter and verify the new version: +* Watch for the "Deploy Distributable Repos" action to make sure **framework**, **appstarter**, and **userguide** get updated +* Run the following commands to install and test `appstarter` and verify the new version: ```console composer create-project codeigniter4/appstarter release-test cd release-test composer test && composer info codeigniter4/framework ``` -* Verify that the User Guide Actions succeeded: - * "Deploy User Guide", framework repo +* Verify that the user guide actions succeeded: + * "Deploy Distributable Repos", framework repo * "Deploy Production", UG repo * "pages-build-deployment", both repos * Fast-forward `develop` branch to catch the merge commit from `master`