Skip to content

Commit ed957cc

Browse files
authored
PHP 8.3 deploy (SSH2) (#1396)
* php 8.3 deploy fix * phing ssh task * fix * install ssh * install ssh * install ssh * ssh2 install * privkey * pubkey * chmod fix * scp fix * fixes * echo * echo * echo * cleanup fix * cleanup fix * property init * property init * property init * echo removed * variables * variables * param * escape * escape * escape * escape * escape * phpstan task * wd * deploy sync * deploy sync --------- Co-authored-by: Jan Staněk <[email protected]>
1 parent 6b9b0dd commit ed957cc

File tree

4 files changed

+66
-71
lines changed

4 files changed

+66
-71
lines changed

.github/workflows/deploy-dev.yml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ jobs:
2828
CONFIG_MAIL_USERNAME:
2929
CONFIG_MAILING_SENDER_EMAIL: ${{ secrets.CONFIG_MAILING_SENDER_EMAIL }}
3030
CONFIG_SKAUTIS_APPLICATION_ID: ${{ secrets.CONFIG_SKAUTIS_APPLICATION_ID }}
31-
CONFIG_SKAUTIS_TEST_MODE: ${{ secrets.CONFIG_SKAUTIS_TEST_MODE }}
31+
CONFIG_SKAUTIS_TEST_MODE: ${{ vars.CONFIG_SKAUTIS_TEST_MODE }}
3232
CONFIG_RECAPTCHA_SITE_KEY: ${{ secrets.CONFIG_RECAPTCHA_SITE_KEY }}
3333
CONFIG_RECAPTCHA_SECRET_KEY: ${{ secrets.CONFIG_RECAPTCHA_SECRET_KEY }}
34-
DEPLOY_DIRECTORY: ${{ secrets.DEPLOY_DIRECTORY }}
35-
DEPLOY_LEBEDA: ${{ secrets.DEPLOY_LEBEDA }}
34+
DEPLOY_DIRECTORY: ${{ vars.DEPLOY_DIRECTORY }}
35+
DEPLOY_LEBEDA: ${{ vars.DEPLOY_LEBEDA }}
3636
DEPLOY_SSH_HOST: ${{ secrets.DEPLOY_SSH_HOST }}
3737
DEPLOY_SSH_IP: ${{ secrets.DEPLOY_SSH_IP }}
3838
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
@@ -66,10 +66,13 @@ jobs:
6666
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
6767
restore-keys: |
6868
${{ runner.os }}-yarn-
69-
- name: Setup SSH key and deploy
69+
- name: Setup SSH2
7070
run: |
71-
mkdir -p /root/.ssh
72-
ssh-keyscan -H "${DEPLOY_SSH_HOST}","${DEPLOY_SSH_IP}" >> /root/.ssh/known_hosts
73-
eval `ssh-agent -s`
74-
echo "${DEPLOY_SSH_KEY}" | tr -d '\r' | ssh-add -
75-
phing deploy
71+
apt-get -y install libssh2-1-dev
72+
pecl install pecl.php.net/ssh2-1.4.1
73+
echo extension=ssh2.so > /usr/local/etc/php/conf.d/ssh2.ini
74+
echo "${{ secrets.DEPLOY_SSH_KEY }}" > id_rsa
75+
chmod 600 id_rsa
76+
ssh-keygen -f id_rsa -y > id_rsa.pub
77+
- name: Deploy
78+
run: phing deploy

.github/workflows/deploy-manual.yml

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@ jobs:
2626
CONFIG_MAIL_HOST: ${{ secrets.CONFIG_MAIL_HOST }}
2727
CONFIG_MAIL_PASSWORD: ${{ secrets.CONFIG_MAIL_PASSWORD }}
2828
CONFIG_MAIL_PORT: ${{ secrets.CONFIG_MAIL_PORT }}
29-
CONFIG_MAIL_SECURE: ${{ secrets.CONFIG_MAIL_SECURE }}
29+
CONFIG_MAIL_SECURE: ${{ vars.CONFIG_MAIL_SECURE }}
3030
CONFIG_MAIL_SMTP: ${{ secrets.CONFIG_MAIL_SMTP }}
3131
CONFIG_MAIL_USERNAME: ${{ secrets.CONFIG_MAIL_USERNAME }}
3232
CONFIG_MAILING_SENDER_EMAIL: ${{ secrets.CONFIG_MAILING_SENDER_EMAIL }}
3333
CONFIG_SKAUTIS_APPLICATION_ID: ${{ secrets.CONFIG_SKAUTIS_APPLICATION_ID }}
34-
CONFIG_SKAUTIS_TEST_MODE: ${{ secrets.CONFIG_SKAUTIS_TEST_MODE }}
34+
CONFIG_SKAUTIS_TEST_MODE: ${{ vars.CONFIG_SKAUTIS_TEST_MODE }}
3535
CONFIG_RECAPTCHA_SITE_KEY: ${{ secrets.CONFIG_RECAPTCHA_SITE_KEY }}
3636
CONFIG_RECAPTCHA_SECRET_KEY: ${{ secrets.CONFIG_RECAPTCHA_SECRET_KEY }}
37-
DEPLOY_DIRECTORY: ${{ secrets.DEPLOY_DIRECTORY }}
38-
DEPLOY_LEBEDA: ${{ secrets.DEPLOY_LEBEDA }}
37+
DEPLOY_DIRECTORY: ${{ vars.DEPLOY_DIRECTORY }}
38+
DEPLOY_LEBEDA: ${{ vars.DEPLOY_LEBEDA }}
3939
DEPLOY_SSH_HOST: ${{ secrets.DEPLOY_SSH_HOST }}
4040
DEPLOY_SSH_IP: ${{ secrets.DEPLOY_SSH_IP }}
4141
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
@@ -69,10 +69,13 @@ jobs:
6969
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
7070
restore-keys: |
7171
${{ runner.os }}-yarn-
72-
- name: Setup SSH key and deploy
72+
- name: Setup SSH2
7373
run: |
74-
mkdir -p /root/.ssh
75-
ssh-keyscan -H "${DEPLOY_SSH_HOST}","${DEPLOY_SSH_IP}" >> /root/.ssh/known_hosts
76-
eval `ssh-agent -s`
77-
echo "${DEPLOY_SSH_KEY}" | tr -d '\r' | ssh-add -
78-
phing deploy
74+
apt-get -y install libssh2-1-dev
75+
pecl install pecl.php.net/ssh2-1.4.1
76+
echo extension=ssh2.so > /usr/local/etc/php/conf.d/ssh2.ini
77+
echo "${{ secrets.DEPLOY_SSH_KEY }}" > id_rsa
78+
chmod 600 id_rsa
79+
ssh-keygen -f id_rsa -y > id_rsa.pub
80+
- name: Deploy
81+
run: phing deploy

.github/workflows/deploy-staging.yml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ jobs:
2727
CONFIG_MAIL_USERNAME:
2828
CONFIG_MAILING_SENDER_EMAIL: ${{ secrets.CONFIG_MAILING_SENDER_EMAIL }}
2929
CONFIG_SKAUTIS_APPLICATION_ID: ${{ secrets.CONFIG_SKAUTIS_APPLICATION_ID }}
30-
CONFIG_SKAUTIS_TEST_MODE: ${{ secrets.CONFIG_SKAUTIS_TEST_MODE }}
30+
CONFIG_SKAUTIS_TEST_MODE: ${{ vars.CONFIG_SKAUTIS_TEST_MODE }}
3131
CONFIG_RECAPTCHA_SITE_KEY: ${{ secrets.CONFIG_RECAPTCHA_SITE_KEY }}
3232
CONFIG_RECAPTCHA_SECRET_KEY: ${{ secrets.CONFIG_RECAPTCHA_SECRET_KEY }}
33-
DEPLOY_DIRECTORY: ${{ secrets.DEPLOY_DIRECTORY }}
34-
DEPLOY_LEBEDA: ${{ secrets.DEPLOY_LEBEDA }}
33+
DEPLOY_DIRECTORY: ${{ vars.DEPLOY_DIRECTORY }}
34+
DEPLOY_LEBEDA: ${{ vars.DEPLOY_LEBEDA }}
3535
DEPLOY_SSH_HOST: ${{ secrets.DEPLOY_SSH_HOST }}
3636
DEPLOY_SSH_IP: ${{ secrets.DEPLOY_SSH_IP }}
3737
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
@@ -65,10 +65,13 @@ jobs:
6565
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
6666
restore-keys: |
6767
${{ runner.os }}-yarn-
68-
- name: Setup SSH key and deploy
68+
- name: Setup SSH2
6969
run: |
70-
mkdir -p /root/.ssh
71-
ssh-keyscan -H "${DEPLOY_SSH_HOST}","${DEPLOY_SSH_IP}" >> /root/.ssh/known_hosts
72-
eval `ssh-agent -s`
73-
echo "${DEPLOY_SSH_KEY}" | tr -d '\r' | ssh-add -
74-
phing deploy
70+
apt-get -y install libssh2-1-dev
71+
pecl install pecl.php.net/ssh2-1.4.1
72+
echo extension=ssh2.so > /usr/local/etc/php/conf.d/ssh2.ini
73+
echo "${{ secrets.DEPLOY_SSH_KEY }}" > id_rsa
74+
chmod 600 id_rsa
75+
ssh-keygen -f id_rsa -y > id_rsa.pub
76+
- name: Deploy
77+
run: phing deploy

build.xml

Lines changed: 29 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8" ?>
22
<project name="SRS" basedir="." default="main">
33
<property name="tempDir" value="temp"/>
4+
45
<target name="main" description="Runs tests and prepares deployable tarball">
56
<exec executable="composer" passthru="true">
67
<arg value="install"/>
@@ -20,8 +21,7 @@
2021

2122
<target name="prepare-tarball" description="Prepares deployable tarball with everything built">
2223
<exec executable="git" outputProperty="build.hash">
23-
<arg value="rev-parse"/>
24-
<arg value="--short HEAD"/>
24+
<arg line="rev-parse --short HEAD"/>
2525
</exec>
2626

2727
<property name="build.dir" value="${tempDir}/builds/${build.hash}"/>
@@ -104,35 +104,30 @@
104104
</fileset>
105105
</tar>
106106

107-
<delete dir="${build.dir}" />
107+
<delete dir="${build.dir}"/>
108108
</target>
109109

110110
<target name="deploy:ssh">
111111
<echo message="${comment}..."/>
112112
<echo message="${command}"/>
113-
<exec executable="ssh" passthru="true" checkreturn="true">
114-
<arg value="${deploy.ssh.target}"/>
115-
<arg value="-p ${deploy.ssh.port}"/>
116-
<arg value="'${command}'"/>
117-
</exec>
113+
<ssh host="${deploy.ssh.host}" port="${deploy.ssh.port}" username="${deploy.ssh.username}" privkeyfile="id_rsa"
114+
pubkeyfile="id_rsa.pub" command="${command}"/>
118115
</target>
119116

120117
<target name="deploy:copy-tarball">
121-
<property name="command" value="scp"/>
122-
<property name="args" value="-P ${port} ${file} '${target}:${toDirectory}'"/>
123-
<echo message="Copying files to ${deploy.ssh.target}"/>
124-
<echo message="${command} ${args}"/>
125-
<exec executable="${command}" passthru="true" checkreturn="true">
126-
<arg value="${args}"/>
127-
</exec>
118+
<echo message="Copying ${file} to ${toDirectory}"/>
119+
<scp host="${deploy.ssh.host}" port="${deploy.ssh.port}" username="${deploy.ssh.username}" privkeyfile="id_rsa"
120+
pubkeyfile="id_rsa.pub" file="${file}" todir="${toDirectory}"/>
128121
</target>
129122

130123
<target name="deploy:cleanup">
131-
<echo message="Getting previous releases"/>
124+
<ssh host="${deploy.ssh.host}" port="${deploy.ssh.port}" username="${deploy.ssh.username}" privkeyfile="id_rsa"
125+
pubkeyfile="id_rsa.pub" command="ls ${deploy.releasesDir}" property="allReleases"/>
132126

133-
<property name="command" value="echo $(ssh -p ${deploy.ssh.port} ${deploy.ssh.target} 'ls ${deploy.releasesDir}' | grep -v '^${deploy.releaseHash}$')"/>
134-
<echo message="${command}"/>
135-
<exec outputProperty="previousReleases" command="${command}" checkreturn="true"/>
127+
<exec executable="bash" outputProperty="previousReleases" checkreturn="true">
128+
<arg value="-c"/>
129+
<arg line='"echo &apos;${allReleases}&apos; | grep -v &apos;^${deploy.releaseHash}$&apos; | tr &apos;\n&apos; &apos; &apos;"'/>
130+
</exec>
136131

137132
<phingcall target="deploy:ssh">
138133
<property name="comment" value="Deleting files"/>
@@ -146,18 +141,18 @@
146141
<!-- Prepare variables -->
147142
<property environment="env"/>
148143
<property name="deploy.workDir" refid="env.DEPLOY_DIRECTORY"/>
149-
<property name="deploy.releasesDir" value="${deploy.workDir}/releases"/>
150-
<exec executable="git" outputProperty="build.hash">
151-
<arg value="rev-parse"/>
152-
<arg value="--short HEAD"/>
153-
</exec>
154144
<property name="deploy.lebeda" refid="env.DEPLOY_LEBEDA"/>
155145
<property name="deploy.ssh.host" refid="env.DEPLOY_SSH_HOST"/>
156-
<property name="deploy.ssh.username" refid="env.DEPLOY_SSH_USERNAME"/>
157146
<property name="deploy.ssh.port" refid="env.DEPLOY_SSH_PORT"/>
158-
<property name="deploy.ssh.target" value="${deploy.ssh.username}@${deploy.ssh.host}"/>
147+
<property name="deploy.ssh.username" refid="env.DEPLOY_SSH_USERNAME"/>
148+
149+
<exec executable="git" outputProperty="build.hash">
150+
<arg line="rev-parse --short HEAD"/>
151+
</exec>
152+
<property name="deploy.releasesDir" value="${deploy.workDir}/releases"/>
159153
<property name="deploy.releaseHash" value="${DSTAMP}-${TSTAMP}-${build.hash}"/>
160154
<property name="deploy.release" value="${deploy.releasesDir}/${deploy.releaseHash}"/>
155+
<property name="tarball" value="${deploy.release}.tar.gz"/>
161156

162157
<!-- Build tarball -->
163158
<phingcall target="prepare-tarball">
@@ -170,14 +165,10 @@
170165
</phingcall>
171166

172167
<phingcall target="deploy:copy-tarball">
173-
<property name="target" value="${deploy.ssh.target}"/>
174-
<property name="port" value="${deploy.ssh.port}"/>
175168
<property name="file" value="${tempDir}/builds/${deploy.releaseHash}.tar.gz"/>
176169
<property name="toDirectory" value="${deploy.releasesDir}"/>
177170
</phingcall>
178171

179-
<property name="tarball" value="${deploy.release}.tar.gz"/>
180-
181172
<phingcall target="deploy:ssh">
182173
<property name="comment" value="Extracting tarball to release directory"/>
183174
<property name="command" value="tar -xzf ${tarball} -C ${deploy.releasesDir}"/>
@@ -190,7 +181,8 @@
190181

191182
<phingcall target="deploy:ssh">
192183
<property name="comment" value="Copying custom CSS"/>
193-
<property name="command" value="cp ${deploy.workDir}/www/css/web/style.css ${deploy.release}/www/css/web || true"/>
184+
<property name="command"
185+
value="cp ${deploy.workDir}/www/css/web/style.css ${deploy.release}/www/css/web || true"/>
194186
</phingcall>
195187

196188
<phingcall target="deploy:ssh">
@@ -255,16 +247,17 @@
255247

256248
<phingcall target="deploy:ssh">
257249
<property name="comment" value="Swapping release to ${deploy.releaseHash}"/>
258-
<property name="command" value="rm -rf ${deploy.workDir}/www &amp;&amp; ln -s ${deploy.release}/www ${deploy.workDir}/www"/>
250+
<property name="command"
251+
value="rm -rf ${deploy.workDir}/www &amp;&amp; ln -s ${deploy.release}/www ${deploy.workDir}/www"/>
259252
</phingcall>
260253

261254
<phingcall target="deploy:cleanup"/>
262255
</target>
263256

264257
<target name="deploy:app-command">
265258
<condition property="phpCommand"
266-
value="php81-cli &quot;${deploy.release}/www/console.php ${command}&quot;"
267-
else="php8.1 ${deploy.release}/www/console.php ${command}">
259+
value="php83-cli &quot;${deploy.release}/www/console.php ${command}&quot;"
260+
else="php8.3 ${deploy.release}/www/console.php ${command}">
268261
<equals arg1="${deploy.lebeda}" arg2="true"/>
269262
</condition>
270263
<phingcall target="deploy:ssh">
@@ -310,15 +303,8 @@
310303
</target>
311304

312305
<target name="static-analysis">
313-
<exec executable="php" passthru="true" checkreturn="true">
314-
<arg value="-d memory_limit=1024M"/>
315-
<arg value="vendor/bin/phpstan"/>
316-
<arg value="analyse"/>
317-
<arg value="-l6"/>
318-
<arg value="-cphpstan.neon"/>
319-
<arg value="app"/>
320-
<arg value="--no-progress"/>
321-
</exec>
306+
<phpstan executable="vendor/bin/phpstan" command="analyse" passthru="true" checkReturn="true" paths="app"
307+
configuration="phpstan.neon" level="6" noProgress="true" memoryLimit="1024M"/>
322308
</target>
323309

324310
<target name="coding-standard">

0 commit comments

Comments
 (0)