Commit 2237a746 authored by Martino Facchin's avatar Martino Facchin

Add github action for core release

parent 268fefd7
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: 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: Checkout latest tag of ArduinoCore-API and add it to the core
run: |
cd extras/ArduinoCore-API
git fetch --tags
git checkout $(git describe --tags $(git rev-list --tags --max-count=1))
cd ../..
mv "$GITHUB_WORKSPACE/extras/ArduinoCore-API/api" "$GITHUB_WORKSPACE/cores/arduino"
if: steps.checkapi.outputs.IS_API == 'true'
- name: Remove ArduinoCore-API
run: rm -r "$GITHUB_WORKSPACE/extras/ArduinoCore-API"
- 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 and verify 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}
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
\ No newline at end of file
#!/bin/bash -ex
# pack.*.bash - Bash script to help packaging avr core releases.
# pack.*.bash - Bash script to help packaging samd core releases.
# Copyright (c) 2015 Arduino LLC. All right reserved.
#
# This library is free software; you can redistribute it and/or
......@@ -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 avr-$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 avr-$VERSION.tar.bz2 $FOLDERNAME
tar --exclude=extras/** --exclude=.git* --exclude=.idea -cjhf $FILENAME $FOLDERNAME
cd -
mv ../avr-$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
\ No newline at end of file
{
"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 megaAVR Boards - Pre-release",
"architecture": "megaavr",
"version": "%%VERSION%%",
"category": "Arduino",
"url": "http://downloads.arduino.cc/cores/staging/%%FILENAME%%",
"archiveFileName": "%%FILENAME%%",
"checksum": "SHA-256:%%CHECKSUM%%",
"size": "%%SIZE%%",
"help": {
"online": "https://github.com/arduino/ArduinoCore-megaavr/issues"
},
"boards": [
{
"name": "Arduino Uno WiFi Rev2"
},
{
"name": "Arduino Nano Every"
}
],
"toolsDependencies": [
{
"packager": "arduino",
"name": "avr-gcc",
"version": "7.3.0-atmel3.6.1-arduino5"
},
{
"packager": "arduino",
"name": "avrdude",
"version": "6.3.0-arduino17"
},
{
"packager": "arduino",
"name": "arduinoOTA",
"version": "1.3.0"
}
]
}
],
"tools": []
}
]
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment