-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #22 from marceltaeumel/marceltaeumel/squeak-trunk-…
…actions Adds support for GitHub Actions
- Loading branch information
Showing
34 changed files
with
1,315 additions
and
842 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
name: Bundle | ||
|
||
on: | ||
push: # Choose the branch that matches the Smalltalk version below | ||
branches: | ||
- squeak-trunk | ||
# - squeak-5.3 | ||
# - squeak-5.2 | ||
paths-ignore: | ||
- '**.md' # Skip changes in documentation artifacts | ||
pull_request: # Choose the branch that matches the Smalltalk version below | ||
branches: | ||
- squeak-trunk | ||
# - squeak-5.3 | ||
# - squeak-5.2 | ||
paths-ignore: | ||
- '**.md' | ||
schedule: | ||
- cron: '0 0 * * *' # Build everyday at midnight | ||
workflow_dispatch: | ||
|
||
jobs: | ||
prepare-image: | ||
strategy: | ||
fail-fast: true | ||
matrix: | ||
smalltalk: | ||
- Squeak-trunk | ||
- Squeak64-trunk | ||
# - Squeak-5.3 | ||
# - Squeak64-5.3 | ||
# - Squeak-5.2 | ||
# - Squeak64-5.2 | ||
# - Etoys-trunk | ||
# - Etoys64-trunk | ||
runs-on: windows-latest | ||
name: 🛠 Prepare image for ${{ matrix.smalltalk }} | ||
env: | ||
SMALLTALK_VERSION: ${{ matrix.smalltalk }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: Prepare image | ||
shell: bash | ||
run: ./prepare_image.sh | ||
timeout-minutes: 20 | ||
|
||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: ${{ matrix.smalltalk }} | ||
path: | | ||
tmp/*.sources | ||
tmp/*.image | ||
tmp/*.changes | ||
- name: Export global environment | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: ${{ matrix.smalltalk }}-env | ||
path: tmp/global-env | ||
|
||
|
||
test-image: | ||
needs: [prepare-image] | ||
strategy: | ||
fail-fast: true | ||
matrix: | ||
smalltalk: | ||
- Squeak-trunk | ||
- Squeak64-trunk | ||
# - Squeak-5.3 | ||
# - Squeak64-5.3 | ||
# - Squeak-5.2 | ||
# - Squeak64-5.2 | ||
# - Etoys-trunk | ||
# - Etoys64-trunk | ||
runs-on: windows-latest | ||
name: 🧪 Test image of ${{ matrix.smalltalk }} | ||
env: | ||
SMALLTALK_VERSION: ${{ matrix.smalltalk }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: Import global environment | ||
uses: actions/download-artifact@v2 | ||
with: | ||
name: ${{ matrix.smalltalk }}-env | ||
path: tmp | ||
|
||
- name: Download artifacts | ||
uses: actions/download-artifact@v2 | ||
with: | ||
name: ${{ matrix.smalltalk }} | ||
path: tmp | ||
|
||
- name: "Set up SmalltalkCI" | ||
# uses: hpi-swa/setup-smalltalkCI@v1 | ||
uses: marceltaeumel/setup-smalltalkCI@marceltaeumel/install-path | ||
with: | ||
smalltalk-image: ${{ matrix.smalltalk }} | ||
smalltalkCI-workspace: ${{ github.workspace }} | ||
|
||
- name: "Run tests" | ||
continue-on-error: true | ||
shell: bash | ||
run: ./test_image.sh | ||
timeout-minutes: 20 | ||
|
||
- name: Upload test results | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: ${{ matrix.smalltalk }}-tests | ||
path: tmp/*.xml # smalltalkCI test results | ||
|
||
|
||
prepare-bundles: | ||
needs: [prepare-image] | ||
strategy: | ||
fail-fast: true | ||
matrix: | ||
smalltalk: | ||
- Squeak-trunk | ||
- Squeak64-trunk | ||
# - Squeak-5.3 | ||
# - Squeak64-5.3 | ||
# - Squeak-5.2 | ||
# - Squeak64-5.2 | ||
# - Etoys-trunk | ||
# - Etoys64-trunk | ||
runs-on: macos-10.15 # fixed for xcnotary | ||
name: 📦 Prepare bundles for ${{ matrix.smalltalk }} | ||
env: | ||
SMALLTALK_VERSION: ${{ matrix.smalltalk }} | ||
SHOULD_DEPLOY: ${{ endsWith(github.ref, 'squeak-trunk') }} | ||
SHOULD_CODESIGN: ${{ endsWith(github.ref, 'squeak-trunk') }} | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: Import global environment | ||
uses: actions/download-artifact@v2 | ||
with: | ||
name: ${{ matrix.smalltalk }}-env | ||
path: tmp | ||
|
||
- name: Download artifacts | ||
uses: actions/download-artifact@v2 | ||
with: | ||
name: ${{ matrix.smalltalk }} | ||
path: tmp | ||
|
||
- run: ./prepare_bundles.sh | ||
env: | ||
CODESIGN_KEY: ${{ secrets.CODESIGN_KEY }} | ||
CODESIGN_IV: ${{ secrets.CODESIGN_IV }} | ||
CERT_IDENTITY: ${{ secrets.CERT_IDENTITY }} | ||
CERT_PASSWORD: ${{ secrets.CERT_PASSWORD }} | ||
NOTARIZATION_USER: ${{ secrets.NOTARIZATION_USER }} | ||
NOTARIZATION_PASSWORD: ${{ secrets.NOTARIZATION_PASSWORD }} | ||
|
||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: ${{ matrix.smalltalk }}-bundles | ||
path: product/* | ||
|
||
- run: ./deploy_bundles.sh | ||
if: env.SHOULD_DEPLOY == 'true' | ||
env: | ||
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} | ||
DEPLOY_IV: ${{ secrets.DEPLOY_IV }} | ||
SSH_PUBLIC_KEY: ${{ secrets.SSH_PUBLIC_KEY }} | ||
PROXY_PORT: ${{ secrets.PROXY_PORT }} | ||
PROXY_HOST: ${{ secrets.PROXY_HOST }} | ||
PROXY_USER: ${{ secrets.PROXY_USER }} | ||
UPSTREAM_HOST: ${{ secrets.UPSTREAM_HOST }} | ||
UPSTREAM_USER: ${{ secrets.UPSTREAM_USER }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,11 @@ | ||
*.sources | ||
*.changes | ||
*.image | ||
*.p12 | ||
*.cer | ||
encrypted/ | ||
.encrypted.zip | ||
*.sources | ||
*.changes | ||
*.image | ||
*.p12 | ||
*.cer | ||
secret*/ | ||
.secret-*.zip | ||
smalltalk-ci/repository/** | ||
tmp/** | ||
build/** | ||
product/** |
Binary file not shown.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,22 @@ | ||
# The Squeak/Smalltalk Programming System | ||
|
||
[![Build Status](https://travis-ci.com/squeak-smalltalk/squeak-app.svg?branch=squeak-trunk)](https://travis-ci.com/squeak-smalltalk/squeak-app) | ||
|
||
This is the code repository for Squeak's build system. | ||
|
||
A build works basically as follows. The [prepare.sh](prepare.sh) script downloads VMs from http://files.squeak.org/base/ and then invokes the following scripts: | ||
|
||
* [prepare_image.sh](prepare_image.sh) downloads a base image/changes/sources from http://files.squeak.org/base/ | ||
* [prepare_image.st](prepare_image.st) updates the image and creates a `version.sh` file with the version information | ||
* [prepare_aio.sh](prepare_aio.sh) builds the All-In-One | ||
* [prepare_mac.sh](prepare_mac.sh) builds the Mac release | ||
* [prepare_win.sh](prepare_win.sh) builds the Windows release | ||
* [prepare_lin.sh](prepare_lin.sh) builds the Linux x86 release | ||
* [prepare_armv6.sh](prepare_armv6.sh) builds the Linux ARM release | ||
|
||
Finally, [prepare.sh](prepare.sh) uploads everything to http://files.squeak.org/ | ||
(e.g. bleeding-edge trunk builds go to http://files.squeak.org/trunk). | ||
# The Squeak/Smalltalk Programming System | ||
|
||
[![Build Status](https://github.com/squeak-smalltalk/squeak-app/actions/workflows/bundle.yml/badge.svg)](https://github.com/squeak-smalltalk/squeak-app/actions/workflows/bundle.yml) | ||
|
||
This is the code repository for Squeak's build system. | ||
|
||
A build works basically as follows. First, 32-bit and 64-bit images are prepared and tested: | ||
|
||
* [prepare_image.sh](prepare_image.sh) downloads a base image/changes/sources from http://files.squeak.org/base/ | ||
* [prepare_image.st](prepare_image.st) updates the image and creates a `version.sh` file with the version information | ||
* [test_image.sh](test_image.sh) uses [smalltalkCI](https://github.com/hpi-swa/smalltalkCI) to run all tests and document the results | ||
|
||
Second, the [prepare-bundles.sh](prepare-bundles.sh) script downloads VMs from http://files.squeak.org/base/ and then creates the bundles through the following scripts: | ||
|
||
* [prepare_aio.sh](prepare_aio.sh) builds the All-In-One | ||
* [prepare_mac.sh](prepare_mac.sh) builds the Mac release | ||
* [prepare_win.sh](prepare_win.sh) builds the Windows release | ||
* [prepare_lin.sh](prepare_lin.sh) builds the Linux x86 release | ||
* [prepare_armv6.sh](prepare_armv6.sh) builds the Linux ARM release | ||
|
||
Finally, [deploy_bundles.sh](deploy_bundles.sh) uploads everything to http://files.squeak.org/ | ||
(e.g., bleeding-edge trunk builds go to http://files.squeak.org/trunk). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
#!/usr/bin/env bash | ||
################################################################################ | ||
# PROJECT: Squeak Bundle Generation | ||
# FILE: deploy_bundles.sh | ||
# CONTENT: Upload all bundles to files.squeak.org | ||
# | ||
# REQUIRES: | ||
# SMALLTALK_VERSION ... e.g., Squeak64-trunk | ||
# SHOULD_DEPLOY ... i.e., true or false | ||
# product/*.zip | ||
# product/*.dmg | ||
# IMAGE_NAME | ||
# IMAGE_BITS | ||
#....BUNDLE_NAME_LIN | ||
#....BUNDLE_NAME_MAC | ||
#....BUNDLE_NAME_WIN | ||
#....BUNDLE_NAME_ARM ... only on 32-bit | ||
# DEPLOY_KEY ... i.e., for unlocking secret files | ||
# DEPLOY_IV ... i.e., for unlocking secret files | ||
# SSH_PUBLIC_KEY | ||
# PROXY_PORT | ||
# PROXY_HOST | ||
# PROXY_USER | ||
# UPSTREAM_HOST | ||
# UPSTREAM_USER | ||
# PROVIDES: | ||
# - | ||
# | ||
# AUTHORS: Fabio Niephaus, Hasso Plattner Institute, Potsdam, Germany | ||
# Marcel Taeumel, Hasso Plattner Institute, Potsdam, Germany | ||
################################################################################ | ||
|
||
set -o errexit | ||
|
||
source "env_vars" | ||
source "helpers.sh" | ||
|
||
[[ -z "${IMAGE_NAME}" ]] && exit 2 | ||
[[ -z "${IMAGE_BITS}" ]] && exit 3 | ||
|
||
[[ -z "${BUNDLE_NAME_LIN}" ]] && exit 4 | ||
[[ -z "${BUNDLE_NAME_MAC}" ]] && exit 5 | ||
[[ -z "${BUNDLE_NAME_WIN}" ]] && exit 6 | ||
|
||
if is_32bit; then | ||
[[ -z "${BUNDLE_NAME_ARM}" ]] && exit 7 | ||
fi | ||
|
||
begin_group "...preparing deployment..." | ||
|
||
if [[ -z "${DEPLOY_KEY}" ]]; then | ||
print_error "Cannot deploy because secret missing." | ||
exit 1 | ||
else | ||
unlock_secret "deploy" "${DEPLOY_KEY}" "${DEPLOY_IV}" | ||
readonly SSH_KEY_FILEPATH="${HOME_PATH}/secret-deploy/ssh_deploy_key" | ||
readonly SSH_KEY_PATH="${HOME_PATH}/secret-deploy" | ||
chmod 600 "${SSH_KEY_FILEPATH}" | ||
fi | ||
|
||
end_group | ||
|
||
begin_group "...uploading all files to files.squeak.org.." | ||
|
||
readonly UPSTREAM_BASE="/var/www/files.squeak.org" | ||
|
||
if is_etoys; then | ||
UPSTREAM_PATH="${UPSTREAM_BASE}/etoys/${SQUEAK_VERSION/Etoys/}" | ||
else | ||
UPSTREAM_PATH="${UPSTREAM_BASE}/${SQUEAK_VERSION/Squeak/}" | ||
fi | ||
UPSTREAM_PATH="${UPSTREAM_PATH}/${IMAGE_NAME}" | ||
|
||
|
||
ssh-keyscan -t ecdsa-sha2-nistp256 -p "${PROXY_PORT}" "${PROXY_HOST}" 2>&1 | tee -a "${HOME}/.ssh/known_hosts" > /dev/null; | ||
echo "${UPSTREAM_HOST} ecdsa-sha2-nistp256 ${SSH_PUBLIC_KEY}" | tee -a "${HOME}/.ssh/known_hosts" > /dev/null; | ||
rsync -rvz --ignore-existing -e "ssh -o ProxyCommand='ssh -l ${PROXY_USER} -i ${SSH_KEY_FILEPATH} -p ${PROXY_PORT} -W %h:%p ${PROXY_HOST}' -l ${UPSTREAM_USER} -i ${SSH_KEY_FILEPATH}" "${PRODUCT_PATH}/" "${UPSTREAM_HOST}:${UPSTREAM_PATH}/"; | ||
|
||
end_group | ||
|
||
begin_group "...updating 'latest' symlinks on server..." | ||
|
||
LATEST_PREFIX="${UPSTREAM_BASE}/nightly/Squeak-latest-${IMAGE_BITS}bit" | ||
SYMS_CMD="ln -f -s ${UPSTREAM_PATH}/${IMAGE_NAME}.zip ${LATEST_PREFIX}.zip" | ||
SYMS_CMD="${SYMS_CMD} && ln -f -s ${UPSTREAM_PATH}/${BUNDLE_NAME_LIN}.zip ${LATEST_PREFIX}-Linux.zip" | ||
SYMS_CMD="${SYMS_CMD} && ln -f -s ${UPSTREAM_PATH}/${BUNDLE_NAME_MAC}.dmg ${LATEST_PREFIX}-macOS.dmg" | ||
SYMS_CMD="${SYMS_CMD} && ln -f -s ${UPSTREAM_PATH}/${BUNDLE_NAME_WIN}.zip ${LATEST_PREFIX}-Windows.zip" | ||
if is_32bit; then | ||
SYMS_CMD="${SYMS_CMD} && ln -f -s ${UPSTREAM_PATH}/${BUNDLE_NAME_ARM}.zip ${LATEST_PREFIX}-ARMv6.zip" | ||
fi | ||
ssh -o ProxyCommand="ssh -l ${PROXY_USER} -i ${SSH_KEY_FILEPATH} -p ${PROXY_PORT} -W %h:%p ${PROXY_HOST}" \ | ||
-l "${UPSTREAM_USER}" -i "${SSH_KEY_FILEPATH}" "${UPSTREAM_HOST}" -t "${SYMS_CMD}" | ||
|
||
end_group | ||
|
||
# Remove sensitive information | ||
rm -rf "${SSH_KEY_PATH}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
readonly HOME_PATH="$(pwd)" | ||
|
||
readonly FILES_BASE="http://files.squeak.org/base" | ||
readonly RELEASE_URL="${FILES_BASE}/${SMALLTALK_VERSION/Etoys/Squeak}" | ||
|
||
readonly IMAGE_URL="${RELEASE_URL}/base.zip" | ||
readonly VM_BASE="${RELEASE_URL}" | ||
|
||
readonly VM_LIN="vm-linux" | ||
readonly VM_MAC="vm-macos" | ||
readonly VM_WIN="vm-win" | ||
readonly VM_ARM6="vm-armv6" | ||
|
||
readonly ICONS_PATH="${HOME_PATH}/icons" | ||
readonly RELEASE_NOTES_PATH="${HOME_PATH}/release-notes" |
Oops, something went wrong.