Skip to content

Commit

Permalink
Merge pull request #573 from giulcioffi/action_core_release
Browse files Browse the repository at this point in the history
Action for core release
  • Loading branch information
aentinger authored Dec 14, 2020
2 parents 203c290 + 8cdcc3f commit 96fba00
Show file tree
Hide file tree
Showing 3 changed files with 207 additions and 3 deletions.
102 changes: 102 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: release

on:
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+*"

jobs:
core-pre-release-from-tag:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Set env
run: echo "TAG_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV

- name: Get repo name
run: echo "REPOSITORY_NAME=$(echo ${{ github.repository }} | cut -d "/" -f2-)" >> $GITHUB_ENV

- name: Package the new core
run: |
extras/pack.release.bash $TAG_VERSION $REPOSITORY_NAME
cd extras
mkdir staging
echo $PWD
mv ../*.json staging/
mv ../*.tar.bz2 staging/
cd ..
- name: Get architecture name
run: |
echo "ARCHITECTURE=$(cat extras/package_index.json.NewTag.template | jq ".packages[0].platforms[0].architecture" | sed 's/\"//g')" >> $GITHUB_ENV
- name: Upload package_*_index.json and *.tar.bz2 file to Arduino downloads servers
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
aws s3 sync extras/staging/ s3://${{ secrets.ARDUINO_DOWNLOADS_BUCKET }}/packages/staging/ --exclude "*" --include *.json
aws s3 sync extras/staging/ s3://${{ secrets.ARDUINO_DOWNLOADS_BUCKET }}/cores/staging/ --exclude "*" --include *.tar.bz2
- name: Checkout Basic examples
uses: actions/checkout@v2
with:
repository: arduino/arduino-examples
path: extras/arduino-examples

- name: Install Arduino CLI
uses: arduino/setup-arduino-cli@v1.1.1
with:
version: "0.14.0"

- name: Download new core
run: |
export PATH=$PATH:$PWD
arduino-cli version
cp extras/staging/package_${REPOSITORY_NAME}_${TAG_VERSION}_index.json .
export ARDUINO_DIRECTORIES_DATA=$PWD
export ARDUINO_BOARD_MANAGER_ADDITIONAL_URLS=file://$PWD/package_${REPOSITORY_NAME}_${TAG_VERSION}_index.json
arduino-cli config init
arduino-cli config dump -v
arduino-cli core update-index -v
arduino-cli core install arduino:${ARCHITECTURE}@${TAG_VERSION}
- name: Checkout ArduinoCore-API
uses: actions/checkout@v2
with:
repository: arduino/ArduinoCore-API
path: extras/ArduinoCore-API

- name: Check if API should be compiled in the core
id: checkapi
run: |
if [[ $(grep -r api platform.txt) ]]; then echo "::set-output name=IS_API::true"; fi
- name: Integrate ArduinoCore-API
run: mv "$GITHUB_WORKSPACE/extras/ArduinoCore-API/api" "$GITHUB_WORKSPACE/packages/arduino/hardware/${ARCHITECTURE}/${TAG_VERSION}/cores/arduino"
if: steps.checkapi.outputs.IS_API == 'true'

- name: Verify new core
run: |
INDEX=0
arduino-cli board listall --format=json > boardlist.json
N=$(jq '.boards | length' boardlist.json)
let N=N-1
echo $N
for INDEX in $(seq 0 1 $N); do arduino-cli compile --fqbn $(cat boardlist.json | jq ".boards[$INDEX].FQBN" | sed 's/\"//g') $PWD/extras/arduino-examples/examples/01.Basics/Blink; done
# See: https://github.com/rtCamp/action-slack-notify
- name: Slack notification of core pre-release
uses: rtCamp/action-slack-notify@v2.1.0
env:
SLACK_CHANNEL: core_releases
SLACK_COLOR: good
SLACK_USERNAME: ArduinoBot
SLACK_ICON: https://github.com/arduino.png?size=48
SLACK_TITLE: Arduino core pre-release
SLACK_MESSAGE: 'Version ${{ env.TAG_VERSION }} of core ${{ env.REPOSITORY_NAME }} is now available'
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
MSG_MINIMAL: true
29 changes: 26 additions & 3 deletions extras/pack.release.bash
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,40 @@
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

# Version check removed because version string passed from jenkins was incorrect
VERSION_FROM_TAG=$1
CORE_NAME=$2
echo $VERSION_FROM_TAG
echo $CORE_NAME
VERSION=`grep version= platform.txt | sed 's/version=//g'`
echo $VERSION

if [ $VERSION != $VERSION_FROM_TAG ]; then
exit 0
fi

PWD=`pwd`
FOLDERNAME=`basename $PWD`
THIS_SCRIPT_NAME=`basename $0`
FILENAME=core-$CORE_NAME-$VERSION.tar.bz2
echo $FILENAME

rm -f samd-$VERSION.tar.bz2
rm -f *.tar.bz2
rm -f *.json

cd ..
tar --transform "s|$FOLDERNAME|$FOLDERNAME-$VERSION|g" --exclude=extras/** --exclude=.git* --exclude=.idea -cjf samd-$VERSION.tar.bz2 $FOLDERNAME
tar --exclude=extras/** --exclude=.git* --exclude=.idea -cjhf $FILENAME $FOLDERNAME
cd -

mv ../samd-$VERSION.tar.bz2 .
mv ../$FILENAME .

CHKSUM=`sha256sum $FILENAME | awk '{ print $1 }'`
SIZE=`wc -c $FILENAME | awk '{ print $1 }'`

cat extras/package_index.json.NewTag.template |
# sed "s/%%BUILD_NUMBER%%/${BUILD_NUMBER}/" |
# sed "s/%%CURR_TIME%%/${CURR_TIME_SED}/" |
sed "s/%%VERSION%%/${VERSION}/" |
sed "s/%%FILENAME%%/${FILENAME}/" |
sed "s/%%CHECKSUM%%/${CHKSUM}/" |
sed "s/%%SIZE%%/${SIZE}/" > package_${CORE_NAME}_${VERSION}_index.json
79 changes: 79 additions & 0 deletions extras/package_index.json.NewTag.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"packages": [
{
"name": "arduino",
"maintainer": "Arduino Betatesting",
"websiteURL": "http://www.arduino.cc/",
"email": "packages@arduino.cc",
"help": {
"online": "http://www.arduino.cc/en/Reference/HomePage"
},
"platforms": [
{
"name": "Arduino SAMD Boards (32-bits ARM Cortex-M0+) - Pre-release",
"architecture": "samd",
"version": "%%VERSION%%",
"category": "Arduino",
"help": {
"online": "http://www.arduino.cc/en/Reference/HomePage"
},
"url": "http://downloads.arduino.cc/cores/staging/%%FILENAME%%",
"archiveFileName": "%%FILENAME%%",
"checksum": "SHA-256:%%CHECKSUM%%",
"size": "%%SIZE%%",
"boards": [
{ "name": "Arduino MKR WiFi 1010" },
{ "name": "Arduino Zero" },
{ "name": "Arduino MKR1000" },
{ "name": "Arduino MKRZERO" },
{ "name": "Arduino MKR FOX 1200" },
{ "name": "Arduino MKR WAN 1300" },
{ "name": "Arduino MKR WAN 1310" },
{ "name": "Arduino MKR GSM 1400" },
{ "name": "Arduino MKR NB 1500" },
{ "name": "Arduino MKR Vidor 4000" },
{ "name": "Arduino Nano 33 IoT" },
{ "name": "Arduino M0 Pro" },
{ "name": "Arduino M0" },
{ "name": "Arduino Tian" },
{ "name": "Adafruit Circuit Playground Express" }
],
"toolsDependencies": [
{
"packager": "arduino",
"name": "arm-none-eabi-gcc",
"version": "7-2017q4"
},
{
"packager": "arduino",
"name": "bossac",
"version": "1.7.0-arduino3"
},
{
"packager": "arduino",
"name": "openocd",
"version": "0.10.0-arduino7"
},
{
"packager": "arduino",
"name": "CMSIS",
"version": "4.5.0"
},
{
"packager": "arduino",
"name": "CMSIS-Atmel",
"version": "1.2.0"
},
{
"packager": "arduino",
"name": "arduinoOTA",
"version": "1.2.1"
}
]
}
],
"tools": [
]
}
]
}

0 comments on commit 96fba00

Please sign in to comment.