Merge pull request #6802 from paulbalandan/check-version

Add a check for updated version before deployment
This commit is contained in:
John Paul E. Balandan, CPA 2022-11-04 10:02:04 +08:00 committed by GitHub
commit 30fd4826c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 108 additions and 67 deletions

21
.github/scripts/validate-version vendored Normal file
View File

@ -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""

View File

@ -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<<EOF' >> $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
})

View File

@ -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
})

View File

@ -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`