Skip to content

Deploy Distributable Repos #13

Deploy Distributable Repos

Deploy Distributable Repos #13

# When a new release is created, deploy relevant
# files to each of the generated repos.
name: Deploy Distributable Repos
on:
release:
types: [published]
permissions:
contents: read
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
permissions:
# Allow actions/github-script to create release
contents: write
if: github.repository == 'codeigniter4/CodeIgniter4'
runs-on: ubuntu-22.04
needs: check-version
steps:
- name: Identify
run: |
git config --global user.email "[email protected]"
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/framework
token: ${{ secrets.ACCESS_TOKEN }}
path: framework
- name: Chmod
run: chmod +x ./source/.github/scripts/deploy-framework
- name: Deploy
run: ./source/.github/scripts/deploy-framework ${GITHUB_WORKSPACE}/source ${GITHUB_WORKSPACE}/framework ${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: 'framework',
tag_name: release.data.tag_name,
name: release.data.name,
body: release.data.body
})
appstarter:
name: Deploy to appstarter
permissions:
# Allow actions/github-script to create release
contents: write
if: github.repository == 'codeigniter4/CodeIgniter4'
runs-on: ubuntu-22.04
needs: check-version
steps:
- name: Identify
run: |
git config --global user.email "[email protected]"
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/appstarter
token: ${{ secrets.ACCESS_TOKEN }}
path: appstarter
- name: Chmod
run: chmod +x ./source/.github/scripts/deploy-appstarter
- name: Deploy
run: ./source/.github/scripts/deploy-appstarter ${GITHUB_WORKSPACE}/source ${GITHUB_WORKSPACE}/appstarter ${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: 'appstarter',
tag_name: release.data.tag_name,
name: release.data.name,
body: release.data.body
})
userguide:
name: Deploy to userguide
permissions:
# Allow actions/github-script to create release
contents: write
if: github.repository == 'codeigniter4/CodeIgniter4'
runs-on: ubuntu-22.04
needs: check-version
steps:
- name: Identify
run: |
git config --global user.email "[email protected]"
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
})