Faits :
A.
Par jugement du 11 avril 2014, le Tribunal correctionnel de l'arrondissement de la Broye et du Nord vaudois a constaté que X._ s'était rendu coupable d'émeute (<ref-law>) et de violence ou menace contre les autorités et les fonctionnaires (<ref-law>) et l'a condamné à une peine privative de liberté de 6 mois, cette peine étant complémentaire à celle prononcée le 3 septembre 2009. Il a suspendu l'exécution de la peine et fixé un délai d'épreuve de 5 ans.
B.
Par jugement du 23 octobre 2014, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a rejeté l'appel de X._ et l'appel joint du Ministère public.
En bref, il ressort du jugement cantonal les éléments suivants. Le dimanche 18 janvier 2009 à Yverdon-les-Bains, entre 1h45 et 2h15 environ, des agents de la police municipale se sont trouvés en présence d'un attroupement autour d'une bagarre entre deux jeunes gens. La situation devenant critique, plusieurs patrouilles de la gendarmerie vaudoise ont été dépêchées sur place en renfort. Vers 2h15, une nouvelle bagarre a éclaté et un nouvel attroupement s'est formé. Alors que les intervenants séparaient les bagarreurs, un sergent de police a dû faire usage de son bâton tactique pour repousser l'un d'eux et un spray de défense commando a été employé à plusieurs reprises, ce qui a déclenché l'hostilité des jeunes gens envers les forces de l'ordre. Un important attroupement d'une cinquantaine de jeunes s'est alors formé, auquel s'est joint X._. Dès ce moment, certains émeutiers ont lancé des projectiles, notamment des blocs de glace sur ou en direction des forces de l'ordre et les ont, par leur important mouvement de masse, menacés et contraints à faire ou à ne pas faire plusieurs actes entrant dans leurs fonctions. La situation ne s'est calmée qu'après un long moment. Aucun agent n'a été blessé, si ce n'est légèrement, un policier ayant reçu un morceau de glace au visage. Des dommages à la propriété ont été commis sur une vitrine d'un négoce du quartier et sur des véhicules parqués, dont un véhicule de police.
C.
X._ forme un recours en matière pénale au Tribunal fédéral. Il conclut à sa libération des infractions d'émeute et de violence ou menace contre les autorités et les fonctionnaires et à ce que les frais de première et seconde instance soient laissés à la charge de l'Etat. Il sollicite également l'allocation d'une indemnité à hauteur de 1207 fr. pour le dommage économique subi au titre de sa participation obligatoire à la procédure cantonale. Subsidiairement, il conclut à l'annulation du jugement et au renvoi de la cause à l'autorité inférieure pour nouvelle décision dans le sens des considérants.
X._ requiert en outre l'effet suspensifet sollicite l'assistance judiciaire ainsi que la nomination de son conseil en qualité d'avocat d'office.

Considérant en droit :
1.
Le recourant conteste avoir pris part à l'émeute du 18 janvier 2009. Il se plaint tout d'abord d'une violation de son droit d'être entendu au motif que la cour cantonale aurait passé sous silence l'argument central de sa défense, à savoir qu'une lecture attentive du témoignage de A._ permettait de constater que ce dernier ne l'avait pas identifié comme faisant partie de l'attroupement qui s'était formé aux alentours de 2h15. La cour cantonale aurait également omis de discuter du fait que les quatre autres personnes mises en cause par ce témoignage n'avaient pas été poursuivies.
1.1. La jurisprudence a déduit du droit d'être entendu (art. 29 al. 2 Cst.) l'obligation pour le juge de motiver ses décisions, afin que le justiciable puisse les comprendre et exercer ses droits de recours à bon escient. Le juge doit ainsi mentionner, au moins brièvement, les motifs qui l'ont guidé et sur lesquels il a fondé sa décision, de manière à ce que l'intéressé puisse se rendre compte de la portée de celle-ci et l'attaquer en connaissance de cause. Il n'a toutefois pas l'obligation d'exposer et de discuter tous les faits, moyens de preuve et griefs invoqués par les parties, mais peut au contraire se limiter à l'examen des questions décisives pour l'issue du litige (<ref-ruling> consid. 2.2 p. 183; <ref-ruling> consid. 3.2 p. 270; <ref-ruling> consid. 5.2 p. 236).
1.2. La cour cantonale s'est exprimée sur les motifs pour lesquels elle a estimé que le témoignage de A._ était probant et permettait de retenir que le recourant était présent dans le groupe du quartier de la Vilette qui s'en était pris aux forces de l'ordre. Le recourant a d'ailleurs parfaitement compris cette motivation, puisqu'il la critique ensuite sous l'angle d'une appréciation arbitraire des preuves. Quant au moyen fondé sur le fait que seul le recourant, parmi les cinq personnes identifiées par le témoin, avait été mis en accusation, il est expliqué ci-dessous pourquoi le recourant ne peut rien en déduire en sa faveur (infra consid. 2.2.2), de sorte que la cour cantonale n'a pas violé le droit fédéral en la passant sous silence. Mal fondé, le grief doit être rejeté.
2. Le recourant fait grief à la juridiction d'appel d'avoir procédé à une constatation manifestement inexacte des faits pertinents consécutive à une mauvaise appréciation des preuves et, partant, d'avoir violé le principe de la présomption d'innocence.
2.1. La présomption d'innocence, garantie par les art. 6 par. 2 CEDH, 32 al. 1 Cst. et 10 CPP, ainsi que son corollaire le principe " in dubio pro reo " concernent tant le fardeau de la preuve que l'appréciation des preuves. Lorsque, comme en l'espèce, l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe " in dubio pro reo ", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 7 p. 82). En matière d'appréciation des preuves et d'établissement des faits, il y a arbitraire lorsque l'autorité ne prend pas en compte, sans aucune raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des constatations insoutenables. Les critiques de nature appellatoire sont irrecevables (<ref-ruling> consid. 2.3 p. 266).
2.2. Le recourant soutient, en substance, que la cour cantonale aurait procédé à une appréciation manifestement erronée des preuves en retenant que le témoignage de A._ était probant et qu'il fallait en déduire que le recourant s'était joint à l'attroupement de 2h15 qui s'en était pris aux forces de l'ordre. En outre, sa condamnation antérieure pour opposition aux actes de l'autorité ainsi que ses prétendus liens avec les jeunes du quartier de la Vilette n'auraient pas dû être considérés comme des indices de culpabilité. Par ailleurs, la cour cantonale aurait omis de tenir compte du fait qu'en dépit des 65 auditions menées durant l'enquête et de celles ayant eu lieu lors des débats de première instance, aucun autre prévenu ni témoin, sous réserve de A._, ne l'avait mis en cause. Enfin, sa version des faits selon laquelle il était effectivement présent sur les lieux mais se serait toutefois démarqué des émeutiers aurait dû être jugée crédible.
2.2.1. Le comportement délictueux puni par les <ref-law> et 285 ch. 2 al. 1 CP consiste à participer volontairement à l'attroupement défini par ces dispositions, mais il n'est pas nécessaire que le participant accomplisse lui-même des actes de violence; objectivement, il suffit que l'accusé apparaisse comme une partie intégrante de l'attroupement et non pas comme un spectateur passif qui s'en distancie; subjectivement, l'auteur doit avoir conscience de l'existence d'un attroupement au sens qui vient d'être défini et il doit y rester ou s'y associer; il n'est pas nécessaire qu'il consente aux actes de violence ou les approuve (<ref-ruling> consid. 2b p. 271; <ref-ruling> consid. 3a p. 36; arrêt 6B_863/2013 du 10 juin 2014 consid. 5.4).
2.2.2. A la lecture du procès-verbal d'audition de A._ du 14 février 2009, il appert que ce témoin a identifié le recourant comme étant présent au sein du groupe du quartier de la Vilette qui envoyait de gros morceaux de glace sur la police. Aussi le verdict de culpabilité prononcé par la cour cantonale trouve-t-il bien appui dans le témoignage de A._ (supra consid. 2.2.1). La précision du témoin, selon laquelle " [d]ans le groupe d'émeutiers qui s'en sont pris à la police, je ne peux pas donner de noms précis ", ne contredit pas ce qui précède. En effet, on comprend de la retranscription des propos du témoin que s'il était en mesure de reconnaître, sur la planche photographique qui lui a été présentée, plusieurs des individus formant le groupe d'émeutiers, il ne pouvait toutefois pas préciser lesquels, parmi eux, jetaient des projectiles sur les forces de l'ordre (le témoin indique également: " Je n'ai pas vu qui lançait des blocs de glace "). Cette interprétation est confortée par le fait que lorsqu'on lui pose la question de savoir si un certain B._, qu'il n'a pas identifié mais qui était également représenté sur la planche photographique, a participé à l'émeute et au lancement de pavés de glace, le témoin répond par la négative. En d'autres termes, il ne fait pas de doute que les personnes que A._ a identifiées sont celles qui, selon lui, ont participé à l'émeute, et non de simples spectateurs de la scène. Par ailleurs, le recourant procède par pure affirmation et de manière appellatoire lorsqu'il soutient que les autorités de poursuite pénale ont considéré que le seul témoignage de A._ était insuffisant pour une mise en accusation des quatre autres individus identifiés par ce témoin, les raisons de l'absence de poursuite contre ces personnes pouvant être multiples.
En ce qui concerne la crédibilité du témoignage, il ressort des débats de première instance du 31 mars 2014 que si A._ n'a pas, à cette occasion, désigné une nouvelle fois le recourant comme faisant partie du groupe des émeutiers, il ne s'est pas non plus rétracté. Il a indiqué, au contraire, qu'il n'avait pas de raison de mentir lors de son témoignage de février 2009 mais qu'à ce jour, il ne se souvenait plus des évènements de janvier 2009, ce qui paraît compréhensible au vu du temps écoulé. Même à admettre que le témoin aurait cherché à relativiser la portée de sa première déclaration, notamment en rappelant sa consommation d'alcool le soir en question, cela ne signifie pas encore que la cour cantonale serait tombée dans l'arbitraire en privilégiant son témoignage initial, livré peu de temps après les faits. Comme celle-ci l'a constaté, A._ connaissait le recourant, ce que ce dernier admet, de sorte qu'il y avait d'autant moins de raison de craindre une erreur lorsqu'il l'a identifié sur la planche photographique. Le recourant n'a pas non plus prétendu que A._ aurait délibérément menti. Enfin, comme souligné ci-dessus, A._ n'a jamais déclaré, par la suite, s'être trompé en identifiant le recourant. Il s'ensuit que le recourant ne démontre pas que la cour cantonale aurait apprécié les preuves de manière manifestement erronée en retenant que la mise en cause du recourant par A._ n'était pas dépourvue de toute valeur probante.
2.2.3. Plus généralement, le recourant rediscute l'un après l'autre les différents indices retenus à son encontre, tentant d'imposer sa propre interprétation des preuves et version des faits sur celles retenues par la cour cantonale, sans toutefois établir leur caractère insoutenable. Son argumentation est ainsi appellatoire. On peut, dès lors, se limiter à relever que la circonstance que les autres personnes entendues ne l'aient pas incriminé n'est pas de nature à amoindrir la portée du témoignage de A._. En effet, les autres témoins ou prévenus n'ont simplement pas mentionné le recourant dans leurs déclarations, sous réserve d'un certain C._, qui s'est borné à indiquer que le recourant n'était pas l'un des protagonistes de la bagarre qui avait éclaté avant l'émeute. Par ailleurs, si certains éléments pris en compte par la cour cantonale n'étaient certes pas décisifs en soi, ils pouvaient néanmoins constituer, ensemble, un faisceau d'indices susceptibles de renforcer la conviction de l'autorité précédente. Ainsi en va-t-il de la présence du recourant, admise, sur les lieux au moment des faits incriminés, ainsi que de ses liens avec les jeunes du quartier de la Vilette, l'un des groupes ayant pris part à l'émeute. Sur ce dernier point, il est précisé que A._ a déclaré devant la police et durant les débats de première instance que le recourant faisait partie de ce groupe; en outre, l'intéressé ne conteste pas s'être déjà opposé avec d'autres à des policiers dans le quartier de la Vilette. Enfin, l'appréciation de la cour cantonale, selon laquelle il était peu crédible que le recourant fût resté environ une demi-heure sur place sans avoir pris part à l'attroupement, n'apparaît pas insoutenable.
Au regard de ce qui précède, la cour cantonale n'a pas versé dans l'arbitraire en retenant que le recourant avait pris part à l'attroupement incriminé. Dans la mesure où il est recevable, le grief est infondé.
2.3. Sur le vu de ce qui précède, le recourant n'avance aucun élément permettant d'admettre que la cour cantonale aurait violé le droit fédéral en retenant sa culpabilité pour les infractions reprochées.
3.
Dans la mesure de sa recevabilité, le recours doit être rejeté. Comme ses conclusions étaient vouées à l'échec, l'assistance judiciaire ne peut être accordée (<ref-law>). Le recourant devra donc supporter les frais (<ref-law>), dont le montant sera toutefois fixé en tenant compte de sa situation financière.
4.
Au vu de l'issue du recours, la conclusion du recourant relative à l'indemnisation de ses frais de défense et la requête d'effet suspensif deviennent sans objet.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable
2.
La requête d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 21 janvier 2016
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Juge présidant : Oberholzer
La Greffière : Musy